「Raspberry Pi 電子工作レシピ」正誤表について

早速ですが、いろいろとミステイクが見つかりました。

図2.1 がこうなっていますが
IMG_20141003_120104
これが正しいです。

registor_colorcode

また、表2.1は以下です。

registor_E12

このことについて、ついでに解説を。

本書では、かなり抵抗やコンデンサの種類を減らして解説しています。

抵抗は次の5種類
– 680Ω
– 1kΩ
– 4.7kΩ
– 22kΩ
– 120kΩ

(上の基本の値に加えて、作例によって追加で100Ωや2.7MΩなどの抵抗を一部に使っています。)

コンデンサは次の1種類
– 330μF

抵抗なんて1本1円程度なのですが、抵抗を買うのは結構大変です。金属皮膜抵抗?カーボン抵抗?セメント抵抗? なんじゃそりゃ。1本1000円の抵抗を買ったほうがいいの?

本書で使う電子工作は、一番安いカーボン抵抗で十分なのですが、1本だけってなかなか買えません。10本買うと300円ですが、100本買って100円だったりします。でも100本買ってももったいないし、表2.1のように全種類買うとすると・・・。

ということで、独自にE1.5系列というものを定義し、これを100本ずつ買ってもらうと済むようにしました。
– 680Ω
– 1kΩ
– 4.7kΩ
– 22kΩ
– 120kΩ
E1.5というのはひとつ階層を上がると大体5倍となるこtと( n x 5 ≒ n+1 , 5 ≒ 10 ^ ( 1 / 1.5 ) )を表しています。計算式通りだと、本当は680Ωは200ΩぐらいになるのですがRaspberry Piでは抵抗分圧で5V/3.3V変換を行うのに1kΩと680Ωのペアを使うこと、あと間違いやすい茶・赤・橙バンドの混同を防ぎ、色弱の方にもなるべく区別できるようにするということでこのパターンを選びました。

これだと「ああっ510Ωが1つだけ足りない、次の休みに買いにいかなくちゃ・・・よしっ買ってきたぞ!ああっ今度は2kΩが足りない」なんてことをせずに、510Ωは680Ωで代用、2kΩは1kΩを2つで代用、というようにしていって捗るようになります。

さて、書籍のミスの件はこの修正も含め、書籍の正誤表はここで管理していきます。
https://sourceforge.jp/projects/fablib/ticket/?component%5B%5D=3505&component_mode%5B%5D=eq&status%5B%5D=1&view=component

Raspberry Pi の本書きました

今日発売です
IMG_20141003_111944

http://books.shoeisha.co.jp/book/b182647.html

表紙だけではどんな本かわかりずらいのですが、ヘッドレス(キーボード、マウス、ディスプレイ使わない)でCUIで動かすことに特化した入門書です。他に、以下のコンセプトがあります。

- なるべく安価にできるもの。なるべくどこでも手に入るもの。なるべく取り替えがきくもの。
- 工作例は、なるべく基本的なメソッドの組み合わせで実現
- 作例はなるべくシンプルに。見栄えや機能追加はユーザが独自に行う前提で
- コードをずらーっと書いてページを稼ぐことはしない
- 基本的な知識を重視しして、リファレンス的に使えるように
- Windows/Mac/Linux でのマルチプラットフォーム
- ワークショップのテーマとして、小学生でもできることを目指す
- Web技術者がハードウェアに手を出したいときに使える作例とする。そのために電流制限抵抗やセキュリティなどはおろそかにしない
- とっつきやすさのために本質をごまかすことはしない
- CUIで動かす最低のトレーニングを一度すれば一生使える知識になるように
- すべての作例はオープンソースに

力が全然及ばずに、いろいろと問題点がありますがWebなどでのフォローを充実して読者に満足できるものにしようと思います。

オープンハード勉強会 #1 開催しました

