電子み、一 ー - 25 をすくつな 特集 1 0 1 ト 11655 1 ト 11656 1 ト 11657 1 ト 02476 3 ト 04268 1 ト 06966 1 ト 07597 1 K -12197 1 P -04025 1 M-11563 4 ト 07783 1 P -00246 1 ト 02584 1 ト 09967 1 M-11246 1 M -05452 1 M -07764 2 P -06438 1 ト 08332 1 K -09848 ◆ 1 M -08914 ミ◆ 1 P -05372 1 P- 10761 ◆ 1 ト 02325 1 K -08316 = ー◆ 1 K -12125 1 ト 06078 ◆、 1 P -00090 ◆・ 1 M-11009 を 1 K -06791 ◆、 0 1 K -09871 ◆・ 1 K -06779 1 P -06357 ◆・ 0 1 P -07240 ◆、 1 M -09252 ◆、 1 ト 06218 1 P -09013 1 P -08671 2 P -03620 2 R -07956 く 1 * b く 8 R -25331 3 R -25103 1 P -09257 く 1 C -05159 1 C -08933 1 C -08932 1 C -08934 く 1 C -08916 1 P -10197 1 M -01801 1 K -05148 く GPIO の一部では 12C 、 SPI 、 UART 表 1 部品表 水色の部品が入った「電子工作キット」をラズバイマガジンのサイト「 http://itpro.nikkeibp.co.jp/linux/ras といった機能を利用することもで pi/ 」、秋月電子通商の店舗とサイト「 http://akizukidenshi.com/catalog/g/gK-11419 / 」で購入できる。価 格は 5400 円。 LED や抵抗など安価な製品は実際に使う数より少し多めに入っている。通販コード「ト 11655 」 き、切り替えて使います。切り替え の製品の URL は「 http://akizukidenshi.com/catalog/g/gl-1 1655 / 」になる。 るには、メニューの「設定」 - 「 Ras わ 赤色 LED 0SDR5113A ( 直径 5mm ) pberryPi の設定」を起動し、「イ 26 黄緑色 LED 0SNG5113A ( 直径 5mm ) ンターフェイス」タブにある「 12C 」 27 黄色 LED 0SB56A511 IA ( 直径 5mm ) フルカラー LED 0STA5131A ( 直径 5mm ) 2 「 SPI 」「シリアル」を「有効」に設 トランジスタ 2SC1815Y * a 定します ( 図 2 ) 。ただし、同じ端 す 放熱基板付クールホワイト LED XPGWHT R4 パワ—MOSFET 2SK4017 子を GPIO として利用したい場合は 4 ブレッドボード用トグルスイッチ D 旧化キット 「無効」のままにしておきます。必 5 ケース入りリードスイッチ ( 磁石付セット ) MC-14AG 6 Pmod KYPD Pmod16 キー / ヾッド 要になったときに有効にするように 30 ダイオード 1SS178 しましよう。 ボリューム 10k Q AD コンバーター MCP3002 4 桁緑色 7 セグメント LED ( コロン付 ) カソードコモン 0SL40391 8 プログラムを実行する 16X8LED マトリクスドライバーモジュール HT16K33 12C 電圧レベル変換モジュール PCA9306 電子バーツを接続できたら制御 9 フルカラードットマトリクス LE D 16 x 32 ドット 用のプログラムを実行します。 OS は DC モーター RE -280RA -2865 2017 年 8 月 18 日時点で最新の「 Rasp ダイオード 1 N4007 11 ステッピング & DC モータードライバモジュール DRV8835 bian Stretch 」 (NOOBS は 2.4.3 ) を 12 マイクロサーポ SG92R 使います ( インストール方法は p. 132 バイボーラーステッピングモーター SM-42BYGOII ソレノイド 5V ZHO -0420S -05A4.5 参照 ) 。実行するためにいくつかの フォトトランジスタ NJL7502L パッケージを導入しておく必要があ 卩 C 対応力ラーセンサーモジュール S11059-02DT 高精度温湿度センサーモジュールキット SHT31 17 ります。端末アプリを起動してから 大気圧センサーモジュール MPL1115A1 18 以下のように実行してインストール コンデンサー 0.1 u F 35 19 超音波距離センサー HC-SR04 します。 20 3 軸加速度センサーモジュール LlS3DH 21 3 軸地磁気センサーモジュール HMC5883L 3 軸ジャイロセンサーモジュール L3GD20 22 ロータリーエンコーダー EC12E2420801 23 ロータリーエンコーダー D 旧化基板 RECNV-2 GPS モジュール GMS6-CR6 24 音声合成 LSI ATP3012F5-PU 25 37 スピーカー WAY50-1-8F32P -01 インストールが完了したら、読者 38 水晶発振器 16MHz HUSG -16.000-20 コンデンサー 22pF 限定サイトからプログラムをダウン 99 抵抗 10C (IW) ロードしプログラムを実行します。 99 抵抗 100C 、 120C 、 150C 、 300C 、 1kQ 、 2kQ 、 5.1kQ 、 2()kQ ( 1 / 4W ) 99 抵抗 330C ( 1 / 4W ) 実行を端末アプリから以下のように 99 抵抗 10kQ ( 1 / 4W ) 入力します。 ブレッドボード BB -102 100 ジャンバー線 ( オスーオス ) セット ( 60 本以上 ) ジャンバー線 ( オスーメス ) ( 15cm 、赤 ) 10 本セット ジャンバー線 ( オスーメス ) ( 15cm 、黒 ) 10 本セット ジャンバー線 ( オスーメス ) ( 15cm 、青 ) 10 本セット コネクタ付コード ( みの虫 x ジャンバー線 ) 网 電池ポックス単 3X2 本 スイッチング AD アダブター 5V2A ブレッドボード用 DC ジャック DIP 化キット *a 電子工作キットに入っているトランジスタは 1 個。 * b それぞれ R -251 01 、 R -25121 、 R -251 51 、日 -25301 、 R -25102 、 R -25202 、 R -25512 、 R-03940 【号 個数 通販コード $ sudo apt-get update $ s u d 0 a p t - g e t i n s t a ⅱ 1 i b i 2 c - d e v ロ $ sudo pip3 install wiringpi ロ $ sudO python3 プログラム名口 例えば、 p. 16 で説明する LED の 点灯プログラムであれば、以下のよ うに実行します。 $ sudO python3 led—on . py ラスパイマガジン 2011.10
超小犁メプでプラレールの車窓を撮を Ⅲ日日ⅢⅢⅢⅢ日日日ⅢⅢⅢⅢⅡⅡⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅡⅢⅡⅢⅱ日ⅢⅢⅢⅢⅢ日ⅢⅢⅢⅢⅡⅢⅱⅢⅡⅡⅢⅢⅢⅢⅡⅡⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢ日ⅱⅢⅢⅢ日ⅢⅢⅡⅡⅢⅢⅢⅱ日日日日ⅢⅡⅡ日ⅡⅢⅢⅢ日 ラズ應イの應ワーップで画像や理量も 最後に、ラズバイならではの応用 テクニックを紹介します。ラズバイ Zero を積んでいるので、プログラム の追加で機能をアップできるほか、 最近登場したラズバイ Zero W への 換装も可能です。 カメラとラズバイを使って、画像 処理による走行制御にチャレンジ してみましよう。カメラはほかのセ ンサーに比べ、取れる情報量が多 く、面白い制御に使えます。 では緑色と赤色の旗を信号として先 頭車に見せることで、走行と停止を 切り替えてみます。 画像処理はプログラムを一から 作ろうとすると大変ですが、よく使 われる処理はライプラリが整備され ています。有名なライプラリとして 「 OpenCV 」があり、ラズバイでも 使えます。 OpenCV のインストール 画像処理を始めるために、 Open CV と OpenCV を Python から呼び出 すライプラリを導入します。以下の コマンドでインストールできます。 ミロ pen 〔 V を使って ミ信号を認識 し電車を発進させ、赤の旗を検知し たら停止させるプログラムを作って みます。処理の流れを図 1 に示しま す。赤と緑を狙って 2 値化をし、 1 と判定された面積が 10 % 以上なら旗 ありとします。旗に応じて GPIO 経 由でモーターを制御します。 Pyth on プログラム「 placon_dist. py 」は しました。 た画面上の面積です。面積を求める セルの数が、しきい値内と判定され 出力画像の 255 となっているピク とする白黒画像を出力します。 とし、範囲外のピクセルを 0 ( 黒 ) に含まれるピクセルの値を 255 ( 白 ) 値・最小値を指定すると、その範囲 この関数は H 、 S 、 V それぞれの最大 には cv2. inRange 関数を用います。 範囲に含まれるか判定します。これ クセルに対して、 H 、 S 、 V が所定の 2 値化では画像の一つひとつのピ きます。 の変換も cv2. cvtColor 関数ーっでで やすくします。 OpenCV を使えばこ ことで赤や緑といった色として扱い へ変換しています。 HSV に変換する 画像の色空間を RGB から HSV* 1 取り込みます。 OpenCV の video. read 関数で画像を に説明します。カメラから画像は、 Python プログラムについて簡単 要ないため、速度を優先しました。 ります。処理内容的に高い画質は必 は小さいほどフレームレートが上が である 320 x 200 としました。画像 USB - EVB が出力する最小のサイズ 取得する画像サイズは IU233N 初期化 カメラ画像を取得 HSV に変換 モーターを 動かす 図 1 処理の流れ 緑で 2 値化 緑ピクセル をカウント 緑旗の 判定 赤で 2 値イヒ 赤ピクセル をカウント 赤旗の N 判定 モーターを 止める $ s u d 0 a p t - g et $ s u d 0 a pt ー g e t c v - d e v ロ $ sud0 apt-get pencv ロ 画像処理の流れ update ロ install libopen install python-o 緑の旗を検知したらモーターを回 4 ため、単純に値が 255 であるピクセ ル数を数えます。これらの処理を赤 と緑それぞれで行います。 カウントで得た赤と緑のピクセル 数がしきい値以上なら、旗があると 判定します。しきい値は画面全体の ピクセル数の 10 % としました。 このように単純な 2 値化と面積算 出を用いているため、誤検知が多く あります。例えば光源の影響で画面 全体が緑に近づくと、緑旗として認 識してしまいます。 * 1 HSV 色空間は、色を色相 ( Hue ) 、彩度 (Saturation) 、明度 (value) の三つの値で 表現します。色相は、赤や青といった色の種 類を表現します。彩度は色の鮮やかさで、値 が低いと色が抜けて白や灰色に収束します。 明度はそのまま明るさで、値が高いと白、低い と黒になります。 HSV 色空間は RGB 色空間 と比べて、赤い・青い、明るい・暗いといったよ り人の直観に近いモデルです。 17j い 93
ンストールしておく必要がある。中 でも LLVM はインストール時に Ubu ntu のバージョンが依存しているた め注意してほしい。ビルドに必要な パッケージをインストールできたら ELL 本体を GitHub からクローンし てビルドする。 ELL のビルドには時間がかかるた め、 j オプションで並列に実行する。 何並列にするかは読者のマシンスペ ックに合わせて調整してほしい。 E L L のリポジトリーをクローン $ git clone https://github. com /Microsoft/ELL . git ロ $ c d E L L ロ $ mkd i r bui 1 d $ cd bui 1 d ロ . は親ディレクトリーを表しているの で必ず付ける $ cma ke . . ELL 本体のビルド ( 4 並列 ) $ ma ke - j 4 ロ E L L Py t h o n B i n d i n g のビルド ( 仮想 環境のアクティベートが必須 ) $ make _ELL_python { ELL のディレクトリー } は clone した ELL のルートディレクトリーに置き換える $ cd { ELL のティレクトリ—)/bui1d/tutoria1s/vision/gettingStarted ロ モデルデータのダウンロード $ curl - 0 https://raw. githubusercontent. com/pjreddie/darknet/master/c fg/darknet . cfg ロ $ curl - 0 https://pjreddie. com/media/files/darknet.weights デモの実行 ( 2 番目のカメラを使う場合は python darknetDemo. py 1 ) $ python darknetDemo . py ロ 図 3 機械学習のモデル「 Da 「 knet 」の実行方法 tO 0 a. CO 0 a. っこ a. 0 a. 3 一 0 イ 1 X つ」 3 っこ 0 つな 4- ( ノ / 2 X っ 1 , X 0 X ( う′ 0 っム 0 X 2 5 X X 0 0 X X つなう 4 4 0 0 0 1 1 5 X X X / 0 つ」 X X 「こうに ( > イよ - 6 「ー 1 ム 4 4 0 0 「ヤ」 4 っム X X X •X 」 X X ) X X イよ ・ー「日っイよ 3 - う「こョ 1 亠 3 マー ro 4 C C 4 よ ß4JO 0 0 0 0 0 0 0 、ノ C 0 0 0 0 0 0 0 X 、 ) V 0 、 - 0 a. 0 Q. 0 CI 0 a. 0 a. 0 0 E 1 し C X C X C X C X C X C X C C QJ 9 0 0 0 0 3 0 0 tO 0 0 > 0 図 4 ビルド中に機械学習のモデルテータがロードされる 了するとウインドウが立 ち上がり、カメラに写っ 物体を識別してみる た画像の物体を識別する あらかじめ用意されている Pyth ことができる。カメラに 物体を写すと、上部の緑 on 用のチュートリアルは、 Darknet と Cognitive Toolkit の 2 種類があ 色のバーに識別した物体 の名前とその確率が表示 り、どちらも Web カメラを使った 物体識別である。 される。図 5 に示すよう Darknet は Joseph Redmon 氏が に、コーヒーマグなどが 公開した、高速に動作する CNN ( 畳 正しく識別された。 み込みニューラルネットワーク ) の 図 5 物体を識別したところ モデルだ。一方の Cognitive Toolkit 今後もどんどん進化 コーヒーマグと正しく識別されている。 今回は、 Microsoft 社か は、 Microsoft 社が公開しているディ ら新たに公開された、インターネッ 学習の能力をインターネット接続な ープラーニング用ライプラリ CNTK ト接続なしに機械学習を実行する を用いたモデルである。 しに利用できるようになる可能性が 筆者の環境では Darknet のチュー ことができるライプラリである ELL 高し、。 のビルドと、 2 種類の物体識別チュ トリアルは動作したが、 Cognitive ELL の GitHub にも「これは進行 ートリアルを紹介した。 TooIkit の方は動作しなかった。そ 中のプロジェクトであり、 API を含 のため、ここでは Darknet の実行方 残念ながら、今回は Raspberry Pi めて、頻繁に変更される見込み」と では実行することができなかった。 法を図 3 に紹介する。 あった。このライプラリはまだまだ しかし将来的には、 Raspberry Pi の 進化していくだろう。 デモを実行するとモデルデータの ような低スペックなマシンでも機械 00T ALGYAN 栂井良太 ) ロードが始まる ( 図 4 ) 。ロードが完 coffee mug ( 75 % ) ・ Mi ( 「 09 ラスパイマガジン 2017.10
1 ト接続す町を Windows パソ戸ツからリモー W ⅲ dows パソコンからリモート接続するための環境を整えましよう。パソコン側ですべて操作できるので便利で す。 Windows パソコンには、あらかじめ SSH クライアントソフトをインストールしておいてください。ここでは 「 TeraTerm 」を利用した手順を説明します。 Web ページ「 https://ja.osdn.net/pr0jects/ttssh2/releases/」から ダウンロードできます。なお、 SSH サーバーを使うときは、初期パスワードを必す変更してください。 2017 年 5 月 には、初期パスワードを変更していないラズバイをターゲットにしたコンピューターウイルスが発見されました。 1 ラスヾイで SSH サ = ハ : 三を起動する ・ 0 に■ 0 ①クリック オフィス いユアクセサリ パスワードの変更 R EO 響新の設定 、ローカライせーション パフォーマンス パスワードを変更 インターフェイス : システム : パスワード - : ホスト名 - 自動ログイン : ネットワークプート 有効 Splash Screen SSH クライアントから、このホスト 名でもアクセス可能 (C) 参照 ) 3 クリック Current password. 新しいパスワードの入力 新しいバスワードを再入力・ キャンセル ( C ) 論 sp わ e 町屮 スクトップ / 可ュ・一ザとしてログインする ネットワークを待つ 無効 Set Resolutjon , 無効 キャンセル ( C ) Add/RemoveSoftware 、第 : Appearance setttngs Audio Devtce setttngs 旧し 3 の設定 ツ Main M 日 1 し Editor Mozc の毅定 OK ( 0 ) OK ( 0 ) ④バスワード を変更 クリック 3 クリック に能町 Pi の震定 ②「設定」 - 「 Raspberry Pi の設定」 0 クリック をクリック ・。保■ 0 図 pi@虧”ル ~ プログラミング オフィス インターネット 」アクセサリ ! Run キーポードとマウス : 入力メソッド Raspberry の設定 Shutdown options ーインタ ーフェイス システム 0 クリック ②クリック 0 クリック ェローカライゼ パフォーマンス ーショイ」 、無効 有効 し無効 ・有効 , 有効 ・無効 ー - 有効 ・無効 ・無効 - 有効 ・無効 ' カメラ : SSH. Shutdown Reboot Logout : SPI: ・ t2C : シリアル . : 1 ・ W げ e - 三リモート GPIO : を h down.. OK ( 0 ) キャン 0 * ↑↓剛巨勺 1541 会 曲 0 : Configured 192 : 1 田 10 : 5 = iethO: CO 9 240 し 102040028d8 : dcdf : 82a929d 、 wtanO: Disassociated from NNW ・ testnet-bg Window ヾソコンで丁 e 囮 Te 「 m を使てリモト接続する 表示される旧アドレスをメモ マウスのカーソルを置く アクセス 1 回目は警告が出る メモした旧アドレスを設定。なお、米 App 厄社の「 iT unes 」をインストールすれば ( 内蔵の名前解決ソフト セキュリティ警告 が動くため ) 、「 raspberrypi 」 ocalJ とも指定できる = , ・局山うのこの木ストを追加 , て読行す 5 と冫蛔わらこの 朝ユーサー名は「 pi 」、バスワードは 上記の手順で変更したものを設定 T ぎ 0 な新しい ◎ TCP/LP ホスト ( つ・一 曰ヒストリ ( サービス OT 司 net ◎ SH ss 印ミージョン ( ⅵ 0 その他 プロトコル ( C). UNSPEC ロエージェント転送す 0 ) ◎プレインパスワードを使メ L) 0 A / ßA / ECCSA / ED25 引を使う 市。 SSHI ) を使う サーバ 1 の木スト指絞 指絞担ッシュアルゴ丿ズム OMD5 ◎ SHA256 SHA2 PdX & 茎 : 2 ・ E / 鹵日ト F 日 E 上′ / 50 物卩 xKv2P 馮 3 口一 11 ルのユーサ名 ( 0 チャレこレスポンスを使メキーポードインタラクテイゴ XO ) S 0 . 響十 0 ・第・ ンリアル ( 0 OK キャン匂レヘルプ ( 印 曰このホストを k ー局ストに追加す A ) ⑩クリック ⑩クリック クリック 接斤 ( D ) OK 接ー翹笊 D ) 行 ( C ) イマカシン 142
「ライントレ = ス』に挑戦しよプ、センサー補正して行き先を決定 を イ 1 #!/usr/bin/env python 2 # - ☆ー c od i n g : u t f - 8 - ☆ - 3 import time # sleep のためのモジュールをインポート 6 def get_line_sensor_data(): 11 def set_motor_speed(left, right): ( 略 ) 1 7 def set_motor_power(mode): ( 略 ) 21 # スイッチの入力データを返す関数を用意 22 def get_switch_input(swnum): 23 with open( ・ /dev/rtswitch ・ + str(swnum), ・ r ・ ) as f: 24 ret u r n n 0 t ( i n t ( f . re a d 1 i n e ( ) ) ) 25 スは A4 用紙 4 枚で構成しています。 2 6 i f n a m e ma 1 n このコースのデータは次の URL で 7 while not get_switch_input(0) # SWO が押されるまで待機 28 print("ready") PDF ファイルで公開しているので 2 9 ti me. s ] eep ( 0 . 1 ) ダウンロードし、 A4 用紙に印刷し 30 set_motor—power(True) ましよう (http ・ //bit. ly/2uMKbjr) 。 31 while not get_switch_input(l): # SWI が押されたら止める 32 left_end, left, right, right_end get_line_sensor_data() 図 8 の完成図を見ながらセロハン 33 print(left, right) テープなどの透明なテープでつなぎ 34 d i f f (left r i g h t ) / 1 0 3 5 p r i n t ( d i ff ) 合わせます。白地に 15mm 程度の太 36 set—m0tor—speed(100 + diff, 100-diff) さの黒い線が引いてあるコースであ 37 t i me. 引 eep ( 0.1 ) # 0.1 秒ごとにセンサー値とモーターの回転速度を更新 38 set—motor—power(false) ればオリジナルのコースを用意して 図 9 raspimouse IinefoIIower3. py も構いません。黒い線が細すぎても 太すぎてもうまくトレースができな いので注意してください。 テキストエデイタを使って図 9 のコ が、 27 行目 ~ 29 行目で「 SW() 」と 今まで AC アダブターを接続して ドを「 raspimouse—IinefoIIower3. 書かれているスイッチが押されるま 操作してきましたが、この後は電池 py 」として保存します。保存場所は での間、「 ready 」と表示し続けるよ に切り替えます。次のコマンドでラ どこでも構いません。 うにしています。 SWO が押される ズバイの電源をオフにします。 と、 30 行目でステッピングモーター 本体のスイッチで走行開始 / 停止 の電源が入ります。 31 ~ 37 行目で $ sudO poweroff ロ ラズバイマウスをコース上で走ら 「 SWI 」と書かれているスイッチが せる際、ディスプレイやキーポード 押されるまでの間トレースするよう コマンドを実行したらラズバイ本 を Raspberry Pi から外さないとい にしています。 SWI が押された後、 体の ACT と書かれた緑の LED が点 けません。キーポードの代わりにラ 38 行目ではステッピングモーターの 滅しなくなるまで待ちます。この段 ズバイマウスのスイッチを使ってラ 電源をオフにしています。 階でシャットダウンができています ズバイマウスの走行開始、停止がで ので、 AC アダブターと電池を入れ きるようにしましよう。 センサーの値で向きを変える 替えます。起動後はデバイスドラ raspimouse_linefollower3. py で 34 、 36 行目がトレースする際に 1 イバのインストールが必要になりま はスイッチの状態を調べる関数 番重要な部分です。この部分につい す。図 4 の insmod コマンドで「デ 「 get-switch-input 」を用意しまし て詳しく説明します。 バイスドライバをカーネルに組み込 た。スイッチの番号 ( 0 ~ 2 の三つ ) 図 1 0 に、センサーとコースの位 む」ところから後の手順を実行し、 を引数で指定すると、指定した番号 置関係を示します。水平な面の上に 再インストールしましよう。 のスイッチの状態が返されます。ス コースとラズバイマウスを設置し、 先ほどまでの イッチが押されていれば True 、押 真上から見た状態です。今回使用し ・センサー値を取得するコード されていなければ False です。 ているセンサーはコース上の黒い部 ・モーターを制御するコード 先ほどはコードを実行するとす 分の上でセンサー値が小さくなり、 を組み合わせてトレースさせます。 ぐに走り出すようになっていました 白い部分の上でセンサー値が大きく 図 8 サンプルコース ラスパイマガジ - 2017.10
vO.t ( 0 . 28 お Details a the M-JPEG - 田 me 「 C89 加 ons ・ nd Y00 m•v 、レー m な・・ 0 、・ nd 【 0 れを・ 0 を . 「一“代・編れーレ“ m の 0 ・「 f0 「凵。し置・リ vc : 。 mp ト、・・ m 亂 - 秘 8- “ p しル ⅵ靆ツしれ . 1 ト・ H110 ′・ 00 ・一を ( 00 、ー新・ 引、地 0 にん′・を。 m ! 1 ・ 0 ・、れ四し 1 。 d メ町 4 About せ examples #!/usr/bin/env python import cgi import time import pickle import motor—ctl as m2c from subprocess import call MOTO_FILE DUMP_FILE INTERVAL DUTY HOME DUTY_MIN DUTY_MAX P W M RA N G E PWM P I N PWM_CLOCK = 375 . /moto_status . dump' . /servo—pos . dump' 2 123 1 0 2 4 = 41 図 6 MJPG streame 「の画面が出れば設定 完了 PC で Web プラウザーを開いて、 正常に動いているか確認します。以 下の URL を入力してください。 xxx. xxx. xxx. xxx はラズバイ Zero に割り 当てられて IP アドレスです。ポート 番号には 8080 を指定します。 http://xxx . xxx . xxx . XXX:8080 プラウザーに MJPG streamer の 画面が出れば設定は成功です ( 図 6 ) 。 サ = ボモーら一を動かす かじめインストールしておく必要が イルするため「 python-dev 」をあら python のインタフェースをコンパ ます。 wiringpi はインストール時に ので、「 wiringpi 」を使うことにし ーポモーターを動かそうと思います になります。今回は python からサ かすには GPIO のライプラリが必要 り掛かります。サーポモーターを動 たので、サーボモーターの制御に取 ラズバイの基本的な準備が終わっ あります。 ラスパイマガジン 2017.10 d e v $ sudO apt-get install python- print print print print print print print form V a ] u e "Content-type: text/html\n\n" form . getvalue('duty ・ ) cgi . FieIdStorage() " C 0 N T RO L I N T E RV A L : % d く b r / > " % I N T E RV A L "DUTY MIN (Range): %d く br/>" % DUTY_MIN "DUTY MAX (Range): %d く br/>" % DUTY_MAX " く h3>SETTINGS く /h3>" " く h 2 > S E R V 0 M 0 N I T 0 R く / h 2 > " " く html> く body>" form . getvalue('control') control print " く h3>SERV0 CONTROL く /h3〉" print "CONTROL DIRECTION: %s く br/>" % value def save—servo—pos(d): f i 1 e ( D U M P_ F I L E , f p i c kl e . d ump ( d , f ) f . c 1 os e ( ) く略 > #!/usr/bin/env python + b つ from subprocess import call d e f f u ⅱ ( ) : c a 1 1 ( ド g p i C T R L P I N ca 1 1 ( ド gp i 0 ・ ca 1 1 ( ド gpi def stop(): 'mode' s t r ( CT R L_P I N ) , u t 勹 ) s t r ( C T R L_P I N ) , str(CTRL_PIN), 切勹 ) 図 7 「 servctrl. py 」 ( 上 ) と「 motor-ctl.py 」 ( 下 ) python によるモーター制御ルーチン。ソース全体は P. 146 に示す読者限定サイトに用意した。 $ s u d 0 p i p i n s t a ⅱ w i r i n g p i ロ 今回のサーボモーターを動かす には 20 ミリ秒、すなわち 50Hz の パルスを作る必要があります。ラ ズバイ Zero のシステムクロックが 19.2MHz ですので、それを分周して 作ります。 PWM 周波数は分周の CL OCK 値と DUTY 比を指定するため の RANGE 値で求まります。サーポ モーターの仕様を確認すると信号周 期は 15 ~ 20 ミリ秒ですので、計算
水こほれないお盆を作うプ サポターて 1 頃を補 case 2 CUI の場合は、次のコマンドで設 られます。角度の導き方については、 定ツールを開きます。カーソルキーで この後説明します。 「 5 lnterfacing Options 」 - 「 P5 12C 」 サーボは決まった角度まで回転 を選んで、「 Would you like ARM 12C interface to be enabled? 」という 加速度センサーで調べた傾きに合 画面で「はい」、次の画面で「了解」 わせて、その傾きを打ち消すようにト レイを傾かせるのがサーボです。サー を選んでください。 ポは特定の角度まで回転し、その角 度を保っことができるモーターです。 サーポはモーターに加えて、角度 加速度センサーをつな 0 を検知するエンコーダーとモーターを いで傾きを求めよう 動かすための制御回路から成ってい ます。信号線から角度が入力されると 加速度センサーを実際に動作させ 図 3 加速度センサーを Raspbe Pi へ接続 てみましよう。 ェンコーダーで現在の角度を確認し、 今回使用するのは、米 InvenSense 通常は 68 番が MPU -6050 の 12C ア モーターを回転させます。 サーボは工業用など、さまざまな 社の 3 軸加速度・ジャイロセンサーの ドレスです。 「 MPU -6050 」を搭載しているポード 用途で利用されています。その中で、 です。ジャイロセンサーは、どの方向 デモソフトで動作を実感する ラジコンや小型ロポットといったホビ に回転しているかという角速度を調 ー用途の製品では、 DC ( 直流 ) モー 続いて MPU -6050 へ実際にアクセ ターで回転させ、現在の角度をポテ べるもので、 MPU -6050 はその機能も スしてみましよう。まず、 richardghir 持っていますが、今回は利用しませ st という方が「 PiBits 」というプロジェ ンショメーターで計測するのが一般 ん * 1 的です。ポテンショメーターとは角度 クトで公開している MP し 6050 のデ により抵抗値が変化する素子で、ポ MPU -6050 はフラットパッケージと モプログラム「 MPU6050-Pi-Demo 」 いう小さな部品で、基板の表面に自 リュームなどとも呼ばれます。 を動かします。このプログラムでは、 分でハンダ付けをするのは技術が必 MPU -6050 の角度をデスクトップ画 Raspberry Pi の準備をしよう 要です。そこで MPU -6050 を搭載済 面上のフレーム画像で確認できます。 センサーやサーポをつなぐ前に Ra みのボードを利用するのがよいでし ます MPU6050-Pi-Demo のビルド よう。例えば Amazon. co. jp で「 MPU- ( 構築 ) には「 gtkmm-3.0 」が必要な spberry Pi の準備をしておきます 6050 」で検索すると、そうしたボード ので次のようにインストールします。 ( p. 50 に示すように NOOBS 2.42 を利 はたくさん出てきます。筆者はその中 用 ) 。ますインストールされているソフ * 1 ジャイロセンサーで角度変化を足し合わ で安価だった 210 円の製品を利用しま トを最新の状態に更新しておきます。 せた積分値を求めることで、角度の計測もで した ( 図 2 ) 。 きます。しかしジャイロセンサーでは、静止して いる状態であっても時間とともに標準点が変 MPU -6050 は 12C に対応していま $ sudO apt-get update ロ 化してしまう特性があるため、適当な補正をか $ sudO apt-get upgrade ロ す。このため Raspberry Pi の SCL 、 けないと値がだんだんと大きくなってしまいま す。そこで、ここでは比較的簡単に計測できる SDA 、 + 3.3V 、 GND の 4 本を接続す 加速度センサーを用いて角度を計測します。 るだけで動作します ( 図 3 ) 。 12C インタフェースを利用するに * 2 12C のチャンネル番号は Raspberry Pi のモデルによって変わります。 Pi 1 のリビジ 接続したら、 MPU -6050 に割り当 は、 Raspberry Pi の設定を変更しま ョン 1 では「 0 」、それ以降のモデルでは「 1 」で てられている 12C のアドレスを調べま す。 p. 4~8 の Case 1 などで実行済み す。リビジョン 1 は 2012 年夏以前に生産され たモデルなので、現在販売されているモデル す。以下のように実行すると表示され の場合は次の作業は不要です。 ではすべて 1 になります。ちなみにリビジョンは ます。「 1 」は 12C のチャンネル番号で GUI の場合は Menu から「 Raspbe 以下のように調べられます。 す * 2 。 rryPi の設定」を開き、「インターフ $ sudO python ロ ェイス」タブにある「 12C 」を「有効」 > > > import RPi . GPIO as GPIO > > > G P 1 0 . R P I _R E V I S 10 N ロ にします。 図 2 3 軸加速 度・ジャイロセ ンサー「 MPU- 6050 」搭載のポ 基盤の左端に加速 度を検知する軸が 記載されている。 $ s ud 0 r a s p i ー c 0 n f i g ロ Model B + VI 2 0 。レし行 Pi2014 $ i2cdetect -y 1 ロ 0 ラスパイマガジン 2011.10 リ付録
読者限定サイト 本書で紹介するプログラムなどの入手方法 なお収録されている独自のプログラム、映像、データ等の一部また 本号の Web ページ「 http://itpro.nikkeibp. CO. jp/atcl/mag/14/ は全部を、日経 BP 社に無断で複製、転載、配信等をすること、 2 カ 236763 / 081600039 / 」 ( 短縮 URL : http://nkbp.jp/2uHCG2d) 所以上からアクセス可能な環境で使用すること、その他日経 BP 社 にある「読者限定サイト」にアクセスしてください。認証画面が現れ の権利を侵害する一切の行為を禁じます。 たら、ユーサー名「 linux 」、バスワード「 download 」を入力すると、ダ ウンロードファイルの一覧が表示されます。 本誌で利用する NOOBS(Raspbian) のバージョンについて 版 NOOBS2.4.2 (Raspbian Jessie) で動作を確かめた記事につ ラスパイ OS 「 Raspbian 」のインストールツール「 NOOBS 」 いては、新版 2.4.3 でも同様に動作する可能性が高いですが、一部 は 2017 年 8 月 17 日に新版 2.4.3 にバージョンアップされ、併せて うまく動作しない可能性があります。 Raspbian が、 Raspbian Jessie (Debian 8 べース ) から Raspbian NOOBS2.42 と、 NOOBS2.4.3 を使った OS のインストール方法 stretch (Debian 9 べース ) にバーションアップされました。 は p. 132 で解説しています。 本誌では、記事によって利用しているバージョンが異なります。旧 ◆初出の一覧 ( 本書の以下の記事は、日経 Linux の記事を加筆修正したものです ) ラスパイレポート ( p. 8 ~ 11 ) 日経 Linux 2017 年 8 、 9 月号レポート 特集 2Pa 1 、 3 、 4 日経 Linux2017 年 8 月号特集 2 講座「 Raspberry Pi で楽しむ PC オーディオ」 日経 Linux 2017 年 3 、 4 月号応用講座 「ラスパイと周辺機材の買い方から OS 導入方法まで」 日経 Linux2016 年 5 月号特集 2 日経 Linux2017 年 5 月号特集 2 「ラズバイ超入門」第 2 章 「 600 円で始めるラズ / ヾイ超入門」第 1 部 Part2 本書に登場する会社名、製品名、サービス名は、各社の登録商標または商標です。 Raspberry Pi is a trademark Of the Raspberry Pi Foundation. 日経 BP パソコンベストムック ラズバイマガジン 2017 年 1 。月号 2017 年 1 0 月 1 8 日発行 発行人・南浦淳之 編集長・安東一真 編集・加藤慶信、武部健一 日経 Linux 編集長・岡地伸晃 日経ソフトウェア編集長・久保田 ) 編集協力・麻生ニ郎 表紙テサイン・制作・マップス 広告部長・中田知之 次長・篠村肇 販売部長・吉村隆之 販売・室井清孝 発行・日経 BP 社 Nikkei Business Publications,lnc. 発売・日経 BP マーケティング 〒 105 ー 8308 東京都港区虎ノ門 4 丁目 3 番 12 号 URL http://ec.nikkeibp ℃ 0. jp/QA/ ◎日経 BP 社 2017 編集後記 ・今号は特集 1 ~ 5 と講座 2 本と、オリジナ ル記事が満載です。特集 1 では、これまで取 り上げていなかった新しい電子バーツを極 力選びました。特集 2 のラズバイ風ボードも 選択肢が増えてきて楽しみですね。ソフト面 の充実さで見るとラズバイが圧倒しているわ けですが、いろんな八一ドウェアを触るのは 楽しいものです。 本誌と日経 Linux 、日経ソフトウェアが開 催する「みんなのラズバイコンテスト」の応 募締め切りは 9 月 21 日です。ぜひ、楽しい 作品・アイテアを応募してください。詳細は 公式サイト「 http://coin.nikkeibp ℃ 0. jp/ coin/itpro-s/seminar/ 凵 N/rpic/ 」を ( 安東 ) 覧ください。 訂正・補足情報について 本誌の訂正・補足情報については本号 Web ページ「 http://itpro.nikkeibp. CO. jp/ atcl/mag / 14 / 236763 / 081600039 / 」 ( 短縮 URL : http://nkbp.jp/2uHCG2d) の「記事の訂正・補足」をこ覧ください。間 違いが見つかった場合には、こちらで詳しく 報告します。 出口 ご注意 本書の無断複写・複製 ( コピー等 ) は著作権法上の例外を除き、 禁じられています。購入者以外の第三者による電子データ化は、 私的使用を含め一切認められておりません。詳しくは当社著作権 窓口 ( 電話 03 811 8 ) へご照会ください。 日経 BP 社
F*Linux 日経 BP パソコンベストムック ロすぐに使いこなせる 人気のリ bun 蓄ⅵ の人にや はし 0 て ・価格 : 本体 1700 円 + 税 編集 : 日経 Linux A4 変型判 172 ページ ISBN: 978-4-8222-5938-9 発行 : 日経 BP 社 発売 : 日経 BP マーケティング 商品番号 : 263210 2017 年 7 月 28 日発売 0 1 付 EDVD 、具気あ町 hux 龜 bu 加 1 ス 04 すぐに試せる ! 古いパソコンが復活する ! Windows の購入不要 ! Linux は、無料で使える OS です。本書で紹介する人気 Linux の「 lJbuntu 」は、 Windows のように扱いやすいデスクトップ画面を備え ています。オフィスやマルチメディアプレーヤー、フォトレタッチなど、パソコンに必要なアプリケーションがすべてそろっています。それた けでなく、動作が軽い Linux もあり、 Vista / XP パソコンの OS を置き換えられます。本書では、 2017 年 4 月にリリースされた「 lJbuntu 17.04 」を基にして、 Linux の概要、インストールや基本操作、豊富なアプリケーションの利用法などを分かりやすく解説します。 すぐに使いこなせる % 入門 Ub び n 加 17 4 対応版 最新版収録 全国の書店で好評発売中 ! インターネットでもお買い求めいたたけます。 http://amazon.jP/dP撝822259382/ ・付 "DVD ・人・気・のし u 滝 、動黝 1 嶐 04 : し inux の特徴を理解する 第 1 章 Ubuntu の基本操作を押さえる 第 2 章 豊富なフリーソフトを知る 第 3 章 コマンド操作にチャレンジする 第 4 章 旧型のパソコンを復活させる 第 5 章 カメラとハイレゾ再生を極める 第 6 章 使いこなしワザを身に付ける 第 7 章 し inux ディストリビューション図鑑 第 8 章 Windows 上で動く Linux 「 Bash on Windows 」 巻末企画 ※目次は変更になる場合があります。 最新版収録 日当日 p パソコンへストムック B*Linux 編 ハイレリ音再生ー っォトレらッチ RAWø Vista/XP の 古いパソコンが復活 ! データの移行も OK ! 0 円でも高機能 ! 32 のフリーソフト 表計算 C 0 のデータ処理を大紹芥 ・東企画 W 面 s 上で動く Ubuntu % ( ー h 聞獗 00W 引 ・亂ををーー第 00 最新版で 解説 !
500 円台の有機 EL ディスプレイを使う れ - メー . ー亠プ、ル . ノ′コつ Part 2 一 5395 一 5395 1539 の 153 図 1 1 日本語テキストを表示させたところ TrueType ファイルを準備すると日本語も表示できる ( p. 131 の図 12 の実行例 ) 。 ますが、その中に TrueType フォン TrueType フォントも配置すること まとめ トを指定してテキストを描画する機 で ( 今回は Thin ウェイトの Google ラズバイで小型の有機 EL ディス 能が準備されています。 128X64 ピ NotoSans フォントを利用 ) 日本語 プレイを制御することができるよう クセルの広さの画面に TrueType フ の文字列を扱えます ( p. 126 の別掲 になりました。 オントを使って文字列を画像とし 記事「表示モジュールにマッチする 表示面積は広くないものの普通 て展開するのはもったいない気がし フォント」参照 ) 。 の反射式液晶にくらべて輝度が高 ますが、ラズバイ 3 の CPU パワーを また、図 12 ではハードウェアリセ 信じて実際に日本語を表示させて ット用の GPIO ポートを指定してい みました ( 図 1 1 ) 。 ますが、 M096P4W では SSD1306 の 表示のための Python プログラム リセットボートがヘッダーに出てい は図 12 です ( p. 146 に示す読者限定 ません。そこでここでは、使ってい サイトから入手できます ) 。 Python ない GPIO ポートをダミーで指定し プログラムがあるディレクトリ ました。 図 10 有機 EL ディスプレイでのサンプル表示 うまくライブラリのインストールができ、サンプルプログラムを実行すると、 のような画像が表示される ( 写真は exam e / image. py のもの ) 。 * 2 ラズバイにも強い米国の電子部品メー カーです。 https://www.adafruit.com/ * 3 ライブラリだけでなく、コントローラー チップそのもののデータシートも https:// cdn-shop.adafruit.com/datasheets/ SSDI 306. pdf で公開しています。 ジャンバー線をうまく使い分けてすっきりした配線を 本誌やラズ / ヾイマガジンでも、ラズバイで電子工作をする際に はブレッドボードやジャンパー線をよく使います。ハンダ付けす ることなく回路を組んだり、センサーの動作を確認したりできて 便利です。 今回のようなモジュールをつなぐ場合には、中でも両端がメス 端子のメス - メス型ジャンパー線を使うと便利です。ブレッドボ ードなしで直接接続できます。 ジャンパー線といっても実際は「便利な導線」なので、端子 のオス、メスの組み合わせを図 A のようにそろえておくと何かと 便利です。またジャンパー線はショップによって値段のばらっき が多い部品なので、お得なショップでまとめて購入するのがお勧 めです。 メスーメス型 オスーオス型 図 A さまざま なジャンバー線 両端のオスメス形 状が異なるジャン パー線を準備して おくといざという ときに便利だ ( 写真 のジャンパー線は aitendo で入手し オスーメス型 ラスパイマカジン 2011.10 125