< 2014/03/31 >
・初稿公開(第0章~第5章)。
・成果としてはLEDチカチカ→マトリクスLED制御まで。
< 2014/04/13 >
・表示部分完成
・電子時計の心臓移植に失敗
※個人的に「予告」の文言が気に入ったので文中に残すことにしました。
━━━━━━━━
なんと今回、IntelのArduino互換ボード「Galileo」のレビューに参戦する機会を頂きました。
遅れ馳せながら、何卒何卒、よろしくお願い申し上げます。
私は電子工作を趣味の一つとしている(自称)のですが、それほどいろいろやっているわけでもなく、完成品もほとんどありません。
さらに、正直なところ、Arduino互換ボードをいじるというのに、Arduino自体に触れた経験ががありません。
そのため、Galileo魅力を十分にお伝えできるか不安がありますし、レビューが駄筆になる可能性もあります。
私の先入観で書いているところもあると思いますが、そこは私が暴走している or 一人で楽しんでいるとご理解・ご了承頂きたくお願い致します。
本レビューを進めるにあたり、多数の部品・製品・キットを使用しています。
それら一つ一つについての解説は省略します(手が回っていません)が、主要なものについては後日もちもの登録&リンクしますので、そちらを参照して頂けますようお願い致します。
最初に留意して頂きたいこととして、電子工作は自分で好き勝手に作り上げていくことができるものです。
私を含め、世の中には怪しいことをやっている人もいますが、それを真似したり引用したりする場合は、自己責任でお願い致します。
では、「Galileo」という望遠鏡で、マイコンの宇宙を測位して行きましょう!
■■■■■■■■■■□□□
■0.開封の儀
■■■■□□
とりあえず、箱を開けないことには始まりません。開梱!以上!
ごめんなさい、「開封の儀」なんて見出しを切りましたが、私としては、そんなことはどうでもいいんです(すみません)。
もう電源投入したくて、ワクワクが止まりません!
...が、ボードの外観ぐらいは説明いないといけませんね。
同梱品はマイコンボードとアダプタ一式と簡易説明書。
マイコンボードには脚が付いていませんので、そのまま置いてしまうとMin-PCIeのコネクタでガタガタしますので、開発の間はスペーサ等で脚をつけて挙げた方が、ボードにも優しいです。というわけで、私はプラのスペーサを脚にしました。
ちなみに同梱されるアダプタは、コンセントプラグ部分が交換でき、各国のコンセントに適用できる形になっています。私は初めて目にしたので便利だと思いました。
後述しますが、Galileoはマイコンと言いながら、高級OSが搭載されています。
そのため、周辺機器も高級(1からプログラミングするのは至難)なものが多数搭載されています。
今回、私は比較的に低レベルなマイコン(お手軽)として使いますので、高級周辺機器は見なかったことにします。
■■■■■■■■■■□□□
■1.ちょっとだけ難しい話
■■■■□□
ワクワクを抑えきれませんが、こういう分野に詳しくない人のために、少しばかり難しい話(前章からの続き)をします。
かなりザックリと(専門用語控えめに)書きますので、詳しい人は鋭い突っ込みをご遠慮頂ければと思います。
これだけIT分野が日常生活に浸透し、空気のようになってしまった時代ですので、「何をいまさら」と思った方は、この章は読み飛ばして下さい。
「マイコン」というのは、「Micro Computer」とか「Micro Controller」の略語で、大きくひっくるめて「CPU」と呼ぶ人も少なくありません。
「CPU」と言えば、今このページを見ているであろうPCやスマフォ等にも「CPU」が組み込んであります。
広告によく「Intel Core i7 4770K 3.5GHz」とか書いてあるアレですね。
では、PCに搭載されているCPUを「CPU」とした場合、「CPUとマイコンは何が違うか?」と言えば、「命令(プログラム)に従って計算(動作)する」という点では同じです。
ただ、CPUは計算するのに必要な部分だけ(最近は大分構成が変わってきましたが)であるのに対し、マイコンはそれ以外の周辺機能―たとえば、液晶表示のコントローラ、SDアクセスの回路、各種通信の回路等―が1個のICパッケージ(黒い四角、というかその中の1枚のシリコン)の中に納められています。
“たとえば”と書いた機能を見ると、「あれ?スマフォに搭載されている機能が多い?」と思われるかもしれません。
その通りです。スマフォに載っているようなCPUも周辺機能がパッケージされていますので、マイコン(超高性能マイコン)と言う人もいます。私もその一人です。
賢い人たちは「SoC(System on Chip)」と呼びますが、今回、この言葉は使わないことにします。
━━━蛇足━━━
よくCPU等を含む「IC」を「石」と呼ぶ人がいます。
「IC」を素読みして「イシ」という説もありますし、古くはゲルマニウムラジオで原石をそのまま使っていたため「石」と呼ぶ説もあります。
私としては、ICの中にあるシリコン(Si:ケイ素)が石や砂に含まれるため「石」と呼ぶ説を押しています。
ケイ素が含まれガラスの細工も美しいケイ素細工ですが、ICの中のシリコンも美しいケイ素細工ですので、機会があれば観察することをお勧めします。
━━━━━━━━
マイコンでやるようなことを、PCでやることもできます。
それにはCPUだけではできませんので、マザーボード上に乗った周辺機能(CPU以外のIC)を使ったり、さらに拡張ボード等で増設する必要があります。マイコンには、それがすでに組み込まれているというわけです。
無限大にある周辺機能をマイコンに入れることはできませんので、○○向けマイコンという形で、用途に応じた周辺機能だけをパッケージしているものが多いです。
ちなみに、USBで接続するシリアル変換やディスプレイ変換等がありますが、その中にはマイコンが組み込まれている場合もあります(専用ICを使っているものが大半)が、CPUの周辺機能をマイコンが担っていることもあるわけです。
「Galileoはなに向け?」というと、これは汎用マイコンの部類に含まれると思います。
よく使う一般的な機能とCPUだけを一緒にし、「何にでも使えるよ。足りなかったら増設してね。」というスタンスのマイコンボードになります。
「パソコンも、ソフトがなければ、ただの箱」というIT川柳(?)があります。
プログラムがなければ動きようがないのは、マイコンであっても、CPUであっても同じです。
「OS」という言葉は聞いたことがあるでしょう。Windowsとか、MacOSとか、Linuxとか、そういうやつですよね。
「OS」もプログラムです。PCには大抵OSが搭載されていて、その上でワープロなどのアプリケーションが動作しますので、そのせいか「プログラム=アプリケーション」という印象が強いかもしれません。
「OS」は何をするプログラムでしょう?いろいろと言いようがありますが、私はよく「共通化するためのプログラム」と説明します。
マイコンには「OS」があるでしょうか?
それは“Yes”であり、“No”でもあり、その中間もあり得ます。
マイコン自体が「○○向けマイコン」と部類されるように、プログラムも、開発環境・開発規模・使用用途等に応じて、OSを載せたり載せなかったり、どのOSを搭載するか、どのように載せるかも変わってくるのです。
もちろん、マイコンでWindows(WinRT)/MacOS(iOS)/Linux(Android)等の高級OSを使用する場合もあります。
ガラケーやデジカメにもプログラムが載っている雰囲気はありますよね?OSはどうでしょう?
炊飯器は?洗濯機は?画面やLEDがついていればプログラムが載っているものがほとんどでしょう。OSは...う~ん、どうでしょう。
こういうプログラムが載っていると意識しない製品群は、本当にOSが載っていなかったり、マイコン向けOS(ここでは『組み込みOS』と称します)が使われている場合が多いです。
マイコン向けOSで有名なのが「TRON」やその派生でしょう(映画のタイトルではないですよ、映画が後発ですが何か関係あるのかな?)。「ITRON」表記だけはどこかで見かけたことがあるかもしれません。
これを説明すると深くなり過ぎるので割愛しますが、マイコン向けOSは、その製品用のプログラム(カメラであれば、レンズを動かす、液晶を表示する、カードを読み書きする、音を鳴らす、キー操作を認識する、等々)と合体して1個のプログラムになります。
PC用プログラムを作成する時のスタティックライブラリのようなイメージです。
「TRON」開発者の一人(?)坂村さんが「TRONの最大のライバルは(WindowsでもLinuxでもなく)OSなしだ」と言ったくらい、ある意味、内側からも見ても外側からも見ても「忍者」のようなOS(いるのかいないのか分からないけど存在価値は大きい)です。
長々と「OS」の話をしてしまいましたが、実際マイコン(CPU)の上でプログラムが動く方法はいろいろあります。
今話した組み込みOSを使った場合やOSなしのようにその基板専用のプログラム(他では使えない)、PCアプリケーションのようにOSの上で動くプログラム(CPU・OSが変わると動かない)、スクリプト言語のように動作環境があればシステムに関わらず動くプログラム等々。
もう一つ、マイコン開発で耳にするのが「ミドルウェア(M/Wと略す場合もある)」です。
例えば、SDカードの中のファイルを読み書きする時、SDカードの信号を制御して、ディスク内のデータ構造を解析し、ファイルの存在を確認し、ファイルの中身をファイルとして読み書きするという流れになります。
これを1からプログラミングするとなると、マイコンの制御方法を調べて、SDカードの仕組みを調べて、ディスクフォーマットを理解して...ああぁっ!面倒!何日あってもできんわ!となりますよね?
だとしたら、既にあるものを使わせてもらおう!ということで、そういったプログラムを機能ごとにまとめたものがミドルウェアになります。そういう意味ではOSもミドルウェア(集合体)に部類される場合もあります。
ミドルウェアは、ソースで提供されたり、バイナリで提供されたり、有償だったり、無償だったりと、いろいろな形態があります。
ちょっと長くなってしまいましたね。でも、実際に動かすのはもう少し先にします。
■■■■■■■■■■□□□
■2.どんなもの?
■■■■□□
前章では、全般的な話をしましたが、ここでは「Galileo」について触れてみましょう。
肝心なところを説明していませんでした。
「マイコンもCPUも基本部分は同じ」と言いましたが、この基本部分も種類があります。
PCでよく使われているのがx86やその互換、スマフォで使われているのはARMが多いです。
小規模なマイコンまで含めるとその数は無数にあります。
さらにそれらは8bit/16bit/32bit/64bit/128bitと別れる場合があります。
Galileoで採用されているのはx86ですが、マイコンでx86が使われているもの(シェア)は多くはなく、その点でGalileoは珍しく、興味深いマイコンボードだと思います。
Galileoに搭載されるマイコン『Intel Quak X1000』はややCPU寄りで、周辺機器が手薄な印象があります。具体的な例としては、A/D変換器が搭載されておらず、Galileoマイコンボード上に外部A/D変換器を増設して、A/D入力のサポートしています。
マイコンとプログラムの関係を前章で説明しましたが、「Galileo」はどういう構成なのでしょう?
互換であるArduinoは「組み込みOS的なマイコン構成」です(嘘かも)ので、Galileoもそんな感じ?と思いきや実はそうではなく、汎用OSがArduino機能を模しているのです。
Galileoで使用されている汎用OSは、Linuxです。
シリアルポートを覗くとLinuxのログが見え、ログインして各種操作ができますし、プログラムから一部Linuxの機能にアクセスできます。
SDを使えば、さらに別のOSも起動できるそうですが、最初に言った通り、私はお手軽に使うので、今はこの点には触れません。
Linuxと聞くと一気に難しい雰囲気になってしまいますが、前述の通り、Arduinoっぽい動きをしてくれるため、Linuxを意識することなくマイコンプログラミングを味わうことができます。
━━━備考━━━
ここで気になった点として、最近のPCにはシリアルポート(D-sub9ピン)が未搭載の機種も多数ありますので、232Cレベルではなく、USBシリアルコンバータで出力しても良いように思えます。
ただ、お手軽に使う範囲であれば使用しない部分ですし、USBシリアルコンバータを使うとドライバがどうのという問題も発生しかねず、コストもあがるので、玄人向けレガシーデバイスとしての採用は正解かもしれません。
とはいえ、プログラム転送のポートはUSBシリアルコンバータ(LinuxのOTGでしょうか?)という...混在を避ける意味でも正解なのかな?
━━━━━━━━
Arduino自体は、マイコン開発で最も使われる(?)C言語のような文法で、しかもハード制御部分を簡略化した、『Sketch』と呼ばれるプログラミング環境を使用します。
Galileoもそれを模しているので、簡単なことなら簡単にプログラミングすることができてしまうのです!
敷居がかなり低くなるので、私のような素人(?)でも楽しめるので、本当にありがたいです。
「Sketch」は内部的にはC/C++言語に変換され、それを元にコンピュータの言語に変換して実行します(これを「ネイティブな実行」と言います)。そのため、スクリプトで実行するより、はるかに動作は高速です。詳しくは詳しい人に聞いて下さい(汗)
というわけで、素人の私は、比較的レベルの低い内容を通して、マイコンとハード制御の楽しさをお伝えできればと考えています。
ハイレベルなところは、他の玄人レビューアさんにおまかせします!よろしくおねがいします!
難しい話はここまでにして(墓穴を掘りたくないだけ)、動かしていきましょう!
マイコンは、一般的なディスプレイ・プリンタに何かを出力するのではなく、何かを動かすという目的が明確なため、それが目に見えて動いた時の達成感は、PCのプログラムを描くのと大きく違うと思っています。
━━━余談━━━
私は「プログラムは芸術だ」と思っています。
ですので「書く」ではなく「描く」という表記をすることがあります。
もちろん正確にコードを入力しないといけない(でないと「バグ」が生まれてしまいます)ので、油絵やフィギュアスケートのような曖昧さはありませんが、私としては「美しいプログラム」が描けるように頑張っています。
そういう意味で、Arduino/Galileoのプログラミングシステム「Sketch」いうネーミングは、洒落ていて好きです。
━━━━━━━━
■■■■■■■■■■□□□
■3.ハロー、ガリレオ!
■■■■□□
よくプログラムを学び始めた時に、一番最初にやるのが「Hello, World!」です。
━━━蛇足━━━
ネットワークが開発される一番最初のテストで、届いた文字は「L」の一文字、「Login:」の最初の一文字だけだったそうです。
「Hello, World!」でなくて良かったと思います。でなかったら、相手に届いた文字は「H」だったわけですから...。
━━━━━━━━
マイコンでは、「Hello, World!」を表示するのは結構先のレベルです。「そもそもどこに出す?」になってしまいます。
そこで、マイコンでの「Hello, World!」相当と言われるのがLEDチカチカ(LEDチカとか、Lチカとか...Lチキではない)、LEDの点滅制御です。
おっと、開発環境の説明が抜けてました。
開発環境は「インテルGalileo開発ボード」のページからソフトウェアのページに飛び、「Intel_Galileo_Arduino_SW_1.5.3_on_Windows_v0.7.5.zip」(PCのOSが異なる場合は各対応ファイル)をダウンロードしてインストールします。
私はWindows環境ですが、インストールと言っても、ダウンロードしたファイルを解凍するだけです。中に長いパスが含まれますので、解凍の時や回答先には注意が必要です。
このツールにはドライバも含まれますので、Galileo接続前にインストールしておくことをお勧めします。
開発環境として、「Windows8+Core i3 1.9GHz+8GB+内蔵GPU」マシンと「Windows7+Core i7 3.5GHz+8GB+550Ti」マシンを使用していますが、もっと低スペックな旧々世代マシンでも大丈夫だと思います(ただし、Windowsのバージョンには注意)。
最近のPCアプリケーション開発環境と違い、マイコン開発環境は軽く、その中でもGalileo/Arduino開発環境はさらに軽い方に部類されると思います。
インストールが完了したら、Galileoに電源を接続し、USBのLEDが点灯したことを確認した後、Micro-USBのケーブルでPCに接続します(★この順番が重要)。
開発途中で電源切入・ケーブル挿抜を頻繁に行うことを考えると、USB延長でケーブル途中で切断できるようにしておいた方が、PC/GalileoのUSBコネクタがヘタるのを避けられると思います。私はそうしてます。
接続するとドライバを要求してきます(もしくはデバイスマネージャから更新する)ので、先に解凍したフォルダ内の「hardware\arduino\x86\tools」を指定すると、「Galileo(COMn)」としてボードを認識し、接続が完了します。念のために、デバイスマネージャで認識ポートを確認しておきましょう。
接続ができたら、「arduino.exe」(ショートカットを作った方が便利)を起動してプログラムを描きます。
あとは、メニューから[スケッチ]-[検証・コンパイル]でボードに転送するファイルを生成し、[ファイル]-[マイコンボードに書き込む]で転送します。主要な機能はツールバーにありますので、分かり易いですね!
それぞれショートカットキー(Ctrl+R、Ctrl+U)ですので、キーボードで操作した方が、プログラミング→コンパイル→転送→確認→修正→コンパイル→転送→...がスムーズにできます。
ただし、単純にこの方法で転送するとSketch(プログラム)は消えてしまいます。消えずにずっと使いたい場合は、SDカードを使うことになりますが、そこは他のレビューを見て下さい(他力本願)。
というわけで、LEDチカチカでしたね。
Sketchでチョコチョコっとできてしまうので、簡単に試せます!
というか、サンプルにそれっぽいのがある(メニュー[ファイル]-[スケッチの例]-[01.Basics]-[Blink])ので、ここも他力本願で突破します。
私がよく触るRenesas社製マイコン(SH、H8、RX等)。開発指向(スタイル)が異なるという前提はありますが、これも基本ソースの生成はウィザード形式で大分簡略化されました。しかし、Sketchと比べたら、ソースの量は多く、複雑なため、初心者には敷居が高いかもしれません。
プログラム(の準備)ができたら、先の手順で転送!
転送が完了すると勝手に実行されます。
LEDチカチカしてます!折角なので4個に変更してみました。
他のマイコンでは起動コード等の複雑な設定をする必要があるのを考えると、こんな簡単なコードでLEDチカチカが実現できてしまうんですから、ビックリと言うか...試作にもってこいだと感じ、夢が膨らみます。
~~~~~~~~~~~~~~~~~~~
「Hello, Galileo!」です!
点灯している様子がコレ!
えっ、動画が変わった!?(笑)
う~ん、どうして、こうなったのかなぁ...冒頭に書いた通り、一人で楽しんでしまったんですね。
細かいところは割愛しますが、コードはこんな感じです(フォントはとりあえず埋め込み:汗)。
回路(概要)はこんな感じです。半田付け面は汚い(不器用)ので、お見せできません。
GalileoのI/O端子が多くないので、I/Oエキスパンダ(I/O増設)のICを使って、マトリクスLEDをダイナミック点灯しています。
マトリクスLEDをアノードコモンの形で使用し、カソード側に制限抵抗を入れて、引き込みタイプのトランジスタアレイで点灯制御しています。
処理的に間に合うか心配でしたが、ちらつきはあるものの、視認はできるレベルです。
※トランジスタアレイは、デジトラと呼ばれるものですね、(たぶん?)。
━━━補足━━━
「ダイナミック点灯」という言葉が出てきましたが、これは何か?
LED1個ずつを制御しようとすると、LEDの数分の信号が必要になり、配線も信号も膨大になってしまいます。
そこで、LEDをグループ(ここでは列)に分け、1列目の必要な部分を点灯し、1列目を消灯した後、次に2列目、次に3列目と順番に点灯していきます。
これを高速に行うことで、残像効果で1つの画に見えるわけです。
昔、ビデオカメラでテレビを撮影した時に走査線が動くのが分かりましたよね?(あれはカメラとテレビの関係もありますが)次章に出てくる動画は、それに似ていると思いませんか?
━━━━━━━━
実は、この段階で、障害にぶつかりました。
それについては、重要なポイントになりますので、次章で少しだけ触れていきます。
■■■■■■■■■■□□□
■4.さて何をしよう?
■■■■□□
前章のダイナミック点灯は「とりあえず点灯しました!」という過程がありました。
実際に動画を見て頂いた方が分かり易いと思いますが、ダイナミック点灯していることを説明しているような点灯になっています。
これでは実用的ではありません。
そこで、調べてみると、Galileoのポート(GPIO)はI2C接続のI/Oエキスパンダを使用し、増設した形の実装になっているではありませんか!
突然難しい話になりましたが、要はシリアル接続になっていて、1回の出力で複数のポートを設定することができず、101010...という感じで指示してやる必要があるのです。
CPU自体のポート数が少ない場合に、ポート数を増やす方法としてよくある手です。
━━━補足━━━
HDDの接続方法に「IDE(パラレル接続)」と「SATA(シリアル接続)」がありますが、今やシリアル接続の「SATA」の方が早いという認識になっています。
しかし、それは工夫・理由があってそうなったわけで、マイコンでは色々な制約があるというか、単純なポート制御に関してはシリアルの方が遅いのです。
それはそうですよね。シリアルデータを作るために、ポートを何回も変化させるのですから、N分の1の性能になってしまいます。
ちなみに、SDカードは、シリアルとパラレルの中間、複数のシリアルを同時に動かしているような接続だったと思います。
━━━━━━━━
[CPU]→[マイコンボード上のI/Oエキスパンダ]→[追加したI/Oエキスパンダ]で制御しようとしているので、CPU本来のポート制御速度からかけ離れてしまいます。
詳細な技術情報としては...。
Galileoの仕様を見ると、CPU側のI2Cは400[kHz]の高速モードをサポートしていますが、I/OエキスパンダのICが100[kHz]までしかサポートしていないため、Galileoマイコンボードとしては100[kHz]としているようです。
I2Cというプロトコルで通信するため、出力するためのデータ以外にもやり取りが発生するため、実際にポートに反映するためにかかる時間は約2[ms](230[Hz]程度)だそうです。
最初に試したLEDチカチカを、最高速(delay待ち時間なし)で動かした時の波形を見ると、確かに225[Hz]程度です。
行・列を指定するICに12[bit]を使用しているので、1行を出力するのに必要なポート操作は、
「(行データ12[bit]+列選択12[bit])×(データ1[変化]+クロック2[変化])+点灯信号2[本]×上下2[変化]=ポート76[回出力]」
となります(今回、クリア信号は未使用)。
そのため、1秒間あたり「230[Hz]÷76[回出力]=3.026[列]」となり、8×8のマトリクスLEDを制御するだけでも、1面更新するのに2秒以上かかってしまう(3.026[列]÷8[列]=フレームレート0.387[fps]=更新時間2.6[s])ことになります。
低スペックディスプレイ60[Hz]の約1/155、ワンセグ15[fps]の約1/38ですから、スローモーションというか、心電図というか、そういう雰囲気になって当たり前です。
※仕様と計算と画像が一致していない気がしますが気にしない...。
では、どうするか?
はい、困りました...すでに試作基板はこの路線で行くと決めているのです!
心電図表示で我慢するか...いやいや、プロ意識(微量)に火が付くというものです!
努力した結果が前章の動画です!プロの勝利です!(それほどのことじゃない)
どうやったか知りたいですか?そうでもない?(泣)
私は褒められて成長するタイプの人間ですから褒めて下さいよぉ...。
ということで、ほんとに大したことではないので、明かさないでおくことにしましょうか。
Galileo基板自体の改造はしていないことと、合成動画でないことだけは、お伝えしておきます(笑)
折角なので、LEDチカチカで周期を計測してみましたので、どうぞ!
...オシロキットのスペックが足りず、波形が採れなかったことは内緒(汗)
と自己満足に浸っていたら...コミュニティで、はにゃさん・つきさんが情報展開されてました(OUTPUT_FASTがキーワード)。
最初からコミュニティに参加していれば、悩まずに済んだのかもしれません。
勉強になりました、ありがとうございました!
(タラタラターッラッター♪、蒼はレベルアップした!)
━━━重要━━━
...実は、この話は、まだ続きがあります。
手法(情報)を見つけ、実際に試したことろ、動かない...あれやこれや試しても動かない。
悩んだ挙句「ベースとなるファームが古いのでは?」という結論に至り、それなら、新しいファームで試せば?と考えたわけです。
素直にコンソールからLinuxの設定を覗けば良かったのですが、それを怠ってしまいました(プロ意識放棄)。
私は、オリジナルは残したい性質なので、SDブートで新しいファームを試すことに...が、SDブートすらできない。
仕方なく基板内蔵のファームを更新しました(開発環境のメニューから更新できます)。
するとどうでしょう!
何事もなく、SDブートできて、上記の手法も動いてしまいました。
久しぶりにアップデートの重要性を痛感しました。
━━━━━━━━
というわけで、上記手法には基板のファームウェアのアップデートが必要です。
各所のGalileoレビューで、必ずと言って良いほど「ファームウェアのアップデート」が記載されていたのは、このためかもしれません。
少しのつもりが、かなり長くなってしまいました。
~~~~~~~~~~~~~~~~~~~
さて本題。
電子工作をする場合、「やりたいこと」があって、マイコンやその他パーツを選定する流れになります。
しかし、今回はマイコンボード「Galileo」を真ん中に据えて、「何をやるか?」というアプローチになります。
もっとも、私は雑誌付録マイコンを買い漁るクセがあるので今回のようなアプローチは多々にありますし、ZIGSOWのレビューではよくある流れですね。
話しを戻して「何をしよう?」ですが...悩みますねぇ!
時間はないし、難しいことができるほどのスキルは持ち合わせてないし...でも、マイコンの楽しさは伝えたい、というか面白いモノを作りたい!
面白いというか、バカバカしいと言うか、クスッとくるものを作りたい!
実用的な面も必要か?Galileoじゃないとできないこと...う~ん、やはり難しい!
そうだ!あれにしよう!
「Galileoじゃないとできないこと」は他の人に任せて、お手軽な点だけを使わせてもらおう!
何にしたかは、章を追って、明らかにしていきますので、期待しないで楽しみにして下さい。
実は、上のLED点灯はその序章なのです。
■■■■■■■■■■□□□
■5.みんなでチカチカ!
■■■■□□
まずはこれ!巨大化しました!
さぁ、384個のLEDよ!チカチカしようじゃないか!
とりあえず、前回の「Hello, Galileo!」を3段重ねで表示してみました。
タイミングのせいか動画だと見づらいですが、実物はもう少し見やすいです。
「Hello, Galileo!」は横を1グループにしていますが、巨大化した後は縦を1グループにしているため、変な方向にスクロールしています...もっとも最初のは8×8なので方向が分かりづらいわけですが。
教え子が3人に増えて喜んでいるのか、「何回も呼ぶな!」と怒りを覚えているか分かりませんが、私としては無事に点灯できて大喜びのヒトシオです!
回路は、前述の回路を増築(8×8→16×24)しただけです。
━━失敗1━━━
ここで失敗談を一つ。
最初の「HALLO,GALILEO!」の動画を見てもらうと、分かる人には分かると思います。
例えば「H」の文字、縦棒は暗いのに、横棒は明るいですよね?
先に説明した通り、LEDのカソード側はトランジスタアレイ(引き込み)で落としているので余力を持たせていたのですが、ソース(アノード側)はI/Oエキスパンダの出力をそのまま使ってしまったのです。
そのため、I/Oエキスパンダの最大出力電流(25[mA])を、点灯している数で割り算することになります。
結果、点灯数の多い縦棒(7/8点灯)は暗く、点灯数の少ない横棒(1/8点灯)は明るくなってしまったのです。
手元にあるICだけで組んでしまったので、間抜けなことをしてしまいました...私はハード屋さんではないので、ご容赦下さい。
というわけで、巨大化した回路はIC(ソース用トランジスタアレイ)を調達してソース側にも余力を持たせました。
━━━━━━━━
これだけなら、まだ基板1枚+保護板2枚なので、ミドルレンジのノートPC程度(?)の厚みですが、最終的にはGalileoとシールド(Arduino互換コネクタで使用する拡張ボード)相当の2枚を子亀・孫亀にする予定なので、ハイスペックのノートPCも真っ青な厚みになることでしょう!
正直、配線は大変でした。不器用であることに加え、ユニバーサル基板ギリギリのサイズに、マトリクスLEDだけで(8+8)×6=96箇所をそれぞれ2本ずつ、さらにICを10個、コネクタ、電源周りを配線しないといけません。
━━失敗2━━━
さらに失敗談をもう一つ。
試作機は、ユニバーサル基板上にLED、IC、配線等々を配置したわけですが、手持ちの最大ユニバーサルでもキチキチ、部品間はスルーホール1~2個しか空いてない箇所が多々にあり、制限抵抗は立てて配置したり、基板2枚重ねににして端のスルーホールを稼いだりしています。
最初に配置(見栄えも考慮)を考えるのにかなり時間を要しましたし、私の苦手なガラエポ両面基板であるのに加え、配置ミスにより何度か貼り直したところもあります。
四苦八苦しつつ、なんとか配線を終え、いざICを載せようとした時のこと...。
ICが載らない!?...ICソケットのピンサイズはあっているのに、3個並びのトランジスタアレイが入らない!?
ICを載せる部分にはICソケットを使用し、配置もICソケットサイズで決めたのです。
採用したトランジスタアレイ(18ピン)が、18ピンのICソケットより大きく、ソケットからはみ出していたのでした。
ここまでやってやり直す気力も、部品もありません。
そこで、実装屋さんに相談したところ「2階建てはどうか?」というアドバイスを頂きました。
中央に半田付けしたICソケット(挟み込みタイプ)に、さらにICソケット(丸ピンタイプ)を重ね、その上にICを搭載するのです。
これが功を奏して、重ねるICソケットを加工することで上手く搭載できました。
建築高も気になりましたが、保護カバーを支えるスペーサとほぼ同じ高さ!問題なしです!
さすがは実装屋さん、年の功(?)ですね!ありがとうございます!
━━━━━━━━
配線してからマトリクスLED不良なんてことがないように、ブレッドボードで点灯テストをした図がこれ!
これだけでも何度配線し直したことか...採用したマトリクスLEDの端子が規則正しく並んでいないため、困難に困難を極めました。
私が良く部品購入する秋月電子で最近扱っているマトリクスLEDは、ピンが規則正しく並んでいるものもあったように思えますので、それを使えば、もう少し楽になるかもしれません。
ちなみに、電源用のDCジャックをブレッドボードに接続するための基盤も自作。ピン幅複数対応にしたは良いのですが、ショート注意です(汗)
━━失敗3━━━
さらにさらに失敗談を。
IC関連の配線を終わり、LEDを2、3個ペペッと仮付けして、お試し火入れをしてみました。
まずは点灯。期待する位置が点灯し、制限抵抗を落としていたので前回より明るくなってる。問題なさそう。
続いて消灯。I/Oエキスパンダのシフトレジスタを全OFFに、っと...あれっ!?ぼんやり点いてる?
配線を覗き込んでも問題なさそう...(基板をサワサワ)ジュッ!アチッ!...(クンクン)くさッ!?
慌てて、電源を切り(本体は切れないから基板のケーブルを外す)、配線を再度チェック。
発熱していたのは、I/Oエキスパンダとして採用した「NJU3714」。
配線を何度見直しても問題なさそうなので途方に暮れたまま、翌日、プロの方に相談しました。
基板は恥ずかしくて見せられないので、口頭で説明したところ、「ダメだよ、CMOS系のICの端子浮かせちゃ!」とズバッと回答。
先に説明した通り、CLR信号は未使用だった(使う必要がなかった)ため、浮かしていた(未接続)のが原因だったようです。
回答をもらった日、自宅に戻り、CLR信号をプルアップ(1k[Ω])したところ、発熱もなく、きちんと消灯するようになりました。
めでたしめでたし...ですが、1k[Ω]はアバウトです、素人の私には幾つにしたら良いかわかりませんでした。Galileoの回路図を見て、後々Galileoに接続することを考慮して、信号に載っている33.2[Ω]より大きな値ということで1k[Ω]にしました。良いのかな?。
━━━━━━━━
立て続けに失敗談を連ねましたが、実は、もう一つあります。
マトリクスの配線、というかシフトレジスタの配線を間違ってしまい、順番がズレてしまっていたのです。
具体的にはDAT/SOのラインつまりシフトレジスタのチェーンの順序と、各シフトレジスタとトランジスタアレイの接続のうちP1~P4がひっくり返っていたのです。
40本×2ラインを配線しないといけないので間違いも起こります(言い訳)。
後者は分かっていたのに配線をミスったというポカミスで仕方ありませんが、前者はプログラムによる信号送出順序とICの反映順序を理解し切れていなかった自分の甘さが原因です。
これに気が付いたのがICの半田付けとLEDのA側の半田付けが終わってから...引き返す勇気はありませんでしたが、2/3だけ引き返すことにしました。
前者はA側/K側それぞれ2個あるシフトレジスタのDAT/SOを逆にしました。4本の配線し直しでしたが、配線がそれほど密集していないところでしたので、大したことはありません。これでバイト順序は正しい並びになりました。
後者は問題の4本をひっくり返すのは大変なので、トランジスタアレイからLEDに接続する信号をひっくり返しました。8本の配線し直しでしたが、半分くらいは片方だけ外して別のところに半田付けで済んだのは助かりました。
回路は修正せずにプログラムで解決することもできますが、ソースが汚くなる(美に反する)ので勇気をもって引き返したのでした。
━━━怠惰━━━
発熱問題の指摘に併せて「パスコンも、ちゃんと入れなきゃダメだよ」とも指摘されました。
パスコンとは、「バイパスコンデンサ」とか「デカップリングコンデンサ」と呼ばれるもので、電源の不安定さを緩和して、ICの暴走を防ぐために入れるコンデンサになります。
「コンデンサって何のためにあるの?」と言う人がいます。私も昔はそうでした(今なお半分も理解できていませんが)。
「コンデンサって何?」と言う人は...極めて小さい充電池だと考えて下さい。
難しい話になりますが電気の説明すると、回路には電源があり、常に電流が流れているわけです。
常に同じ状態になっているように思われますが、何か作用するところ(例えば、LEDが光った=電気が光として消費された)で電気が消費されると、そこが低気圧のようになって高低差が生まれます。
電源は一定の電圧を保とうとするので、すぐに満たされて元に戻るのですが、この元に戻るまでの間は本来の状態と異なる状態=期待している状態と異なる状態になっているため、ICが正しく動作しなくなる可能性が出てくるのです。
そのための中間貯水池の役割としてコンデンサ(パスコン、電源安定化コンデンサ)が必要になるわけです。
コンデンサは電気をためておくパーツですので、これにより一瞬電圧が下がった時に放流し、できる限り元の電圧に近い状態を維持するのです。
「コンデンサって何者?」という問いに対する回答の一つがコレになります(他にもフィルタ等の使い方もあります)。
注意が必要なのが、放流した時に当然コンデンサ内の電気も減るわけで、それに電源が元に戻そうとする電気も加わり、上がり下がりのウネウネな状態(理解できていない私の頭がウネウネ)になり、発振したり昇圧したりするので、電源回路は難しいのです。
というわけで、パスコンを...すみません、入れてません。
幾つ入れたら良いのでしょう?誰か教えて下さい!103?104?えっ、電解コンで電源パスの強化も?(パニック)
というか、入れるスペースを考えてなかったので、空中パスになってしまいます。
せめて、電源安定化のコンデンサは入れるべきなのですが...LEDを一斉にドンと点灯した時が不安です。
さらに、シンクドライバのコモンも未接続という...ダメダメっぷり。
━━━━━━━━
カソード側を24にしましたが、ここまで来ると全部のLEDを更新するのに16回の点灯切替が必要です。
さすがにちらつきは気になりますが、まだ視認できます。良かった!
プログラムはこれ!前とそれほど変わっていませんね。
これだけのことが、たったこれだけのコードでできてしまうんですから、やはりお手軽!
でも、点灯制御だけでちらつきがあるということは、他のことをやったら、視認は難しくなるかもしれません。
とりあえず、その問題は棚上げにして、表示部分はこんな感じで良いでしょう!
やはり、ヒカリ物は目に見えて、ワクワクするので良いですね!(笑)
■■■■■■■■■■□□□
■6.実用的なところを!
■■■■□□
取り出だしたるコレ、なんでしょう?
━━━予告━━━
巨大な表示武装を手にした我らがGalileo先生。
その目の前に現れた謎の時計!対峙する二人!
素人手による武装に不満を抱いていたGalileo先生は、仕上がり美しい既製品に嫉妬を露わにする!
次回「Galileo先生、強奪する!」をご期待ください!
※冗談ですので、期待は1/100程度にして下さい。
━━━━━━━━
電波時計?アタリだけどハズレ!正解は「電波を受信しない電波時計→元電波時計」!
はぁ!?ですよね(笑)受信はどこ行った?
はい、これです(笑)
実は、この電波時計は、表示部・時計部・電波受信部・アンテナが個別のモジュールになっているのです。
以前から電波時計をマイコンに搭載したいという企みはありました。
しかし、アンテナを準備して、受信回路を作成し...となると、それなりのお金と知識が必要ということで、ずっと企みのままでした。
そこにきて、この時計の存在を知りました。この時計からもぎ取れば、受信部はほぼ完成!(他力本願)
金額も1500円程度と、パーツを買い揃えたり、電波時計キットを買うより、はるかに安上がりです。同じモジュールを搭載したもので、もっと安い物もありそうです。
ここでやっていることは、ハックな位置付けですので詳細は省きます。
ネット上を検索すると情報がヒットしますので、そちらを参照して頂きたいと思いますが、マネする人はあくまで自己責任の範囲でお願いします(これに限った話ではないですが)。
一応、信号が分からないことには何もできませんので、元の状態で波形を採ってみます。
3年前の3.11東日本大震災の際に一時停止していた福島の送信所も今は運用されていますので、上記のように受信できています。
我が家や会社は建物の構造が悪いのか、やや受信に難がありましたが、波形を見る限り、綺麗に採れているように見受けられます。
では、実際にGalileoでJJY信号(電波時計用の電波)を受信してみましょう!
JJY信号は、1秒に1回パルスが出力され、そのパルス幅によって0/1を判断し、1分間かけて日時情報を受信します。
この受信モジュールの電源・電圧の仕様が分かりませんので、ほぼ実機の電圧で動作させます...と思いましたが、面倒なので3.3Vを突っ込んでしまいましょう(オイっ)。信号は簡易的な電圧レベル変換で吸収します。
JJY信号の詳細に興味がある方はこちらを参照して下さい。
とりあえず、即興でプログラムを書きます(珍しく無駄に自力突破)。即興なので間違っているかも...。
本当は、もっと複雑にチェックする必要があるのですが(たぶん)、今回はマーカだけをチェックします。
なぜマーカだけのチェックにしたかと言えば、15分と45分の時に受信する呼出しコードを含む信号(詳細は先のリンクを参照して下さい)の処理が面倒だからです(やっぱりイイ加減)。なので、曜日や閏秒や取りこぼし対応もイイ加減です(汗
...と、ここまでで、何かしらの信号が取得できて、あわよくば時刻取得まで一気に!
ところが、全く以って、信号が反応しません。3.3Vを突っ込んでしまったことで壊してしまったのかとも思いましたが、元の電波時計に接続すると受信するので、壊れているわけではなさそう。
しかし、Galileoに接続して、オシロで波形を見ると云とも寸とも言いません。
予定していた時間の半分以上を、この電波時計受信モジュールとの戯れに取られてしまったので、頭を冷やす意で一旦この件は棚上げにすることにします。ごめんなさい。
━━━課題━━━
電波時計の組み込みは、今回のテーマの目玉のひとつでしたので、是非とも載せたい機能です。
今回のレビューに限らず、今後の私の電子工作の布石にもなると考えていただけに、このまま動かず終いにするのは残念でなりません。
そこで、本レビューの工程が全て終了した後の課題とさせて頂きます。
━━━━━━━━
本当は、こんな感じで、電場受信も正常に動いているところをお見せしたかったのですが...不本意ながら、表示デモンストレーションです(泣)
スペル間違いがあるのは見なかったことにして下さい。
あっ!ヒカリ物が増えた!...って実験基板に載せていたのて気付かれてたかな?実験基板の7SEGは配線不可と判断し、乗っかっていただけでした(汗
赤色ばかりではつまらないので、フルカラーLEDも載せてみました。このフルカラーLEDは面実装部品なので、結構ミラクルな取り付けをしています、心臓に悪いのでお見せできません(汗
汎用OSを使用しているため、ANSI規格の<time.h>を使って、簡単にRTCにアクセスできるのも便利です。
また、時計設定についてもsystem関数(Linuxのコマンド実行関数)を使用することで簡単に設定できます...が、肝心の時刻源が上記の通り動いていないので、それが動いた時に解説させて頂きます。
なお、大きいフォント(日本語メッセージ:16×16)は、随分前に何処かのページで、「FONTX」形式に変換した「IPAフォント」を配布していたものをダウンロードしていたので、それを使わせて頂きました。提供元リンクは控えておりません(汗)
小さいのフォント(時刻表示)は、Arduno/Galileo開発環境の中にあるglcdfont.cにあるものを変換・一部変更して使わせて頂きました。半角カナが使えないのは、あとあと修正した方が良さそうです。
━━━悩み━━━
入手した2Byteフォントは、Windows等で使われてる(使われてた?)Shift-JISの文字コードが基準となっておりました。
Arduino/GalileoはUTF-8です。変更しようとすると怒られます。ですので、単純に移植はできませんでした。
正直苦肉の策を使いました。後日、ソースを公開いたしますので、笑って下さい!
━━━━━━━━
今回のソースは、メインソースのみを掲載いたしましたが、複数のソースからできています。
上の画像の左上にタブがあることに気が付かれたでしょうか?Sketchも複数のソースから、1個のプログラムを作成できるので、巨大な一個のファイルになって「やりづらい」とはならないわけです。
ただし、Galileoは、Sketchからの返還後のサイズが約256kBです。それを超えると実行できません。
16dotフォントを入れたところ、見事にパンクしてしまい、後半のフォント10%程度を削除して、無理やり収めました。
━━━補足━━━
ここで再びダイナミック点灯の時の問題にぶつかりました。
マトリクスLEDだけの16行だとチラつきはあるものの辛うじて我慢できる範囲でした。
しかし、7SEG(日付を表示している部分)とフルカラーLED(秒を刻んているところ)を追加した結果、24行相当になり我慢できないレベルになってしまいました。
折角ヒカリ物を追加したのに...困った!プロ魂、再びメラッと!
で、あれやこれや苦悩して上の動画にたどり着きました。
プロの勝利です!褒めて!(しつこい)
「いいから方法を教えろ!」と!?...今回こそは内緒にします。
気になる方はお問い合わせ下さい(えっ、いない?)。コメントに回答を記載させて頂きます。
というわけで、この段階で表示機は完成です!
━━━━━━━━
折角、時計情報が取得できたとしても、起動時に毎回時計合わせ待ちするのは面倒ですし、電波が受信できない場所だってあるでしょう。
というわけで、内蔵RTC(時計)を使用するわけです。前述の通り、裏にいるLinuxが管理している部分に処理を委託するので、色々設定する必要なく簡単に一般的なC言語でアクセスできてしまいます。
しかし、Galileo標準の状態では、RTCのバックアップができません。アダプタを抜いてしまうと、アッと言う間に、今日がいつなのかを忘れてしまいます。
そんために、基板上「COIN」と書かれた端子にバックアップ用電源を接続することで、時計を覚えていてくれるはずです。
とりあえず、ここでは時刻が受信できて、時計設定ができたところまで(やりたかった!)で完了としましょう。
■■■■■■■■■■□□□
■7.試作機完成へ向けて!
■■■■□□
ここまでの内容で、ド派手な電波時計を作ることができます。
ここまでできただけでも十分に楽しい(私の価値観)ですので、これで完結に向かっても良いのですが、それでは自己満足で終わってしまいます...最終目標はもっと自己満足なわけですが。
そこで、コレ!電流センサです!今回調達した部品の中で最も高価な部品(\1,890-×2個)です。
そろそろ「何をしよう?」の除幕式をやりましょう!
━━━予告━━━
時の使者への進化の一途と思われた我らがGalileo先生。
悪の組織により、今、謎の触手がGalileo先生に組み込まれようとしている!
迷走するGalileo先生の人生!行きつく先はどこか?
次回「Galileo先生、物理に悩む!」をご期待ください!
※予想されている通りですので、期待は1/1024程度にして下さい。
━━━━━━━━
■■■■■■■■■■□□□
■9.まとめ!
■■■■□□
まだ、途中ですが。
総括して...楽しかった!(現在進行形)
以上!
これでは、まとめになってないですね。
「楽しかった!」の裏にある真意は「面白い基板だ」ということです。
今回はお遊び的な内容とさせて頂きましたが、これだけお手軽に使えるのであれば、試作だけでなく実機でも使えるような気がしています。
実機に使うとなると、スペックや用途で使えない可能性はありますが、そもそも、私自身、もっと知識を蓄え、攻略しなければならない課題も多数あると思います。ただ、それもまた楽しみの一環になるでしょう。
お手軽に使えなければ敷居が高くなって楽しむ前に挫折してしまいますし、奥深くなければ楽しみも薄くなってしまいます。
Galileoは、初めてマイコンを触る人から、試作の作成に使ったり、実機に組み込んだり、さらにそれ以上の楽しみ方があったりと、初心者から玄人までカバーできる、そういう意味でも『汎用マイコンボード』と言えると思います。
しかも、これだけのスペックでありながら親切価格!
お試し体験で手を出しても財布へのダメージは中規模(小規模とは言わない:汗)で済みます。
価格的ハードルは、それほど高くありません!
こういったマイコンボードがあると、プログラムが充実し、基板自体が進化していきます。
今はまだ不安定・不十分な機能も、徐々に洗練されていくことでしょう。
今後が楽しみなマイコンボードを体験できたことで、充実した時間を過ごすことができました。
カライところを言うと、ポート制御の件で書いた通り、ポートをON/OFFするのに制限があるため、多数のポートを高速でON/OFFすることはできません。A/D変換器についても、同様でしょう。
そういう点では「Galileoは、PCに近いマイコンボード」「ディスプレイが接続可能ならPCと変わらない基板」と認識すべきで、CPU自体は高速ですので、それを上手く利用するような活用シーンを見出すべきです。
私が今考えていることは「裏にいるLinuxを使いこなしてこそ、Galileoの真の力を引き出すことができる」ということです。
...と書きながら、また良からぬこと、もとい楽しいことを考えてしまいました。VNC等と一緒に試したいですね!今は内緒、機会があれば試して...アップしようかな?どうしようかな?
...それと、私は不器用、半田付けは苦手です。
今回、プログラミング・レビュー作成の時間のN倍の時間を、基板作成に取られてしまいました(汗)
まだまだ修行が足りませんね。でも、それも楽しかった!
---
どうでしたでしょうか?マイコンの楽しさが伝わりましたでしょうか?
本レビューを通して、「ちょっと触ってみたい」とか「自分も何か作ってみたい」と思って頂けたら、大変うれしいです。
是非、私ども工作員の...じゃなくて電子工作愛好家(?)の仲間入りをして下さい!
最後になりましたが、ZIGSOW活動復帰をこのような形で迎えられたこと、嬉しく思っております。
それと同時に、本業にかなり近いレビューでありながら、このように薄く初心者的な内容で、しかも文章メインになりましたこと、申し訳なく思います。
ただ、本レビューを通し、私自身、とても楽しめたことも事実。
今後もこういったレビューができたらいいな、とワガママを言ってレビューを締めくくらせて頂きます。
長文・駄文に目を通して頂き、ありがとうございました。
まだ更新途中ですので、気が向いたら、時々、続きを見に来て、お付き合い頂けると嬉しく思います。
しばさん
2014/03/30
いやはや、スケッチのところとか見るとやはり本業の人は凄いなぁ、と思ってしまいます。
私のスケッチなんか結構な部分をオープンソースに頼っていて、フルスクラッチで描いたのはGalileo側のコードくらいしかないので(^^;)
記事もしっかりしていて、とても参考になりました。
いつかはこの記事やコードを完璧に理解したいものです…
蒼-aoi-さん
2014/03/30
いやいや、全然凄くないです!というか、凄くなくても簡単に動かせてしまうGalileoが凄いというのを実感してます。
「真似になるのがイヤ」&「自力でやりたかった」という理由で、初稿までは他のレビューを見ないようにしてましたが、実はしばさんのレビューは少し拝見させてもらっていました。
しばさんのレビューのテーマや取り組みが凄くて、負けられない(勝ち負けじゃなくけど)と励みになりました。
今後ともよろしくお願いします。
しばさん
2014/03/30
メカニカル部もそうですが(私なんて実はトランジスタやTTL ICの適切な使い方がこの歳になっても解らないのです(^^;))、特にスケッチ部分なんかはまさしく「プロのオーラ」が漂ってました!
拝見したのですが、またしても私の脳がSegmentation faultするくらいの勢いでしたよ。
こちらこそよろしくですm(__)m
蒼-aoi-さん
2014/03/30
ここだけの話(?)になりますが、我が家で猫を飼っていた頃に、自動えさやり機にチャレンジしたことがあったのです(自分たちが旅行に行きたかっただけ)。
ですが、うまくいかず、そうこうしているうちに猫がいなくなったため、結局、完成に辿り着けなかったんですよね。
私は、なかなか完成できない性質なので、今回は最終的に1個のモノになるように頑張ります!
自動餌やり機の詳細は、しばさんのレビューにコメントさせて頂きます。
いぐなっちさん
2014/03/30
ドットマトリクスをこんなに大量に動かすとは・・・すごいです。
私も、マイコン付録の雑誌はついつい買ってしまいます。
蒼-aoi-さん
2014/03/30
ありがとうございます。
本当はユニバーサルに乗るだけ載せようかと思ったのですが、ポートが遅い件があり、これ以上は実用的ではない(配線もさらに増える)と判断しました。
Arduino互換を初めて触ったわけですがI/Oの少なさに、普段使っているマイコンとのギャップを感じてしまいました(用途の違いなわけですが)。
レビューは、まだまだ先は長いので、頑張ります!
最近、付録少ないですね。
この間のトラ技ARMライタは買いそびれてしまったし...。
しばらくは、Galileo様一筋なので良いですが、そろそろ面白そうな付録が出てほしいところです。
砧順一(きぬたじゅんいち)さん
2014/03/30
私自身も組み込み系の学校にいたので苦労して結局単位は卒業スレスレだったりしたのを
思い出しました。
組み込み系とか電子工作はハマるとホントどえらいことになりますからね・・・。
いやはやお疲れさまでした。
蒼-aoi-さん
2014/03/30
ありがとうございます!
私も学校で変わり種先生の影響を受けて、こんな度ハマり状態なわけですが、楽しいのは事実...というわけで、このレビューで布教活動を。
ただ、部品は買って満足、使わず仕舞いになっていたことも。
なので、部品はゲームラックにギッシリと...今回活躍できて良かった!(汗
takamizuさん
2014/04/02
電子工作等詳しくない方(私)にもわかりやすいレビューです。
電子工作面白そうですね。
蒼-aoi-さん
2014/04/02
ありがとうございます!
そう言ってもらえると、書いた甲斐があります!
引き続き、続きを試しながら書いていますが、なかなか難航しています。
奥深く難しいところもありますが、だからこそ面白いです!
本業で触るようなマイコンとは違って、Galileoはチョコチョコっと試せるのがイイですね!
いぐなっちさん
2014/04/13
私もI2Cレベルシフタを、トランジスタで組みましたが、どうも動きませんでした。
FETに変更することで動きました。
(回路は違いますから、今回の件で悪さしているか確証はありませんが。)
ねがてぃぶろぐさんのレベルシフタに関する記事を参考にされては。
http://gomisai.blog75.fc2.com/blog-entry-46.html
http://gomisai.blog75.fc2.com/blog-category-9.html
蒼-aoi-さん
2014/04/13
ありがとうございます!
後ほど確認させて頂きます。
反転は意図して、というか結果オーライというか。
調べたところ、このモジュールの出力が反転状態らしいので、プログラム上は公式の信号説明に合わせられると思ってます。
まあ、ソース上は反転にもすぐに対応できるようにはしているのですが。
どちらにしても、モジュールから信号がでないことには...(T_T)