オープンエアスターの関連団体の秘密結社オープンフォースで、「オープンハード勉強会」をはじめました。
コンセプトは
- 二時間ぐらいのライトな勉強会。
- マルチプラットフォーム
- 小学生ぐらいからでもできる内容
- 家族連れ、ベビー同伴歓迎
- 無料
- おいしいものを持ち寄り

第一回目は RaspberryPiを使って簡単なPythonのレクチャーと、簡単な電子回路の実験。

https://atnd.org/events/56976

9/28に開催、小学生2名を含む7グループ9名で開催しました。

10501595_756665411059685_6189411032449821530_n
サイコロで自己紹介

10628081_756665434393016_2181886857729470674_n
Raspberry Piは貸出

10351165_756665611059665_8250249274874652339_n
おいしそう!

10645025_756665461059680_7341108758525259800_n
おいしいものが集まった。すばらしい!

1966848_756665481059678_2329061226179395414_n
ブレッドボードで回路を組む

10568789_756665501059676_7209626007121084849_n
あれ?動かないなあ・・・

10690110_756665524393007_3866371896828839303_n
勉強に疲れたらおいしいものを。

10685409_756665541059672_7510372925278138382_n
最年少、小学校4年生

10428449_756665561059670_6271047281812804232_n
お父さんといっしょの小学校6年生

946381_756665594393000_3959053214840286353_n
チームに別れて実験

10653336_756665634392996_6135238122613993187_n
Macの落とし穴にはまった

10665826_756665657726327_2429906483179321505_n
スイッチを押すと入力の値が取れるはずが・・・?

10435899_756665677726325_4170314935730209009_n
実はこの小学生は既にRaspberryPiでロボットを作っているツワモノ。

1926634_779300648775643_8879176800594350989_n
スクリーン代わり

10153662_779300685442306_5357951994853833860_n
そろそろ終わり

10687107_779300742108967_2527910902840437156_n
お疲れ様!

テーブル筐体を作ってみる

IMG_20140813_010002
昔なつかしのテーブル式のアーケードゲーム筐体を作ってみました。

代表的なテーブル筐体のサイズは幅86cm,奥行き56cmということで、1/5サイズにして天板サイズを 17.6cm x 11.2cm にしています。
中に入るのはRaspberry Piと液晶モジュール、操作パネルはブレッドボードで作りました。
arcadetable-2014828

図の上側はトップパネルに貼る紙、下側は板をカットするための図面です。

図面はこちら→arcadetable-2014828.dxf
(LibreCADで作成しています)

トップパネルに貼る紙はこちら→arcadetable-2014828.odg
(LibreOffice DRAWで作成しています)

IMG_20140926_163700
レーザーカッターで2.5mmのMDF板をカットして、色を塗っておきます。

IMG_20140926_161342
脚はなんとなく雰囲気の似ているコレ。

IMG_20140926_160744
組み立てはこのようにやっていきます。
IMG_20140827_171204

IMG_20140814_002221

IMG_20140926_163846
液晶はaitendoのとオンダッシュモニターに対応。コンポジット出力で液晶につないでいます。

IMG_20140813_031341
DOOMを動かして遊んでみました!

詳細は10月3日発売予定の「Raspberry Pi 電子工作レシピ」(翔泳社)に掲載します。みんな、見てね!

PIRセンサ+サーボ

今回はPIRセンササーボを連携させてみます。
ハードウェアPWMを使うのでサーボをデジタル出力0番ピンに、PIRセンサをデジタル入力1番ピンにつなぎます。

DSC01554配線

動くものを検知した時に動き、検知していない時は止まるようにプログラムします。

 // pir_servo.c sample program for RaspberryHabu
 // Licence CC 0 ( Public Domain )
 
 #include "stdio.h"
 #include "wiringPi.h"
 #include "unistd.h"

