ラベル 電子工作一般 の投稿を表示しています。 すべての投稿を表示
ラベル 電子工作一般 の投稿を表示しています。 すべての投稿を表示

電池ホルダーを買った

Arduinoに入力する電池ホルダーを購入した。

以下のプログラムをアップロード。

void setup(){
  Serial.begin(9600);  //ボーレート(1secに行う変復調の回数)を9600に設定
}
void loop(){
  float vt = (float)analogRead(A0)/1023 * 5.0;
  Serial.println(vt);
  delay(1000);  // Wait for 1 second
}

電池一つなら、以下の通り。

入力結果が1.57V安定する。
下の電池ホルダーは、直列に3個の電池をつなぐことができるもの。



回路を組んでみた。

 1.57×3= 4.71(V)の値に近い4.73Vが出力される。
電子ホルダーのような電子工作の部品は100円以下で手に入るので、積極的にパーツ屋さんに足を運んで、パーツを揃えると良いと思った。

PCボードとマイコンボード

最近、日経Linuxなどのコンピュータ雑誌を見ているとお目にかかる機会が増えたRaspberry PiやArduinoだが、これらの分類はどのように行われているのだろうか。

格安ボードには大きく「PCボード」と「マイコンボード」の二つに分けられる。

#PCボード
Linuxが動く程度に大きな容量のメモリと能力のあるCPを積んだボード。普段使用するPCと同じく、OSが稼働するため、スタンドアロンで様々な処理が可能である。OSが介在するため、きめ細かいI/Oの制御にはマイコンボードに比べて劣る。
・Raspberry Pi http://www.raspberrypi.org
・BeagleBone Black http://beagleboard.org
・Cubieboard http://cubieboard.org
・Wandboard http://www.wandboard.org

#マイコンボード
メモリやCPU(マイクロコンピュータ)が非力(省エネ)、OSが動作せず、アプリケーションが直接ハードウェアを操作する。きめ細かいI/Oの制御が可能。
・Arduino http://arduino.cc
・mbed https://mbed.org

PCボードにしてもマイコンボードにしてもここに挙げた以外にも種類がある上、それぞれ特徴があるので、しっかりと吟味した上で購入したい。
【参考文献】
『格安pcボードで始める電子工作超入門』日経BP社 2014

ArduinoとOS

Arduinoを使用する場合、OSを使わず、一つのプロジェクトごとに一つのプログラムをフラッシュして実行することが多い。


では、Arduino上でOSの稼働は不可能なのであろうか。答えは可能である。
OSがArduino上で稼働するイメージを以下に示す。

Arduino上で稼働するOSの具体例を列挙する。
・duinos
https://code.google.com/p/duinos/
・Pyxis
http://www.skewworks.com/pyxis/
・MacArduinoOS
http://www.liquidware.com/apps/show/69
・TaOS
http://www.liquidware.com/apps/show/54


なお、メモリ容量が大変小さいため、Linuxを動作させることは困難のようである。以下のサイトでこのことが議論されている。
Linux on Arduino?


OSとマルチプロセス

OSを採用する事の利点はどのようなものであろうか。
その一つに、マルチタスクが可能になるという点が挙げられる。

今、ArduinoのユーザーがN個の仕事をArduinoに行わせたいと考えているとする。ただし、Arduino本体は1つしか所有していないとする。すると、それぞれのプログラムを実行するたびに、プログラムをArduinoにフラッシュする必要が生じる。言わば、直列つなぎでプログラムが実行されるのである。図にすると以下の様になる。


Raspberry PiやMac、Windows PCのようなOSを搭載しているシステムにおいては、OSが複数のプログラムを平行して実行できるようにする。CPUは一つなので、プログラムの一つ一つを細かい部分に分割して、交互に実行していくこととなる。この切り替えは人間が感知できるよりも高速に行われる。これにより、ユーザーからは、複数のプログラムが同時並行で処理されているように見えるのである。


インターフェイスを用いて、ハードウェアを使う事

Raspberry PiやArduinoをいじっているうちに、OSの本質が少し見えてきたように感じた。それを書き綴りたい。



