両面テープをはがして貼り 付ける ( 強力なので、一度貼 り付けるともうはがせない ) 第、み乎 裏側から差して ハンダ付け 2 こに差す 電池ホルダー 図 3 2525A の組み立て するとよいでしよう。 2525A 本体 平面アンテナ $ dmesg ロ ( 略 ) [ 4455.754215 ] usb 1 - 1 . 4 : new full-speed USB device number 5 using dwc_otg [ 4455.881451 ] usb 1 - 1.4 : New USB device found, idVendor=0403, idProduct=6001 [ 4455.881476 ] usb 1 - 1.4 : New USB device strings: Mfr=1, Product=2, Seria1Number=3 $ sudO apt-get update ロ [ 4455.881494 ] usb 1 - 1 . 4 : Product: MONOSTICK $ sudO apt-get upgrade [ 4455.881511 ] usb 1 - 1 . 4 : Manufacturer: MONOWIRELESS $ rpi-update ロ ( 略 ) [ 4455.939317 ] usb 1 - 1 . 4 : Detected FT232RL [ 4455.940593 ] usb 1 - 1 . 4 : FTDI USB Serial Device converter now attached to ttylJSB() 更新作業が終了したら新しいフ 図 4 USB 型の MONOST ℃ K を認識させたところ ァームウェア ( カーネル ) で稼働さ せるために再起動します。 どでも更新できますが、 Raspberry Pi 用のツールも用意されています。 $ sudo reboot ロ ここでは RaspberryPi 用のツール を使って更新する手順を紹介しま リプート後のカーネルのバー ンヨ す。その後、ファームウェアの設定 ンは、 作業をします。 Raspberry Pi 用のツールは、開 発元のモノワイヤレスの公式サイト (http: 〃 g00. g レ AwgCfJ) に用意さ れています。 Web プラウザーで開 二つのディレクトリーと二つの実 でした。時期によってはより新しい き「 Raspberry Pi 版」の「 jenprog 行ファイル、 README ファイルが カーネルになると思いますが、より & tweusb ユーティリティ」をクリ 入っています。 README にはツー 新しいバージョンなら問題ないでし ックしてダウンロードして「 / 叩 t / ルの詳しい使い方が説明されていて TWELITE/ 」に展開します。 Chro 参考になります。 mium でのダウンロードに失敗する TWE 凵 TE のファームを更新 場合は、次のコマンドを実行してく ラズバイで 2525A を初期設定 2525A 用の最新ファームウェア ださい。 続いて Raspberry Pi に MONOST ( 無線タグアプリ ) は、 2017 年 8 月 ICK と 2525A を接続します。 6 日時点でバージョン 2.02 です。機 Raspberry Pi の USB ポートに 材の入手時期によって異なる場合 MONOSTICK を差すと、「シリア もあるため、ファームウェア更新の ルデバイス」として認識されます。 手順を紹介しておきます。 dmesg コマンドを利用して確認す ファームウェアは W ⅲ dowsPC な ると、図 4 の通り「 /dev/ttyUSB0 」 s p i . t a r . gz ロ これで jenprog というディレクト リー以下にツールが展開されます。 $ cd jenprog ロ jenprog jenprog . src/ README tweusb tweusb . src/ $ u n a m e - r 4 . 9 . 4 0 - v 7 + $ sudO mkdir -p /opt/TWELITE ロ $ cd /opt/TWELITE ロ $ sudO wget https://mono-wirel ess . com/downIoad/SDK/TWESDK 20 1408/jenprog—for_Raspi . tar . gz $ sudO tar xzvf jenprog_for Ra ラスパイマ - ジン 2011.10 特別付録
ラスパイレポート Microsoft 社が機械学習の新ソフト ラズバイなどでオフライン動作 米 Microsoft 社かオフラインで動作する機械学習ライブラリを公開した。 Rasp berry Pi などの非力な組み込み用マシンがターゲットた。 Ubuntu パソコンで動 かしてみると、 USB カメラに写った画像の物体を実際に識別することができた。 「 Darknet 」という畳み込みニューラルネットワークの学習モデルを使った。 ーノレ 米 Microsoft 社は 2017 年 7 月 29 日、 RaspberryPi のような性能の 高くない組み込み機器でも、機械学 習の機能を動かせるライプラリソフ ト「 Embedded Learning Library 」 (ELL) を公開した。 これまでも「 Microsoft Azure 」 などのクラウドサービスをインター $ sudO apt-get install -Y wget ロ Anaconda のダウンロード ネット経由で利用すれば、 Raspber ry Pi のようなマシンでも機械学習 を利用できた。 ELL が違うのは、イ ンターネット接続がない環境でも機 械学習を動かせることだ。 ELL は、 Microsoft 社の GitHub (ht tps.//github.com/Microsoft/ELL) から利用することができ、 Python $ wget https://repo . continuum. io/archive/Anac opencv のインストール ( conda 経由 ) $ s 0 u r c e a c t i v a t e e ⅱロ 仮想環境のアクティベート $ conda create -n ell python=3.4 e Ⅱという名前の PYthon3.4 仮想環境の作成 . /Anaco お nda3-4.4. O-Linux-x86—64. sh ロ Anaconda のインストール $ chmod u + x Anaconda3-4.4. O-Linux-x86 Anaconda に実行権限の付与 0 n d a 3 - 4 . 4 . 0 - L i n u x - X86 ー 64 . s h ロ 64 . s h ロ 図 1 python の仮想環境の構築と OpenCV のインスト $ conda install -c menpo opencv3 = 3 . 2 . 0 ロ $ sudO apt-get install -Y libedit-dev ロ $ sudO apt-get install -Y gcc cmake git ロ ビルドに必要なバッケージのインストール LLVM3.9 のインストール (http://apt 」 lvm. 0「g/ から Ubuntu のバージョンにあったも $ sudO apt-get install -Y libopenmpi-dev ロ $ sud0 apt-get install -Y zlibc zliblg zliblg-dev ロ のをインストールする ) $ sudO apt-add-repository "deb http://apt. llvm. org/xenial/ swig のインストール ( このバッケージはソースからビルドする ) $ sudO apt-get install -Y 11vm-3.9-dev ロ $ sudO apt-get -y update h a i n - xen i a ト 3 . 9 ma i n " ロ llvm-toolc $ wget http://prdownloads . sourceforge. net/swig/swig $ ta r zxvf swi g ー 3 . 0 . 12 . ta r . gz ロ cd swi g ー 3 . 0 . 12 ロ . /configure --without-pcre ロ $ ma ke ロ s u d 0 m a ke i n s t a ⅱ ELL ビルドのための準備 図 2 ラスパイマカジン 2017.10 - 3 . 0 . 12 . ta r . gz ロ を用いて画像を識別するチュートリ アルも用意されている。 ただし筆者が試したところ、 Ras のようにさまざまなパッケージをイ ELL をビルドするためには、図 2 プできたら ELL をビルドしよう。 Python の仮想環境をセットアッ ELL のビルドとインストール した仮想環境上で実行する。 トールする。以降のコマンドは作成 イベートした後、 OpenCV をインス on のバージョンは 3.4 とし、アクテ 仮想環境にインストールする Pyth ds 」からダウンロードして実行する。 tps://www.continuum.io/l)ownloa da のインストールスクリプトを「 ht をインストールするには、 Anacon ンストールをしている。 Anaconda の仮想環境の構築と OpenCV のイ 仮想環境ツールを利用し、 Python 図 1 では Anaconda という Python する。 必要がある。図 1 のコマンドを実行 ために OpenCV をインストールする で用意されており、画像を識別する ELL のチュートリアルは Python Python 仮想環境の構築 ・ Ubuntu 16.04 LTS ( 64 ビット版 ) ・ USB カメラを付けた PC ows 、 Mac 、 Linux に対応している。 環境で動かした。 ELL 自体は W ⅲ d ELL のチュートリアルは下記の 要だった。 のままでは動作せず、試行錯誤が必 でも、 GitHub で示されている手順 までの手順を紹介しよう。 Ubuntu デモ ( チュートリアル ) を実行する untu 搭載パソコンで動かせたので、 ことができなかった。代わりに Ub pberry Pi では ELL をうまく動かす
ラズバイと周辺機器の買い方から OS 導入方法まで filel . txt が元々存在し、そこに追記する形でコマンド結果を保存したい場合は、「 > > 」を用います . $ s u d 0 a p t - g e t i n s t a 1 1 ej e c t 何らかのコマンド〉 > filel . txt キー入力をそのまま表示する キー入力した文字列をそのまま表示するには「 echo 」を用います。この例では、コマンド結果が「 he Ⅱ 0 」となります。 コマンドの例 13 $ e c h 0 h e 1 1 0 例えば、 he Ⅱ 0 という文字列が 1 行だけ書かれたシンプルなテキストファイルを作るには、「コマンドの例刀の「 nano 」 をわざわざ用いなくても、単に次のように実行すればよいだけです。 $ ec ho h el 1 0 〉 fi 1 e 1 . txt OS をアッ OS をアップデートします。 Windows の「 Windows Update 」と同じと考えてよいでしよう。 2 個目のコマンドの「 - y 」 オプションは確認作業を省略するという意味です。これらのコマンドは管理者権限が必要になります。管理者権限で実行す るには、「 sudo 」をコマンドの前に付けます。 sudo とは super user do の略で、「スドウ」や「エスユードウ」と読みます。 $ sud0 apt-get update $ sud0 apt-get upgrade -y コマンドの例 15 ネットか ソフトをダウンロードしてそのままインストールすることもできます。インストールする場合も管理者権限が必要なの で sudo を頭に付けます。 apt-get でインストールできるのは、あらかじめラズバイ os 向けに作られたソフト ( バッケー ジという ) です。バッケージ名も決められています。例えば「 eject 」というバッケージをダウンロードしてインストール する場合は、次のように実行します。 ー各種ソフトのソースコードをダウンロードする あらかじめバッケージが用意されておらす、前述の apt - get でインストールできないソフトも多数あります。一般的な Linux 用のソースコードをダウンロードして、ソフトを生成 ( ビルドという ) する場合は、「 git clone 」を用いることが多 くなっています。通常は git という拡張子を持つファイルとしてネットで公開されており、それを直接指定します。 $ git clone http://xxxx . xxxx. xxxx/xxxx. git ー圧縮ファイルを展開する Windows ではファイルを圧縮アーカイプする際に、「 zip 」や rlha 」形式を用いるのが一般的ですが、 l_inux の世界では、 「 ta 「 . gz 」形式がまだ主流です。 hoge. ta 「 . gz という圧縮ファイルを展開するには、 ta 「コマンドを使います。 ーサーバーを起動する Linux には標準でさまざまなサーバーソフトが装備されています。例えば、ファイルサーバーソフトである「 vsftpd 」を 起動するには、次のようにします。 $ tar xvzf hoge . tar . gz $ sudO service vsftpd start 145
- ヨⅱい・ヨ町 1 : 印 0 d は当 p し 0 ( ・いー「を・一 r 第・ 10 「 k を 0 5 ( h ーま・一・ n み 0 を、・ nd ・一一 0 ・ し 0 ( 3 ーをを 0 900 ・′砂 t を d : fro•て 9 ・ n を「 ated 10 ( 、 ・ [ 」ト ( 0n13 し一 : 10 " 上を印代物 bs 当を 0 ( . UTF ・ 8 TF-8 」を選択 図 6 日本語環境の設定画面では「 ja ー JP. IJ 一区画 10 「一れ・ systen 「 0 れ代 : $ sudO dpkg-reconfigure tzdata 「 Tokyo 」を選んで CTab] キーで します ( 図 7 ) 。「 Time Zone 」では 「 OK 」に移動し、 CEnter] キーを押 を選んで CTab] キーでカーソルを 「 Geographic area 」では「 Asia 」 ば日本時間に合わせられます。 し、メニューに従って選択していけ に合わせます。次のコマンドを実行 続いてタイムゾーンを日本時間 び、 CEnterl キーを押します ( 図 6 ) 。 フォントをインストールしておきま 以上が終わったら、最後に日本語 を押します ( 図 8 ) 。 「 OK 」まで移動して CEnter] キー fonts-takao 54 Wi-Fi Netwotk Authentication Required Authentication required by W ト日 network 55W0rd5 0 「 encryption keys 3 required 0 ( ( e55 the れ - こ」 ShOW password 55W0 「 d : ー network - ・・辭物内第・第・・ -. ンドを実行してシステムをアップデ TerminaI 」を開き、次のようにコマ ンメニューの「 System TOOI 」 - 「 LX ネットワークに接続したら、メイ なければ簡単に接続できます。 別な設定や選択は不要です。問題が 化方法は自動で認識されるので、特 スワードを入力します ( 図 5 ) 。暗号 アクセスポイントに設定してあるパ パスワード入力を求められるので、 たいアクセスポイントを選択すると ! Connect カ画面 図 5 アクセスポイントのバスワードの入 upgrade ロ update ロ ートしておくとよいでしよう。 $ sudO apt $ sudO apt ラスパイマガシン 2017.10 ーでカーソルを移動して「 OK 」を選 んでスペースキーを押し、 CTab] キ 基本的には「 ja 」 p. UTF-8 」を選 s ロ $ sudo dpkg-reconfigure locale 従って設定作業を進めます。 上で次のコマンドを実行し、画面に 常の手順と同じです。 LXTerminaI おきましよう。手順は Debian の通 続いて日本語の環境を設定して 日本語を使えるようにしておこう なしで sudo が使えます。 デフォルトのユーザーはパスワード r 。」、パスワードも「 linaro 」です。 デフォルトのユーザー名は「 lina ⅱヨーいⅱー 0 ・ヨⅱい : ・ - 印をミ ci 蝨 p NO れ・ Of the ・ bO ・ Sy 靆を第 V t ー、・ ~ 00 ・ 5 Pacific 0 ( を an E し「 00 ~ 0 ( ・み 0 30 虹 ( “ : ー・砂、・ ~ を ( t the city 0 「 9 ー 00 ( 0 「「・、 pond ー 00 tO Y00 「 t ー第を一 00 を . E'•ie 0 ] 305 に 0 図 7 「 Geographic area 」の設定画面 図 8 1 p ぬ T み、ト k を 0 を T を h 「聞 10 物、 k u 0 P hd 砂れ 9 ta 「 「 Time Zone 」の設定画面 G 0 を使ってみよう しよう。 $ sudo apt i n s t a 1 1 Tinker Board を再起動してくだ さい。再起動後は日本語のデスクト ップになっています。 Tinker Board は「 GPIO 」「 12C 」 「 SPI 」という 40 ピンの I/O 端子を ューザーが使えるよう、メーカー自 らが熱心に整備しているのも特徴の ーっです。 Tinker Board の 40 ピンの I/O 端子の割り当てを表 1 に示します。 GPIO に対しては、 Raspberry Pi で 広く利用されている Python のライ プラリ「 RPi. GPIO 」互換のライプ ラリと、 C や C + + 言語のライプラリ として使われている「 WiringPi 」互 換ライプラリの双方が、メーカーか ら提供されています。 microSD カードに書き込んだ Tin kerOS にも、ユーザー linaro のホー ムディレクトリーにライプラリのア ーカイプがあらかじめ格納されてい ます。ただし、 OS イメージファイ ルをダウンロードしたサポートサイ トで、より新しいライプラリを配布 しています。ホームディレクトリー にあるものは使わず、サポートサイ トから新しいライプラリを入手した
Tensor 日 0 叫を 2 でみを sudO apt-get update ロ sudO apt-get install python3-pip python3-dev ロ wget https://github . com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/vl . 1 . ()/tensorflow- sudO pip3 install tensorflow-l . 1 .0-cp34-cp34m-1inux_armv71 . whl ロ 1 . 1 . 0 ー c p 34 - c p 34m ー 1 i n u x_a rmv 7 1 . w h ] 図 2 s u d 0 p i p 3 u n i n s t a 1 1 mo c k ロ sudO pip3 install mock ロ Tenso 「日 ow のインストール python3 Pyt h 0 n 3 . 4 . 2 ( d e f a u 1 t , 0 c t 19 2 014 , [ GCC 4 . 9 . 1 ] on 1 i n ux Type "help" "copyright" ” c r e d i t s " > 〉〉 import tensorflow as tf V e r S 1 0 n Ⅵ . 1 . 図 3 TensorFIow のインストールを確認 ースのライプラリです。 Google 翻訳 の実装など、 Google 社内のプロダク ト構築に実際に用いられています。 TensorFIow は Python のライプ ラリです。 Raspberry Pi 用のバイ ナリーは用意されていないため、自 分でソースコードからビルドする必 要があります。ただしソースコード からのビルドは大変なので、有志の 方が Raspberry Pi 3 ModeI B 向け に公開しているバイナリーを利用し ます。もし自分でソースコードをビ ルドしたい場合は、手順を解説して いる筆者のプログ記事 (http ・ //or new. net/setup-tensorflow-for-rasp berry-pi) を参考にしてください。 図 2 のようにバイナリーをダウン ロードし、 pip3 コマンドでインスト ールします。ここでは Raspbian は 旧版の Jessie ( p. 135 参照 ) 、 Python は 3.4 を用います。もしも異なるバ ージョンを使っている場合は、別途 Python3.4 をインストールして使う 13 : 31 : 11 ) 0 r " 1 i C e n S e " か、ソースコードからビルドする必 f 0 r m 0 r e i n f 0 r m a t i 0 n . 「機械学習のハローワールド」と ましよう。 する Python プログラムを書いてみ spberry Pi 上で簡単なモデルを構築 顔認識モデルを構築する前に、 Ra 手書き数字の認識モデルを構築 います。 出なければインストールに成功して ポートしてみてください。工ラーが し、 TensorFlow パッケージをイン でインタラクテイプシェルを起動 図 3 のように、 python3 コマンド 要があるので注意してください。 称される MNIST * 3 という手書き数 字の画像の識別問題があります。 Te nsorFIow の公式チュートリアル * 4 に基づき、手書き数字の画像から、 描かれた数字が何であるかを分類す るための簡単な「ソフトマックス回 帰モデル」を Raspberry Pi 上で構 築します。 ここで作りたいのは、入力として 「手書き数字の画像」を受け取り、 出力として「どの数字であるか」を 返す「何か」です。 この「何か」を関数として定義し ます。また、「手書き数字の画像」を x 、「どの数字であるか」を y 、「何 * 1 Taigman, Yaniv, et al. "Deepface: Closing the gap to human-level performance in fa ce verifi cation. ” P roceed i ngs Of the IEE E conference on computer v i sion and pattern rec ognition. 2014. * 2 Amos, Brandon, Bartosz Ludwiczuk, and Mahadev Satyanarayanan. Openface: A general-purpose face recognition library with mobile applications. ” CMU SchOOl Of Com puter Science ( 2016 ). * 3 MNIST のデータは Yann LeCun 氏の Web/X—ジにホストされています (http://yann 」 ecun. com/exdb/mnist/) 。 * 4 MNIST For ML Beginners (https://www.tensorflow.org/get_started/mnist/beginne rs) ラスパイマガジン 2011.10 109
端末 ( ターミナル ) の画面 アプリ名は「 LXTerminal 」。「端末工ミュレーター」や単に「ターミナル」とも呼ぶ。 pi@raspbenypi: ~ FiIe Edit Tabs Help pl&aspberrypi: ~ ー FiIe Edit Tabs Hel pi@raspberrypi: コマンドプロンプト コマンド入力待ちの状態を表す記号。 本書では本文中で単に「 $ 」と表す。 左側の「 pi@raspberrypi 」という部分は、 設定によって消したり変えたりできる。 コマンドを入力する場所 ここにコマンドをキーポードで入力する。 入力した後に CEnter] キーを押すと、コマン ドが実行される。コマンドは 1 行ずつ入力す る。通常はすぐ下の行に結果が表示される。 日本語ソフード冖ドをイ一ルする この端末で右のコマンドを入力して OS を最新の状態 にしてから、日本語入力ソフト (ibus-mozc) と日本語 フォント (fonts-ipafont と fonts-ipaexfont) をインスト ールします。 $ s u d 0 a pt - g e t update ロ $ sudO apt-get upgrade ロ $ sudO apt-get install ibus-mozc fonts-ipafont f onts-ipaexfont ロこのマークで改行 Raspbian のデスクトップ画面は、初期状態ではタイムゾーンなどが英国のものなので、日本向けになるように設 定を変更します。 Programmtng Offce lntemet Games ( AcceSsones キ = ボ三ドやダイ′ンなどを日本向けの設定にする . 画面左上のラズバイマーク ( ここではメニューと呼ぶ ) をクリックしてメインメニューを表示し、「 Preferenc es 」 - 「 Raspberry Pi Configuration 」を選ぶ HeIp 目 Preferences Add / RemoveSoftware . , Appearance setti ngs Aud10 Device settings 旧 us Preferences lnput Method Main Menu Ed 0 「 ー Mouse and Keyboard setti ngs 0. MozcSetup Run. Shutdown 設定ツール を起動 as b PiConfiguration Rasp イマガジン 139
$ sud0 raspi-config ロ 矢印キー ( 上下 ) と [ Enter ] キーで次のよ うに選択していく ☆ 5 lnterfacing 0ptions ☆ P4 S P I ☆ WouId you like the SPI interface to be EnabIed? ↑ここでく Y e s 〉またはくはい > を選択 ☆ T h e S P I i n t e r f a c e i s e n a b 1 e d ↑ここでく 0 K> またはく了解 > を選択 矢印キー ( 左右 ) とエンターキーで く F i n i s h > を選択する 図 3 S 曰機能を有効にする手順 MAIN SW MOTOR SW SW2 SWI Raspbian のインストール方法につ いては p. 132 を参照してください。 LAN ケープルを差すか、無線 LAN の設定をしてインターネットにアク セス可能にしておきます。 OS が準備できたら、ラズバイマ ウスに 車輪 拡張バーツ の下向きの センサー 図 2 ラズバイマウス各部の名称 Linux カーネルのヘッダーをインストール ( 必要に応じて「 sudo apt update 」 ) $ sudO apt install raspberrypi-kernel-headers ロ Gi t H u b からデバイスドライバをダウンロード $ git clone https://github. com/rt-net/RaspberryPiMouse. git ロ デバイスドライバのソース ( rtmo u s e . c) があるディレクトリーまで移動 $ cd RaspberryPiMouse/src/drivers デバイスドライバをビルド $ ma ke ロ デバイスファイルの権限を自動設定 $ s u d 0 ma ke i n s t a ⅱロ デバイスドライバをカーネルに組み込む $ sudO insmod rtmouse . k0 ロ ステッピングモーターをオフに $ echO 0 > /dev/rtmotorenO ロ センサーの動作確認 $ cat /dev/rt1ightsensor0 ロ 732 1282 1288 1323 図 4 デバイスドライバのセットアップ手順 本体を壊してしまわないよう十分に などとの距離を計測するために、距 注意して取り付けてください。 離センサーが水平方向に付いていま す。しかし、ライントレースをする ・ Linux カーネルのヘッダー OS のセットアップ にはセンサーが床面を向いている必 ・ラズバイマウスのデバイスドライ 次にソフトウェアをセットアップ 要があります。ラズバイマウスでは、 バのソース しましよう。 OS をインストールし、 下向きのセンサーが付いた拡張パー デバイスドライバをビルドできる環 ツが販売されているので (http ・ // が必要です。また、 Raspberry Pi の 境を整えます。その後デバイスドラ bit. ly/2wA18S2) 、今回はこれを取 SPI 機能 (SeriaI PeripheraI lnterfa イバをビルド、インストールします。 り付けましよう ( 図 2 ) 。 (e) を有効にする必要があります。 OS は Raspbian を用い、 Raspbian 組み立ての詳細については付属の まず、 SPI を有効にします。端末 のデスクトップ環境でプログラミン マニュアルを参照してください。怪 で図 3 のように設定ツール「 raspi- グして実行することを想定します。 我のないよう、またラズバイマウス を ・ティスプレイにつないだ HDMI ケ ーブル ・マウス、キーホード ・電源 ( 電池でもよいですが走らせ るまでは AC アダブターを推奨 ) をつなぎます。配線を確認後、二つ スイッチがあるうちの「 MAINSW 」 をオンに倒します。 OS が立ち上がっ たらデスクトップ環境から端末 ( LX TerminaI) を起動します。 ラズバイマウスは、専用のデバイ スドライバ経由で操作します。デバ イスドライバのビルドには ラスパイマガジン 2011.10
スワードも同 うように拡張 容量全体を使 oSD カードの ステムを micr トファイルシ 異なり、ルー NE A64 とは spbian や PI berry Pi の Ra PC 2 は Rasp Orange Pi できます。 pi でログイン じく orange Applications はま (Pictures - file Managerl X 0「ange向@Orange可: ~ 太 orangepi@Orangepi: 0 ′きれ 02P い ( 気いを p 0 ngepi@O「日 n に p に Trash 日厄 System H0n12 k090 08 十一をⅢ、 0 一 on 、 匸朝 " 北朝 locales ーし 00 引日 0 0 ork い代 betueen 剛ーい日 lar お 9e3 田 ー s tO their ー物地 . 00 第 ch t 部 3. Ⅱ a い order•社 0. 円” 0 0 を *ich 18 引 t0 9 物、 ate. 町 F -8 18 引加 0 5 印 ド lt ′ p 聞 t 地ⅵ杯ーリ for neu ーレⅡ a い . Other 、いリ リ 5 計猷ド b ds 08 甲 a い lity uith 01d 5 レ” 50 0. LOC 引 t0 9 に ra レ d : ] Hd-lL.BiF-8 U 正 -8 ] Ja-JP. EUC-JP EUC-JP ' 幻 Ja-JP. 町F田 IJTF-B 、一 k GEORCIAN-PS 3 ー } に , 「 E. い : ーど凵ド - 日 く C 第引〉 0 新 QQ 0 ) kage 0 1 日 gura い on く C に el > ぃ - .IP. Ⅲ F ー ”ユ S. 町 F ー 8 C. 町 F -8 酥比 18 e 「 the 印ⅵ r 物 t : f lt ー地′レに 9 will exp は℃ 6 d 日比 5. sgstem を加比ト us 3 t 計、 e not all u 一日、 3 are le tO 5P0 t ト This ⅵ 11 select the 「 1 聞 gua 霏 for い re 3 t 物 . this From the generated ー引” . 1 9e for the us . You 0 聞 c ト 0 ) 5 を a F 肚ー引 6 for the sgstem M 当新聞い 18 引” t0 山 5P1 text 新 the correct 匸 on ドーⅱ円一 00 ョー日 5 図 2 「 ja-JP. UTF-8 」を選択して OK 0 ′ n000 ー 00 ′い パッケ、 , - ジの設定 いを設していま あなたの居住する地理域を選んでくさい。続く 帯を表現する都市名のリストが表示されるので、これ きます。 地理的領域 : その他 SgstemV ヨーロツ . ペ 西、 質問で、位置する時聞 より狭めていくことがで 図 1 「 ja-JP. UTF-8 」を選択して OK するスクリプトが自動実行されませ ん。従って、次のように手動でスク リプトを実行してください。 $ s u d 0 / u s r / 1 0 c a 1 / s b i n / r e s i z e r 0 0 t f s . s h ロ 実行後、再起動すれば microSD カードの容量全体が使えるようにな ります。ファイルシステムが拡張で きたら、次のようにシステムをアッ プデートしておいてください。 $ sudO apt upgrade ロ $ sudO apt update ロ 本語フォントを導入しておきます。 が文字化けしてしまうので、先に日 でしよう。ロケールを変えると GUI 2 では端末で行うのが手つ取り早い GUI の日本語イヒは Orange Pi PC 日本語化をしよう $ sudO apt install fonts-takao 続いてロケールを切り替えます。 ラスパイマガジン 2017.10 端末で次のコマンドを実行し、二つ のメニューでそれぞれ ja 」 P. UTF -8 $ sudO dpkg-reconfigure を選択してください ( 図 1 、 2 ) 。 ] 0 c a 1 e 替えます。次のコマンドを実行して 端末を開いてタイムゾーンを切り よっ。 す。 GUI が日本語になっているでし ログアウトしてログインし直しま ロケールを切り替えたらいったん 図 3 図 4 「 Asia 」を選択 く C 〉 0 ′ 0 をを 0 第 0 ′谷 n 材い パッケー , シの設 こロ a ケ定していま あなたの時間帯に一致する都市または地域を選してください。 時間帯 : Tbi lisi Tehran ル 1 ーⅳ Tomsk IJJ 圧 P 謝記第 U 00t 騰レ ra く Cancel> 「 Tokyo 」を選択 ください。 $ sud0 dpkg -reconfigure t z d a t a メニューが現れるので、 Asia 、 To kyo を選択します ( 図 3 、 4 ) 。これ で環境が一通り整います。 「 WiringOP 」を使ってみよう 残念ながら Orange Pi PC 2 の状況 は以前に本誌で紹介したときとあま り変わっていません。カーネルのアッ プデートが行われていないため、せ っかくの Raspberry Pi 互換 40 ピンへ ッダーも 12C と SPI はドライバが機能 しないため使えす、利用できるのは GPIO のみです。 とはいえ、日本の方が Raspberry Pi で広く利用されている GPIO ライプ ラリ WiringPi の Orange Pi 版「 Wirin gOP 」を Orange Pi PC 2 にポーティ ングしていました * 2 。 これを使って LED を点灯させてみ ることにしましよう。 まず、次のようにビルドに必要なパ ッケージー式を導入しておきます。 $ sud0 apt install build-essent 66
電子み、一 ー - 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
, な気 - M P し ..Demo → #!/usr/bin/python # - ☆ - c 0 d i n g : u t f - 8 - ← import smbus, math, time 12C_CHANNEL = 1 図 4 加速度セ MPU6050_ADDR = 0X68 ンサーの向き に従って画面 smbus . SMBus( 12C_CHANNEL ) ーーーーーーーーーー② mPu6050 mPu6050. write_byte—data(MPU6050_ADDR, Ox6b, 0 ) ・ -- -- -- -3 上の図が回転 する HSB mPu6050. read_byte_data(MPU6050_ADDR, address) LSB = mPu6050. read_byte_data(MPU6050—ADDR, address + 1) v a 1 i f ( v a 1 く 0X8000 ) : return val e 1 S e : $ sudO apt-get install gtkmm-3. 0 ロ PiBits の GitHub サイトから MPU 6050-Pi-Demo のソースコードを取得 してください。 r e t u r n ( v a 1 ー 65536 ) d e f c a ] c—a n g 1 e ( a , b , c ) : angle_rad math . atan2(), math . sqrt( b**2 + c**2 ) ) return math . degrees( angle_rad ) x—angle y—angle w h i 1 e T r u e : accel__x read—accel( Ox3b ) accel—y read—accel( Ox3d ) accel_z read—accel( Ox3f ) x_angle_ calc—angle( a C C e 1 X , accel—y, accel now y—angle— calc—angle( accel—y, accel_x, accel VIOW x—angle ( x—a ng 1 e ☆ 0 . 9 _angle_now ☆ 0 . 1 y—angle ( y—a ng 1 e ☆ 0 . 9 _angle_now ☆ 0 . 1 print " X 軸傾き : ' Y 軸傾き : ・ x_angle, y—angle t i me . s 1 eep ( 0 . 1 ) 図 5 加速度センサーからの取得値から傾きを計算するプログラム「 get ー an 創 e. py 」 $ g i t c 1 0 n e g i t : / / g i t h u b . c om/ r ichardghirst/PiBits ロ このソースコードでは、アクセスす る卩 C のチャンネル番号が 0 になって いるので、 1 に変更します。以下のよ うに実行してテキストエデイタの Lea fpad を起動します。 $ c d P i B i t s / M P U 6 0 5 0 ー P i - D emo ロ $ leafpad 12Cdev . cpp ロ メニューの「検索」 - 「置換」を選 回転します。 択して、検索する文字列に「 /dev/ i2c -0 」、置換後の文字列に「 /dev/i2c- 傾きの角度を調べてみよう 1 」と入力して「検索して置換」をク 次に、 MPU -6050 の傾きを実際に数 値として取得してみましよう。前述の リックすると、利用するチャンネルが 1 に変更されます。その後ファイルを ように加速度センサーは、かかってい 3 軸の加速度を読み出す る重力を X 軸、 Y 軸、 Z 軸の 3 方向に 保存します。 get-angle. py の具体的な内容を説 次のようにプログラムをビルドし、 分けて値を出力します。値の範囲は 明していきましよう。かなり複雑なの 実行してみましよう。 0 から 65535 で、ここから重力値 ( 加 で、理解しづらいところは飛ばしなが 速度 ) を計算できます。 ら読んでもらって構いません。 3 軸の加速度から傾きの角度を計 初めに 12C を介して MPU -6050 か $ ma ke ロ $ sudo . /demo_3d ロ 算するために自作したプログラム ら各軸の加速度を取得します。ます 「 get-angle. py 」は図 5 の通りです。 「 12C_CHANNEL 」に 12C のチャン すると図 4 のように台座と棒のフレ p. 50 に示す読者限定サイトからダウ ネル番号、「 MPU6050_ADDR 」に ーム画像が表示されます。 MPU -6050 ンロードして、次のように実行してく MPU -6050 の 12C アドレスを指定して を動かすと画面上のフレーム画像が ださい。 X 軸と Y 軸方向の傾きが表 おきます ( 図 5 ①、以下①と記載 ) 。 示されます。 $ sudO python get—angle . py ロ X 軸傾き : 9 . 8649611 Y 軸傾き : 16 . 51 139 ラスパイマガジン 2011.10 特別付録、第