int main()
{
  int pir,pwm;
  if (-1 == wiringPiSetup())
    {
      printf("setup error!");
      exit(1);
    }
  pinMode(1,PWM_OUTPUT);
  pinMode(0,INPUT);
  while(1){
    pir=digitalRead(0);
    if(pir == 1)
    {
    pwmWrite(1,10);
    usleep(50000);
    pwmWrite(1,500);
    usleep(50000);
    pwmWrite(1,10);
    }else if(pir == 0){
    pwmWrite(1,0);
    sleep(5);
    }
    printf("channel 0 : %d servo : %d\n", pir,pwm);
    pwmWrite(1,0);
    sleep (1);
  }
}

動く物を検知したとき、アナログ入力1ピンにつながったRaspberryPi上のLEDが光ります。

DSC01556動いたものを検知した時

DSC01555検知していない時

人が動いたときに何かを動かすようなロボットが作れます。
例えば扉の片側にサーボで扉のカギを開け閉めできるように設置するとオートロックドアを作れますね。

距離センサ+モータ

距離センサを使うロボットの命題としては迷路探索などがあります。有名なものとしてはマイクロマウスがありますね。
今回は距離センサとモータを連動させてみます。使う部品は以前紹介したシャープ製IR距離センサFA130モータです。

距離センサをアナログ入力に、モータ回路をデジタル出力につなぎます。

DSC01553

近づくとゆっくりに、離れると速く動くようにプログラムします。

 // Licence CC 0 ( Public Domain )
 #include 
#include 
#include 
#include 

#define MOTORPWM 1
#define MOTOROUT1 2
#define MOTOROUT2 3

#define SPIBUFFSIZE 256

unsigned char spidata[SPIBUFFSIZE];

