はじめての電子工作で知っておくべきこと:序 ~「Raspberry Pi で遊ぼう 第4版」の補足知識~

0 件のコメント
昨今の電子工作ブームは、ハードウェアをソフトウェアふうに利用できる環境が整ってきたからだと思う。
  1. Arduinoとかのハードウェアのオープンソース化の流れとかで、アーリーアダプターなできる人が集まる。
  2. デファクトスタンダードが形成され始め、特定デバイスへの人の集中が顕著に。
  3. 難解な部分はモジュール化されて、単純な理解で使えるようになり、素人も参加。
  4. 市場ができたことで、センサー類の低価格化、高機能化、小型化が進み、さらに活性化。
  5. 素人も結構できる人になってくる。
  6. もっと活性化。
な感じか。LinuxやApacheなどのときと流れは似てる気がする。

アーリーマジョリティ的な私にとっては、特に③が大きく、ある意味プラモデル感覚で、考えたことを具現化できそうな状況が楽しい。

さて、電子工作に興味をもって、Raspberry Piから触り始めるために、「Raspberry Pi で遊ぼう 第4版」を購入した。


が、「とりあえず」流れに沿って進める指南書としてはよいが、やはりその分今後の理解度としては乏しいまま。
やりながら調べた情報をまとめとく。


前提

  • 電子工作はまじで初めてな人。
  • オームの法則くらいはぼんやり覚えてる。電圧(E) = 電流(A) x 抵抗(R)。
  • Linuxとかプログラミングへの抵抗(R)はない。
  • 既成の部品集めて、ちょっとプログラム書いてワーイ出来た! なレベルで満足。
ここからか。。結構、道は長そう。

アナログ回路とデジタル回路について

違いというか言葉自体を知らなかったが、独断と偏見でざっくりいうと、
  • アナログ回路:部品の電子的な挙動を制御するのがメインな電子工学系?な人向けの領域
  • デジタル回路:プログラムで部品に信号を送って制御することがメインな情報系な人向けの領域
補足:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q144150919

勉強する中で、アナログ回路的要素について必要な知識を調べたりして時間がとられたが、
上記定義のデジタル回路を扱えればよくて、アナログ回路を巧みに操ることは不要な人がほとんどだと思う。

アナログ回路で考えなければならないような、電気的な挙動はプロが計算してICチップや基板に実装しているのがほとんど。

そのへんはプロに任せて、素人が電子工作で必要になるのは下記知識でよい気がする。

最低限の予備知識はこれ(暫定版)

  •  最低限の部品の知識
    部品としては電源/抵抗は当たり前だが、LED/ダイオード/コンデンサ/トランジスタの「さわり」まで。
    部品の許容電圧/電流をデータシートから読めればよさそう。
    あとはブレッドボードを使う前提で、部品のピン幅は2.54mmピッチのものを選ぶことを知っていれば効率的に買い物できるはず。
  • センサー類など各モジュールとの通信仕様の理解
    • UART
    • I2C
    • PSI    http://www.ne.jp/asahi/rugbysensor/ohata/SPI_0.html
    • 1-wire
    • PWM ※並列するのはおかしいが。。
  • プログラミング(Raspberry piなら python が主流ぽい?)
  • モノのデザイン・機能 (電子工作 - 電子 = ただの工作だが)
まぁトランジスタの詳細とか、オペアンプだのの仕組みとか、交流関連の知識は知らなくてもいいはず。
実際に理解した範囲が増えてからのほうが、そこらへんの知識も学びやすいはずなので、最低限の理解のための知識→実践→知識の肉付けで進んだほうが効率がいいはず。

GPIO関連メモ

ファイルシステムによる制御

利用するGPIOピンの準備
echo GPIO番号 > /sys/class/gpio/export
モード指定
echo out > /sys/class/gpio/gpioGPIO番号/direction
echo in > /sys/class/gpio/gpioGPIO番号/direction
High/Low切り替え
echo 1 > /sys/class/gpio/gpioGPIO番号/value
echo 0 > /sys/class/gpio/gpioGPIO番号/value
利用終了
echo GPIO番号 > /sys/class/gpio/unexport

Wiring Pi(gpioコマンド)による制御

gpio readall
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | OUT  | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | OUT  | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | OUT  | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | OUT  | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
モード指定
gpio -g mode GPIO番号 out
gpio -g mode GPIO番号 in
High/Low切り替え
gpio -g write GPIO番号 1
gpio -g write GPIO番号 0

他メモ


  • カーネルモジュールに相性があるのか、/boot/config.txt などに記載した情報は、各章の学習後に消さないと正常にセンサーを認識してくれなくてハマる。
    気が向いたら原因詳細は探る。


適宜修正

0 件のコメント :

コメントを投稿

ご来訪者様の判別のため、
匿名希望の方もコメントの記入者欄に「名前/URL」 を選択し、
テキトーなペンネームを入れてくださいm(_ _)m
※ URLは不要。書いていただいてもOK。