まずはじめに、人間が道具を使う事の構造について考えてみた。そもそも、ハードウェアなどの「道具」を使うとは、以下のように集約されるのではないだろうか。ユーザが行いたい意図があり、それをユーザーが直接ハードウェアに働きかけることで、意図が達成される。
コンピュータのシステムというのは、このユーザーとハードウェアという二者の関係の間に、「インターフェイス」と呼ばれる仕組みを組み込むことであると言ってもよさそうだ。

インターフェイスは、何も一つの実体を指す物ではない。コンピュータのシステムでは様々なプログラムが階層的な構造を取り、ハードウェアとの間の橋渡しを行うことが普通である。


さて、この考えを元にOS(Operation System)とはどのようなものであるかを考えていく。まずは、OSが無いシステムを考える。このようなシステムではアプリケーションがユーザとハードウェアの間に入って直接ハードウェアを制御することとなる。下には、OSなしで動作するシステムの実例として、Arduinoを挙げた。

一方、OSが存在する場合は、OSがアプリケーションとハードウェアとの間に位置する。そして、OSがハードウェアの直接的な制御を担うこととなる。アプリケーションは、OSとの連絡を通して間接的にソフトウェアを制御する。言わば、OSがアプリケーションとハードウェアに対して、インターフェイスを提供していると言うができる。

OSの存在するシステムの例として、GNU/Linuxシステムを考える。GNUとは、ここまで議論してきたアプリケーションに相当するものと言っても大きな間違いは無いだろう。Linuxと呼ばれるプログラムは、狭義の意味でのOSと言われる。それはここまでの議論の通り、ハードウェアを直接制御するアプリケーションであるからである。一方、GNUが提供しているソフトウェアは、アプリケーション自身であったり、アプリケーションがカーネルと情報のやり取りを行う際に利用するAPI(Application programming interface)であったりする。ユーザーが触れているのは、アプリケーションであって、カーネルではないので、Linuxカーネル単独ではユーザーの意思を実現することができない。GNUの提供するプログラムが必要なのである。(下の例ではGNU/Linuxが働くハードウェアの実例として、Raspberry Piを挙げた)


GNUとLinuxカーネルの双方にリスペクトを払うという意図で、一般に「Linux」と呼ばれるシステムを、「GNU/Linux」と呼ぶ人も多い。

以上が、私がRaspberry PiやArduinoをいじっているうちに、OSの本質が少し見えてきたように感じたことのまとめである。人間と道具(ハードウェア)という二者の関係に始まって、ソフトウェアがインターフェイスを提供したり、ハードウェアとのやりとりを一手に引き受けるOSのあるシステムまで見てきた。
今後は、OSがあることの利点についてより具体的に考えていきたいと考えている。





Day10 手動でLチカ

Raspberry PiでLチカ(LEDチカチカ)を行う前に、乾電池を電源とした原始的なシステムを構築して、Lチカを行ってみました。


【道具】
SWITCH SCIENCEの「Arduinoをはじめようキット」に付属
・ブレッドボード x1
・ジャンパーワイヤー(オス-オス)x2
・赤色LED x1
・330Ωの抵抗

イオンのトップバリュー
・アルカリ乾電池(1.5V) x2

回路図は以下の通り。(※抵抗の数値が誤っている)
そして、これがブレッドモードを利用して、実際に電子回路を構成したところ。ジャンパーワイヤーが乾電池の陽極に接していないので、LEDが点灯する事は無い。
ジャンパーワイヤーを電池の陽極に接触させることで、LEDに通電し、LEDが光を発する。



乾電池の陽極にジャンパーワイヤーを接触させたり、させなかったりを手動で繰り返せばLチカになるわけだ。
一方、Raspberry PiでLチカを行う場合、ソフトウェアのレベルで回路を制御して、LEDに通電する場合と通電しない場合を決定している。
素手で行う事が可能な作業を、ソフトウェアが肩代わりしてくれるのである。これがコンピュータシステムの本質的な部分である。ソフトウェアは、私たちの大脳と、ハードウェアの間のインターフェースと考えるとよいかもしれない。

【参考文献】
Massimo Banzi (著), 船田 巧 (翻訳)『Arduinoをはじめよう 第2版』2012