int MCP3008Read(int channel){
  int spireturn,data;
  spidata[0]= 1;
  spidata[1]= (0x80 | channel << 4);
  spidata[2]= 0;
  spireturn = wiringPiSPIDataRW(0, spidata, SPIBUFFSIZE);
  data = ((spidata[1]&3) << 8 ) + spidata[2];
  return(data);

int main()
{
  int distance;
  int spiresult;

  if (-1 == wiringPiSPISetup(0,1000000))
    {
      printf("SPI setup error!");
      exit(1);
    }

  wiringPiSetup();

  pinMode(MOTOROUT1,OUTPUT);
  pinMode(MOTOROUT2,OUTPUT);
  pinMode(MOTORPWM,PWM_OUTPUT);

  digitalWrite(MOTOROUT1,0);
  digitalWrite(MOTOROUT2,0);
  pwmWrite(MOTORPWM,0);
while(1){
  spiresult=MCP3008Read(7);
  digitalWrite(MOTOROUT1,1);
  if(spiresult<40){
    distance = 7;
    pwmWrite(MOTORPWM,256);
  }else if(spiresult<50){
    distance = 6;
    pwmWrite(MOTORPWM,128);
  }else if(spiresult<70){
    distance= 5;
    pwmWrite(MOTORPWM,64);
  }else if(spiresult<110){
    distance = 4;
    pwmWrite(MOTORPWM,32);
  }else if(spiresult<190){
    distance = 3;
    pwmWrite(MOTORPWM,16);
  }else if(spiresult<350){
    distance = 2;
    pwmWrite(MOTORPWM,8);
  }else if(spiresult<670){
    distance = 1;
    pwmWrite(MOTORPWM,1);
  }else{
  distance = 0;
  pwmWrite(MOTORPWM,0);
  }
  printf("readspi : %d distance : %d\n", spiresult,distance);
  sleep (1);
  pwmWrite(MOTORPWM,0);
  }
}

近い(約5cm)とゆっくり、遠い(約50cm)と速く回ります。
用途としてはいろいろありますが、モータの数とセンサの数を増やせば前出のマイクロマウスも作れますね。

周りの明るさを感知してLEDの強さを調整してみた

今回使うのは照度センサと緑色のLEDです。照度センサは以前にも使ったパナソニック製NaPiCaです。

アナログ入力でNaPiCaの検知する明るさの値を取得してPWMで緑色LEDの明るさを調整します。
NaPiCaをアナログ入力0ピンにつなぎ、緑色LEDのアノード側(+、足の長いほう)をデジタル出力1ピンにつなぎます。緑色LEDのカソード側(-、足の短いほう)には抵抗(10kΩ)をつないでその先をGNDにつなぎます。

DSC01552

明るい時をPWM100%に、暗い時を0%にします。

 // lednapica.c sample program for RaspberryHabu
 // Licence CC 0 ( Public Domain )
 
#include "stdio.h"
#include "stdlib.h"
#include "wiringPPI.h"
#include "wiringPi.h"

#define TEISU 20
#define SPIBUFFSIZE 256

unsigned char spidata[SPIBUFFSIZE];
int MCP3008Read(int channel){
  int spireturn,data;
  spidata[0]= 1;
  spidata[1]= (0x80 | channel << 4);
  spidata[2]= 0;
  spireturn = wiringPiSPIDataRW(0, spidata, SPIBUFFSIZE);
  data = ((spidata[1]&3) << 8 ) + spidata[2];
  return(data);
}

int main()
{
  int spiresult,led;
  if (-1 == wiringPiSPISetup(0,1000000))
    {
      printf("SPI setup error!");
      exit(1);
    }
  if (-1 == wiringPiSetup())
    {
      printf("setup error!");
      exit(1);
    }
  pinMode(1,PWM_OUTPUT);
  while(1){
    spiresult=MCP3008Read(0);
    led = 1023 - (spiresult * TEISU) ;
    if(led>1023){
    led = 1023;
    }else if(led<0){
    led = 0;
    }
    printf("channel 0 : %d led %d\n", spiresult,led);
    pwmWrite(1,led);
    usleep (50000);
  }
}

動かしてみると、少し見にくいですが緑のLEDの明るさが変化しているのがわかります。TEISUの値は実験環境に合わせて変えてみてください。

DSC01550暗い時

DSC01549明るい時

液晶のバックライトなどに応用できそうです。
PIRセンサと組み合わせて人がいるときだけ調整するデスクスタンドライトなどを作るのもよさそうですね。

圧電素子をセンサに使ってみた

圧電素子は電圧をかけると音が出ますが、逆に音(衝撃)を感じると電圧を生じます。
この性質を利用して、圧電素子を衝撃センサとしてLEDを光らせてみることにしました。

圧電素子はRaspberryHabuBasicについているものを使います。

DSC01535

RaspberryHabuの圧電素子はスピーカとして使えるように配置されていますが、そばのジャンパーピン(下の画像の黄色の線で囲ってあるところ。画像ではすでに外してある。)を外すことにより回路との接続が切れるようになっています。

DSC01537

画像の上側のピン(上の画像の赤い丸印)がRaspberryHabu上の抵抗(2kΩ)とつながっており、その先に圧電素子がつながっています。圧電素子のもう片方の端子はGNDにつながっています。画像の上側のピンから別に用意した抵抗(10kΩ)をつないでTD62703AGPを通して74HC02を使ったフリップフロップ回路(SRラッチ)につなぎます。
RaspberryHabuのデジタル出力についているTD62783は入力耐圧15V、出力耐圧が50Vと高く、電流を500mAに制限する入力抵抗も入っており、RaspberryHabuにつないだ機器の保護回路となっています。
圧電素子から発生する電圧がとても高いことがあるのですが、74HC02の入力耐圧は6V程度なので、圧電素子から高い電圧がかかった時の保護のためにこのTD62783APGを外してブレッドボードに刺して保護回路として使います。
DSC01541

フリップフロップの出力をデジタル入力につなぎます。
フリップフロップのリセット信号につなぐRaspberryHabuからの配線はデジタル出力ですが、TD62783APGを外しているため脇のRaspberryPiから直接つながっているポートを使います。画像では一列のピンソケットをはんだづけしてあります。

DSC01539

一定時間ごとにフリップフロップをリセットするようにします。
信号を検知してから4秒後に1秒間のリセット信号を流すようにしました。

/* Lisence CC 0*/
#include "stdio.h"
#include "wiringPi.h"
#include "unistd.h"

#define DIN 0
#define RESETPIN 3

int main(void)
{
        wiringPiSetup();

        int i = 0;
        pinMode(DIN,INPUT);
        pinMode(RESETPIN,OUTPUT);
        digitalWrite(RESETPIN,0);
        while(1){
                i=digitalRead(DIN);
                if(i == 1){
                        printf("ON %d n",i);
                        sleep(4);
                        digitalWrite(RESETPIN,1);
                        sleep(1);
                        digitalWrite(RESETPIN,0);
                }
        }

        return 0;
}

圧電素子を軽く叩いて衝撃を発生させます。

DSC01542

衝撃を検知すると5秒以内にON 1と表示され、そのあと放置すると画面はそのままになります。

DSC01546

圧電素子を衝撃センサとして窓につけて防犯システムに使うこともあります。
使い方次第でいろいろできそうです。

WiringPi のバージョンアップ

今まで使っていたSD カードを 新しいRaspberry Pi B+ で動かすのはできたのですが、WiringPiを実行してみると26ピン分の表示しか出ません。

pi@raspberrypi:~$ gpio readall
+----------+-Rev2-+------+--------+------+-------+                              
| wiringPi | GPIO | Phys | Name   | Mode | Value |                              
+----------+------+------+--------+------+-------+                              
|      0   |  17  |  11  | GPIO 0 | IN   | High  |                              
|      1   |  18  |  12  | GPIO 1 | OUT  | Low   |                              
|      2   |  27  |  13  | GPIO 2 | IN   | Low   |                              
|      3   |  22  |  15  | GPIO 3 | IN   | Low   |                              
|      4   |  23  |  16  | GPIO 4 | IN   | Low   |                              
|      5   |  24  |  18  | GPIO 5 | IN   | Low   |                              
|      6   |  25  |  22  | GPIO 6 | IN   | Low   |                              
|      7   |   4  |   7  | GPIO 7 | IN   | Low   |                              
|      8   |   2  |   3  | SDA    | ALT0 | High  |                              
|      9   |   3  |   5  | SCL    | ALT0 | High  |                              
|     10   |   8  |  24  | CE0    | ALT0 | High  |                              
|     11   |   7  |  26  | CE1    | ALT0 | High  |                              
|     12   |  10  |  19  | MOSI   | ALT0 | Low   |                              
|     13   |   9  |  21  | MISO   | ALT0 | Low   |                              
|     14   |  11  |  23  | SCLK   | ALT0 | Low   |                              
|     15   |  14  |   8  | TxD    | ALT0 | High  |                              
|     16   |  15  |  10  | RxD    | ALT0 | High  |                              
|     17   |  28  |  53  | GPIO 8 | ALT0 | High  |                              
|     18   |  29  |  54  | GPIO 9 | ALT0 | High  |                              
|     19   |  30  |  55  | GPIO10 | IN   | Low   |                              
|     20   |  31  |  56  | GPIO11 | OUT  | High  |                              
+----------+------+------+--------+------+-------+

元々このSDカードに入っている WiringPi は、git clone してインストールしていました。
そのときのディレクトリがそのまま残っているので、以下のようにして最新のコードを引っ張ってきます。

pi@raspberrypi:~$ cd wiringPi                                                   
pi@raspberrypi:~/wiringPi$ git pull origin                                      
remote: Counting objects: 20, done.                                             
remote: Compressing objects: 100% (20/20), done.                                
remote: Total 20 (delta 18), reused 0 (delta 0)                                 
Unpacking objects: 100% (20/20), done.                                          
From git://git.drogon.net/wiringPi                                              
   0150b02..df45388  master     -> origin/master                                
Updating 0150b02..df45388                                                       
Fast-forward                                                                    
 build               |    9 +-                                                  
 gpio/gpio.1         |   15 ++-                                                 
 gpio/gpio.c         |  133 +++++++++++++++++++++-----                          
 gpio/pins.c         |   56 +----------                                         
 gpio/readall.c      |  265 ++++++++++++++++++++++++--------------------------- 
 wiringPi/Makefile   |    4 +-                                                  
 wiringPi/wiringPi.c |  214 ++++++++++++++++++++++++++++-------------           
 wiringPi/wiringPi.h |   37 +++++--                                             
 8 files changed, 437 insertions(+), 296 deletions(-)                           
pi@raspberrypi:~/wiringPi$ 

あとは ./build だけでインストールできます。

pi@raspberrypi:~/wiringPi$ ./build
wiringPi Build script
=====================


WiringPi Library
[UnInstall]
[Compile] wiringPi.c
[Compile] wiringShift.c
[Compile] piHiPri.c
[Compile] piThread.c
[Compile] wiringPiSPI.c
[Compile] wiringPiI2C.c
[Compile] softPwm.c
[Compile] softTone.c
[Compile] mcp23008.c
[Compile] mcp23016.c
[Compile] mcp23017.c
[Compile] mcp23s08.c
[Compile] mcp23s17.c
[Compile] sr595.c
[Compile] pcf8574.c
[Compile] pcf8591.c
[Compile] mcp3002.c
[Compile] mcp3004.c
[Compile] mcp4802.c
[Compile] mcp3422.c
[Compile] max31855.c
[Compile] max5322.c
[Compile] sn3218.c
[Compile] drcSerial.c
[Link (Dynamic)]
[Install Headers]
[Install Dynamic Lib]

WiringPi Devices Library
[UnInstall]
make: Nothing to be done for `all'.
[Install Headers]
[Install Dynamic Lib]

GPIO Utility
[Compile] gpio.c
[Compile] readall.c
[Compile] pins.c
[Link]
[Install]

All Done.

NOTE: To compile programs with wiringPi, you need to add:
    -lwiringPi
  to your compile line(s) To use the Gertboard, MaxDetect, etc.
  code (the devLib), you need to also add:
    -lwiringPiDev
  to your compile line(s).

pi@raspberrypi:~/wiringPi$

では、うまく動くでしょうか。

pi@raspberrypi:~/wiringPi$ 

i@raspberrypi:~/wiringPi$  gpio readall
 +-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 0 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 1 | 11 || 12 | 0 | OUT  | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | ALT0 | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | ALT0 | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 | ALT0 | 0 | 27 || 28 | 0 | ALT0 | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 0 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 0 | 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 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+
pi@raspberrypi:~/wiringPi$ 

おや、だいぶ雰囲気が変わっています。この新しいバージョンを、従来の Raspberry Pi B で動かすとどうなるでしょうか。

pi@raspberrypi:~$ gpio readall
 +-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 0 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 1 | 11 || 12 | 0 | OUT  | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | ALT0 | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | ALT0 | CE1     | 11  | 7   |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |  28 |  17 | GPIO.17 |   IN | 0 | 51 || 52 | 0 | IN   | GPIO.18 | 18  | 29  |
 |  30 |  19 | GPIO.19 |   IN | 0 | 53 || 54 | 0 | IN   | GPIO.20 | 20  | 31  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+
pi@raspberrypi:~$ 

旧 Raspberry Pi でも新しい表示形式が使われるようです。

RaspberryPi B のSDカードを RaspberryPi B+ で使う

Raspberry Pi B+ が手に入ったので早速実験。まずは今まで使っていたRaspbianが使えるかどうかチェックしてみました。

使ったSDカードには、2014-01-07 の Raspbian が入っていて、数ヶ月updateしていない状態。

microSDカード+アダプタで使っていたので、これを microSD カードの状態にして、B+に刺した結果問題なく起動&ログイン。

しかしUSBデバイスおよび有線LANの認識ができていません。お手軽にシリアルコンソールで確認したので、sshで試したらログオンできなかったでしょう。

一旦以前の Raspberry Pi に一旦戻して

sudo apt-get updateおよび、
sudo apt-get upgrade

(2014/7/25 sudo が抜けていたので修正しました)
すると今度は B+ でも有線LAN や USBデバイスの認識は正常になりました。