set - みる会図書館


検索対象: ラズパイマガジン = Raspberry Pi Magazine 2017年10月号
46件見つかりました。

1. ラズパイマガジン = Raspberry Pi Magazine 2017年10月号

「ライントレ = ス』に挑戦しよプ、センサー補正して行き先を決定 を イ 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

2. ラズパイマガジン = Raspberry Pi Magazine 2017年10月号

1 #!/usr/bin/env python3 2 # - ☆ - coding: utf-8 - ☆ - 3 import time # sleep のためのモジュールをインポート ( 略 ) 6 def get-line-sensor-data(): 11 def set_motor_speed(left, right) : ( 略 ) 17 def set motor_power(mode): ( 略 ) 22 def get_switch-input(swnum) : 26 # センサー値を正規化するための関数を用意 27 def normalize(), rng): return (V 30 # センサーの値の範囲 なります。 31 left_end_range 32 left_range ライントレースする際、左側の 33 right_range センサーがライン上にあるとき、本 34 right_end_range = ( 500 , 1600 ) 体を左に向ける必要があります。 m a 1 n n a m e のとき、センサー値の差 (left-rig while not get-switch-input(0): # SW0 が押されるまで待機 print("ready") (t) が負の数になります。「 set-mot time. sleep(0.1) or-speed 」に与える引数 (100 + diff, set_motor_power(True) while not get-switch-input(l): # SWI が押されたら止める 100-diff) は左車輪の方が小さく、右 41 # センサー値を取得 車輪の方が大きくなります。右車輪 left end, left, right, right-end = get-line-sensor-data() の方が速く回転することで本体を左 # 内側のニっセンサー値を校正・比較 44 に向けることができます。この「セ # 外側のニっセンサー値を校正・比較 ンサーの差を計算」「車輪の回転速 47 # 校正したセンサー値を合算 度に反映」の行程を繰り返すことで diff = diff_in/2 + diff_out ライントレースを実現しています。 print(diff_in, diff_out) set_m0tor-speed(100*(1 + diff), 100*(1-diff)) 先ほどと同様にラズバイマウスの time. sleep(0.1) # 0.1 秒毎にセンサー値とモーターの回転速度を更新 車輪を浮かせた状態にし、 MOTOR set_m0tor-power(FaIse) SW をオンに倒し、次のように raspi 図 1 1 raspimouse linefollower4. py mouse—IinefoIIower3. PY を実行しま の校正 ( キャリプレーション ) もし 落下しないよう十分に注意しましよ す。 て、もう少しトレースの精度を向上 う。ったないながらもトレースがで させます。 きることを確認できたと思います。 実行権限を付与 $ chmod + x raspimouse—linefoll 校正のために raspimouse-linefol 場合によってはカープを曲がり切れ ower3. py lowerl. py を使用してセンサー値の なかったかもしれません。ライント Python のコードを実行 . /raspimouse—IinefoIIower3. P ばらっきを把握しましよう。ます、 レースができている ( ロポットがト y ロ ラズバイマウスのセンサー四つをコ レースしようとしている ) ことを確 ready ready ース上の白い部分に合わせ、 raspi 認したら、 SWI を押してラズバイマ ready mouse—linefollowerl. PY を実行しま ウスを停止させます。 す。そのとき端末に出力された四つ のセンサー値の最大値をメモしてお トレースの精度を向上させる 実行後、 HDMI ケープルやキー きます。 ボードを外します。コースの黒い線 raspimouse linefollower3. PY で は内側の二つのセンサーの値をその の上にラズバイマウスを置き、 SWO ままステッピングモーターの回転速 を押しましよう。ラズバイマウスが 度へ反映していました。今度はセン 走り出します。机の上にコースを設 サーを四つとも使用し、センサー値 置している場合はラズバイマウスが 右側のセンサー の位置 左側のセンサー の位置 ( 黒い線の上 ) ( 白い紙の上 ) ・ E ・ ec E 第・ ( 嘴 E ・を C 町 ( ORPO 舩引 ON 第ゞ 図 10 コース上のセンサーの位置 - rng[0]) / (rng[l] - rng[0]) = ( 240 , 640 ) = ( 650 , 1350 ) = ( 550 , 1400 ) メモした値を代入 diff_in = normalize(left, left_range) - normalize(right, right-range) diff out = normalize(left-end, left end_range) - normalize(right-end, right-end-range) 1 . /raspimouse—linefollowerl . p ザ ラスパイマガジン 2017.10 0

3. ラズパイマガジン = Raspberry Pi Magazine 2017年10月号

第盟当間新朝いユ 1 #!/usr/bin/env python3 2 # - ☆ - coding: utf-8 - ☆ - 3 import time # sleep のためのモジュールをインポート 4 5 # デバイスファイルからセンサー値を取得する関数を用意 6 def get-line-sensor-data(): with 叩 en( ・ /dev/rt1ightsensor0','r') as f: 7 return map(int, f. readline(). split()) # 図 5 で 3 行だったものを 1 行にまとめた 8 9 10 # テパイスファイルを通してモーターの回転速度を指定する関数を用意 11 def set_motor—speed(left, right): with 叩 en('/dev/rtmotor_raw_. 回,, ・ (') as lf, open('/dev/rtmotor-raw-r0', ・ w ・ ) as rf: 1 f. wr i t e ( s t r ( i n t ( 1 eft ) ) ) 10 ( イチ十ゼロ ) ではなく rf. write(str(int(right))) ( 小文字のエル十ゼロ ) 16 # デバイスファイルからモーターの電源を 0N / OFF する関数を用意 17 def set_motor_power(mode): with open('/dev/rtmotoren0','w') as f: f. w r i te (' I' i f d e e 1 s e '0 つ 21 i f mal n name set_motor_power(True) for i in range(10): left_end, left, right, right-end = get-line-sensor-data() print(left, right) # 変数に代入された値を確認 set-m0tor-speed(100, 100 ) # ステッヒ。ングモーターを回転 time. sleep(0.1) # 0.1 秒ごとにセンサー値とモータの回転速度を更新 set_m0tor-power(FaIse) # ステッピングモーターの電源をオフに 28 図 6 raspimouse Iinefollower2. py 図 7 車輪を浮かせたラズバイマウス 度の厚みがあるものならば、ほかの ものでも構いません。ラズバイマウ スが不安定にならないものを用意し ましよう。 ラズバイマウスの車輪が浮いてい ることを確認して二つスイッチがあ るうちの「 MOTORSW 」をオンに 倒します。先ほどと同様に次のよう に raspimouse linefollower2. PY の 権限を変更した後、実行します。 実行権限を付与 $ chmod + x raspimouse—linefoll ower2 . py ロ Python のコードを実行 . /raspimouse 1inef0110wer2. p フを切り替えるための関数です。 12 行目ではステッピングモーター の回転速度指定のためのデバイス 2 秒程度ステッピングモーターが ファイルを開き、 13 ~ 14 行目で回転 回転した後、車輪が停止し、手で自 速度を書き込んでいます。デバイス 由に回せる状態になっていることを ファイル「 rtmotor_raw IO 」の最後 モーターを制御しよう 確認しましよう。ステッピングモー の 2 文字は、イチ + ゼロの「 10 」で 次にモーターを操作するコードを ターは回転していない状態でも電流 はなく、小文字のエル + ゼロの「 10 」 書きます。 が流れて ( 電源がオンになって ) い なので注意しましよう。 18 行目では 先ほどと同様にテキストエデイタ るとトルクがかかり、車輪が固定さ ステッピングモーターの電源をオン を使って図 6 のコードを書き、「 ras れます。電流が流れている状態が長 オフするためのデバイスファイルを pimouse—linef0110wer2. PY 」として く続くと、ステッピングモーターは 開き、 19 行目でオンオフを書き込ん 保存します。保存場所はどこでも構 大変熱くなります。使わないときは でいます。 いません。 こまめに MOTOR SW をオフにして このコードを実行する前に、図 7 raspimouse_linefollower2. PY で ください。起動時に「ステッピング のようにラズバイマウスの下に台を は「 set motor—speed 」と「 set—mo モーターをオフにする作業」が必要 置いてラズバイマウスの車輪を浮か tor-power 」という二つ関数を新た なのもこのためです。 せた状態にしてください。ラズバイ に用意します。 11 ~ 14 行目の set_ マウスが急に動くと、机から落下す motor—speed はステッピングモータ る危険性があるからです。今回は mi ライントレースをさせてみる ーの回転速度を指定するため、 17 ~ コースを用意して、実際に走らせ croSD カードのケースを台として使 19 行目の set_motor_power はステ てみましよう。図 1 で紹介したコー 用しました。平らで数 mm ~ lcm 程 ッピングモーターの電源のオンとオ 7 4 9 1299 12 7 3 12 9 6 7 4 6 12 9 6 12 9 4 1310 737 1284 1288 1299 746 1283 1289 1304 ↑ Ctr ] + C で止める 7 ラスパイマガジン 20 10

4. ラズパイマガジン = Raspberry Pi Magazine 2017年10月号

$ cu - 1 /dev/ttyUSB0 -s 115200 ロ : 24907 : 00000000 : 126 : 038 : 1013d2a : 2425 : 0000 : 0000 : 1145 : 0569 : X : - 058 : 0038 : - 073 : : 24912 : 00000000 : 162 : 039 : 1013d2a : 2425 : 0000 ; 0000 : 1145 ; 0569 : X : 0006 : - 103 : - 003 : : 24917 : 00000000 : 168 : 040 ; 1013d2a : 2425 : 0000 : 0000 : 1145 : 0569 : X ; 0007 ; - 103 : - 001 : 図 10 モード 0 の出力結果を確認 - CONFIG/Samp Moni to 「 VI -04 ー 1 / 引 D X81013d2a / LID = 0X00 / RC : 9687 ー a: set App licafion ( 0X67726305 ) : set Device 田 ( ー c : set ChanneIs ( 15 ) x : set Tx Powe 「 ( 3 ) d : set SIeep Du 「 ( 5000 ) w : set Senso 「 Wait Du 「 ( 0 ) m : set Senso 「 Mode ( 0X35 ) P : set Senso 「 Pa 「 amete 「 ( 2 洋 P : set Senso 「 Pa 「 amete 「 2 ( THT=I DUR=I L Å T ニ 1 WIN= k : set Enc Key (OxA5A5A5A5) 0 : set Option Bits ( 0X0 00001 ) S : save Configu 「 ation R : 「 eset to Defaults 「 p 」を入力して 図 12 2525A とサイコロキャラメル 「 0 」と CEnter] を押せばモード 大文字の「 S 」で保存すると図 1 1 の 0 に変わります。 ような表示になります。 大文字の「 S 」を このモードはタップすると家の電 押して設定を保 気をつけるとか、音楽プレーヤーの 存し、「 ~. 」で 電源をオン / オフをするなど、工夫 終了してくださ 次第で利用価値が高そうです。 図 11 第 2 バラメーター設定時の画面 親機に対しても cu コマンドを実 モード 4 ・自由落下 作マンガ「ハルロック」で登場した 行します。すると図 10 のような出 フリーフォール ( 自由落下 ) モー 作品を再現できます。 最新版の TWELITE では、専用 力が出るはすです。データは 5 秒ご ドです。 2525A を落下させることで とに受信しています。 データを送信します。これを試すの ファームウェアを書き込んだ MON このモードは定期的に情報を収 は少々難しいのですが、手に持って OSTICK を別途用意すれば、無線で 集するときに便利なモードです。迷 上下に振っただけではデータを送信 子機のモードを変更できます。その 子防止用機器、忘れ物検知センサ しませんでした。ポールを投げるよ 場合ケープルでの接続は不要で、同 、加速度センサー情報の収集など うに 2525A を上に放り投げて受け取 じように設定できます。「 Tera Te で利用できそうです。 rm 」 (https://osdn.jp/projects/tts るとその過程でデータを送信しまし た。自由落下時にアクションさせる sh2/) などのターミナルソフトを起 モード 1 、 201 / 2 回のタップ検知 動し、通信速度 ( ボーレート ) を ことができそうです。 タップすることで情報を送るモー 「 115200 」にしてシリアルポート経 由で MONOSTICK に接続し、 CEn ドです。モード 1 はタップが 1 回、 モード 8 ・活動状態を通知 モード 2 はタップが 2 回で通知しま 活動と非活動の状態を通知する ter] キーを押すとプロンプトが表示 す。このモードからは第 2 パラメー モードです。 2525A が動いていると されます。 ターを設定することで検出するため きと動いていないときに、それぞれ の時間 (DUR) やしきい値 (THT) 異なる ID が付いたデータを送信し モード 0 ・定期送信 を細かく設定できます。このときに ます。動いているときのデータ送信 モード 0 をます試します。定期的 指定できる設定値は公式サイト (ht 間隔は固定で、動いていないときの に加速度センサーの情報を送信す tp: 〃 g00. g レ D2ANKM) に掲載され 間隔を第 2 パラメーターで変更でき るモードです。 cu コマンドで接続時 ています。ただし、筆者が試してみ ます。こちらは後ほどニコニコサイ のパラメーターを確認すると次のよ た限り標準の設定で問題なく利用 コロで実際に利用します。 うになっています。 できました。 ニコニコサイコロを 第 2 パラメーターを変更するには 作ろう 大文字「 P 」を押して、次のように カンマ区切りで入力します。 2525A 用のケースは用意されてい ません。ケースの 3D データは提供 THT=I,DUR=I,LAT=I,WIN=I されていて 3D プリンターで出力で 0 ー s 115 2 0 0 $ cu - 1 /dev/ttyUSBI 1 、 2 、 4 、 8 を組み ( 略 ) 合わせたモード 15 ↓ p: set Sensor Parameter ( 15 ) P : s e t S e n s 0 r Parameter2 ( ーラスパイマカジン 201 な 47

5. ラズパイマガジン = Raspberry Pi Magazine 2017年10月号

PC からリモートログインするための SSH サーバーを利用する 場合は、 [lnterfaces 」タブの「 SSH 」を「 Enabled 」にする。有 効にした場合、バスワードを既定の「 raspberry 」から変更して いないと、起動時に警告が出る pi ユーサーのバスワードを変更するときにクリックする。 SSH サーバーを使うときは必ず変更すること ホスト名を変更する GUI デスクトップで 起動するかどうか 画面の周囲に黒い帯が 残るときに設定 Raspberry Pi Configu 給↑ lnterfaces ー petformance Localisatton Change Password. ra spberrypi ◎ ToDeskt0 OToC 凵 ー System Password: Hostna me: Boot: AutO Login: Network at BOOt: SpIash Screen. ReSOl uti on: lJnderscan: ノ As c t u ser ロ Wait for net ・ EnabIed 〇 Disabled Set Resolution.. bl ed メニューから起動した直後は「 System 」タ プが表示される。初期のパスワードは「「 as pbe 「Ⅳ」が設定されているが、安全のため、 ほかのバスワードに変更しておく。またモ ニターによっては画面の周りに黒い帯が 残ってしまうことがあるので、そのときは 「 Underscan 」を「 Disabled 」にすればよい ・ EnabIed Cancel 「ローカライゼーション」 タブをクリック Loca\e Language: (Japanese) Country: : JP (Japan) CharacterSet4 IJTF-8 OK ー朝 ncel R eboot needed The changes you have made require the Raspberry Pi tO be rebooted to take e 幵 t. Would you like tO rebOOt now? 定 ル又 の ケ ロ lntetfaces Performance ! Localisation: Set Locale. Set Timezone. Set Keyboard. Set WiFi Countny.. Raspberry Pi Configuration TL-ne System Loca は Ti mezone: Keyboa rd: WiFi Countny: iJapan Area: Locatton: Ca ncel タイムゾー ンの設定 Country lCélaÅd 変更後は必ず、「 Raspberry Pi Configurati on 」画面の一番下に表示されている「 OK 」 ボタンをクリックする。再起動を促す画面 が表示されたら「 Yes 」を選択 Ke,'board は Va 面 「 Set Loca .. 」「 Set Timezone... 」「 Set Ke yboard …」「 set WiFi Country …」と全項目 を変更する Japanese (PC-98xx Serie お pan を (Kana) lran.isiamtc RepubliC Japanese (Kana 86 ) Japanese (OADG 1 ( A い lrejand Japanese ( Mwnt0 ) Japanese (Dvorak) 」ら 03r に 5 を 再起動後には Raspbian が日本 向けの設定になっている lndO s 旧 WiFg Country COde Kazakhstan Kenya 最新版「 2.4.3 」では 不具合があったが、 OS を最新の状態に すれば修正される Country:{3JP Japan OK 無線 LAN の国コードの設定 ( 無線 LAN を利用するときは設定が必要 ) Type 10 t 0 し「 k a 虍 電子工作を楽しむなら G 曰 0 からのオーディオ出力を無効化しておく ル文 の キ ラズバイでは、電子工作用端子「 G 曰 O 」の一部をオーディオ 別な設定ファイルを編集するので管理者権限で実行します ) 。 出力に利用しています。ラズバイ Zero シリーズの場合も、ラズ パイ 2 や 3 のようなオーディオ端子は搭載していませんが、 GPIO $ sudO leafpad /boot/config . txt ロ の一部をオーディオ出力として利用しているのは同じです。 次に、 58 行目付近の「 dtparam=audio=on 」の行頭に「 # 」 部の電子バーツでは、オーディオ出力が有効になっ しかし、 ていると動作がおかしくなるといった不具合を生じることがあり を付加します。変更したら保存してテキストエデイタを終了し、 ます。そこで、 G 曰 O でのオーディオ出力を無効化しておき、電 ラズバイを再起動します。 これでオーディオ出力が無効化されました。なお、この設定で 子バーツに影響を及ばさないようにしておきましよう。 オーディオ出力を無効化しても HD 経由や、 USB スピーカー 端末アプリを起動して、次のコマンドを実行してください。テ キストエデイタで、設定ファイルを編集できるようにします ( 特 B 旧 etooth スピーカーからの音声出力は可能です。 イマガシ - 140

6. ラズパイマガジン = Raspberry Pi Magazine 2017年10月号

無線マイコンでセンサー値を飛ばすこ扉の開閉や室温 をつぶやこう Twitter に投稿するプログラムの MW_App_Tag/ スクリプト言語には Python を使い ファームウェアを書き込むためのソフトウェア jenprog/ Python でシリアル通信するためのライブラリ pyserial/ ます。 Python で Twitter に投稿す 今回、動作させるスクリプト script/ るには OAuth 認証 (http://oauth. 図 7 作業用ディストリビューションの構成 net/) によるログインが必要です。 温度センサー LM61 から読み取った そこで Python のライプラリである 電圧から、温度を計算するロジック python-oauth2 をインストールしま も追加しました。 す。 Raspberry Pi に接続する MON OSTICK とシリアル (UART) 通信 子機の TWELITE DIP 用のファ (/dev/ttyUSB0 経由 ) するための ームウェアでは、アナログセンサー 利用時または磁気スイッチ利用時 python ライプラリ「 pySerial 」 (ht その後「 + 」を一呼吸間隔で 3 回 tp://pyserial. sourceforge. net/) も に最適化した形で省電力化を徹底 入力して「インタラクテイプモード」 しています。アナログセンサー利用 導入します。 時はアナログ 2 系統 ( 0 ~ 2.4V ) 、磁 に移行します。次になります。 気センサー利用時はデジタル 1 系統 $ sudO apt-get install python- 0 a u t h 2 だけをチェックします。 $ cd /opt/MW_App—Tag/pyseria1 0 : set Option Bits ( 0X00000001 ) ほかに稼働状況を示すデジタル出 $ python setup . py build ロ 力があります ( 今回は LED を接続し S : save Configuration $ sudO python setup . py install R : r e s e t t 0 D e f a u 1 t s ます ) 。子機の台数については、送信 頻度が過密にならない限り制限があ 「 0 : 」の行に表示されているオプ りません。 ー TWELITE にコアーム ションビットの値 ( デフォルトは ゴアを書き込もう 0X00000001 ) を「 0X00000021 」に変 MONOST ℃ K に書き込み えます。「。」を入力後、 21 と [Ent 親機として用いる MONOSTICK TWELITE はそのままでも簡単 er ] キーを入力します。再度同じよう にファームウェアを書き込みます。 に利用できますが、今回はより使い なテキストが表示されるはずです。 MONOSTICK を Raspberry Pi の やすくしたファームウェアを使いま USB ポートに挿し、次のコマンドを す。ファームウェアは Raspberry Pi 実行します。 を使って簡単に書き込めます。 0 : set Option Bits ( 0X00000021 ファームウェアは公式サイト「 htt ps: 〃 goo. g レ GpWnQk 」から最新版を ダウンロードします。 2017 年 8 月上 旬時点では「 App_Tag_bin—2-0—2. zip 」でした。これを /opt/MW— App—Tag/ にコピーし、次のように 解凍します。 $ miniterm . py /dev/ttyUSBO 115 200 ロ 1 よっ乙っ 00 00 00 $ cd /opt/MW_App_Tag/jenprog ロ $ . /firm_write -t /dev/ttyUSB0 / opt/MW_App—Tag/App—Tag/App—Tag - P a r e n t - B LU E . b i n ロ S を入力して設定を保存し「 Succe ss 」といった表示が出れば成功です。 「 + 」の 3 回入力を再度実行すれば、 インタラクテイプモードから抜けら 書き込み途中では「 0 %.. 10 %. 20 % れます。もう 1 度インタラクテイプ . 」と表示され、「 OK: firmware is モードに入って、「 0 : 」で始まる行に successfully programmed. 」と出力 「 21 」と表示されるか確認します。 すれば成功です。失敗したら MON OSTICK を挿し直し、再度書き込ん TWE 凵 TE D 旧に書き込み でください。最後に MONOSTICK 子機として用いる TWELITE を Raspberry Pi から抜きます。 親機の MONOSTICK 用のファー Pyth 。 n 向けの出力形式に変える ムウェアでは、シリアル通信で取り ためファームウェアの「オプション 出すデータを Python などで扱いや * 2 TWELITE DIP も後述する TWELITE R をつなげば、 Raspberry Pi や PC に USB で ビット」を変えます。 miniterm. py すい形式 ( ; 区切り ) に変換する機 接続してシリアル通信ができます。 を実行すると次のようになります。 能を付加しています。今回利用する $ cd /opt/MW—App_Tag/ ロ $ unzip App—Tag—bin—2—O—2. zip

7. ラズパイマガジン = Raspberry Pi Magazine 2017年10月号

7 EXIT ・・・」の表示が出た後、再び + + + を押します。 親機ではデータを加工しやすいよ うに、シンプルに受け取るモードに 変更します。このためオプションビ ット (Option Bits) を「 0X20 」に します。図 8 の画面で「。」と入力し ます。続いて「 20 」と入力して [En ter] キーを押します。続いて大文字 の「 S 」を押すと、設定が反映され、 その結果が画面で確認できます。 確認できたら cu を終了します。 れには少々コツがいります。「 ~. 」を 入力すれば通常は「 Disconnected 」 と表示されコマンドプロンプトへ戻 ります。もし「 ~. 」が入力できな かったら一度 CEnter] キーを押し てからトライしてみましよう。なお 「 ~. 」を入力後に CEnter] を押す必 要はありません。 子機のオプションビットも変更 十十十と入力する。 します。ファームウェアを「 App_ 画面上には表示されない Tag 」に変更した親機と通信するた CONFIG/Åpp—Tag V2 - 00 - 0 / SID = 0X81027aae / LID = 0X00 / RC = 9696 - set App1ication ID ( 0X67726305 ) めの設定です。図 9 で「。」 - s et Dev i ce I D ( - ) [Enter] キーを押し、「 S 」で保存 ( 略 : c ~ 0 は図 8 と同じ ) して cu をいったん終了させます。 d : set S1eep Dur ( 5000 ) w : s e t S e n s 0 r W a i t D u r ( 3 0 ) m : s e t S e n s 0 r M 0 d e ( 0 x 10 ) 各モードを p : s e t S e n s 0 r P a r a m e t e r ( 0 ) P : set Sensor Parameter2 試してみよう ( 略 : S 、 R は図 8 と同じ ) 続いて子機の 2525A の設定を変え 図 9 2525A の設定を変更する ながらぐ実際に試してみましよう。 2525A が備える主な動作モード ( 最新の 2.0.2 の場合 ) 表 1 2525A には表 1 に示すような動作モ 通知を出す挙動を選べる。 0 「送信間隔の設定」で設定した間隔で通知 0 N 0 「 m 引 2 回たたいたとき、落としたときな 軽くたたいたときに通知 1 Tap どに通知でき、 1 ~ 8 は組み合わせ 軽く 2 回たたいたときに通知 2 DoubIe Tap 落としたときに通知 4 Free Fall ても使えます。デフォルトの動作は 動いているときと止まっているときのそれぞれを通知 8 Active/l nactive 1 、 2 、 4 、 8 の組み合わせで、モー シェイクノーマル 振られたときのカの強さに応じて DO を 4 段階で制御 32 振られているかを検出して DO を「 Lo 」か「 Hi 」に設定 33 シェイク積算モード 1 ド番号は各数字を足した 15 と指定 上向きの面を通知 64 ターン します。モード 256 はラズバイマガ スピン 角度を通知 128 省電力 スリープモードで待機 512 ジン 2015 年春号で紹介した、猫の ねこった一と互換性のあるモード 256 N ekotter 行動を見守れる「ねこったー」と互 ニュー画面が表示されるのに対し に TWELITE R 上のリセットボタ 換性があるモードです。講談社の週 て、 2525A では Connected の表示後 ンを押すか、 + + + を押して「 !INF 刊モーニングで連載していた電子工 $ dmesg ロ ( 略 ) [ 3404.743974 ] usb 1 - 1 . 4 : new full-speed USB device number 6 using dwc_otg [ 3404.868684 ] usb 1 - 1 . 4 : New USB device found, idVendor=0403, idProduct=6001 [ 3404.868709 ] usb 1 - 1.4 : New USB device strings: Mfr=1, Product=2, Seria1Number=3 [ 3404.868727 ] usb 1 - 1 . 4 : Product: TWE-Lite-R [ 3 404.876351 ] u s b 1 - 1 . 4 : FTDI USB Seria1 Device converter now attached to ttyUSB1 図 7 TWELITE R を認識させる $ cu ー 1 /dev/ttyUSB0 -s 115200 ロ Connected . 十十十と入力する。 画面上には表示されない CONFIG/App_Tag V2 - 00 ー 1 / SID = 0X81010C2d / LID = 0X00 AppIication ID ( 0X67726305 ) set C h a n n e 1 s ( 15 ) C : set Tx P ow e r ( 3 ) X : set b : UART baud ( 38400 ) set UART option ( 8N1 ) B : set Enc Key (0xA5A5A5A5) k : set Option Bits ( 0X00000001 ) 0 : set S : save Configuration R : reset to Defau1ts 図 8 MONOST ℃ K の設定を変更する ー s 115 2 0 0 ロ $ cu ー 1 /dev/ttyUSBI Connected . ! I N F E X I T I N T E RAC T I V E M 0 D E . 説明 動作モード 機能 ラスパイマガジン 201 ⅱ 0 特別付録 46

8. ラズパイマガジン = Raspberry Pi Magazine 2017年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 をうまく動かす

9. ラズパイマガジン = Raspberry Pi Magazine 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

10. ラズパイマガジン = Raspberry Pi Magazine 2017年10月号

ラスパイレポート ラズバイ公式 OS 「 Raspbian 」に新版 Scratch 2 で電子工作に本格対応 Raspberry Pi の公式 OS 「 Raspbian 」の新版が 6 月にリリースされた。ヒ ジュアル開発環境「 Scratch 」の新版「 2 」と、使いやすい PYthon の開 発環境「 Thonny 」が追加された。 Scratch 2 で GPIO 制御プロクラムが作 りやすくなった。 8 月には再度バージョンアップし公式センサーポードにも対応した。 図 3 がクリックさた config40ut を送る 回繰り返す qPi0150 仟を送る gpi0150n 。、を送る 1 Scratch 1 .4 の L チカプログラム Raspberry Pi ( ラズバイ ) の公式 OS である Raspbian の新版「 Jessie June 2017 」が 2017 年 6 月 21 日に公 開された。併せて、専用インストー ラーの NOOBS も 2.4.1 になった。 今回の主な強化ポイントは表 1 に 示す五つだ。さらに、 x86PC 上で 動作するライプ版もバージョンアッ プされ、 PC のストレージへインス トールすることが可能になった。 PC 用の新版は「 https://www.raspber rypi.org/downloads/raspberry-pi- deskt 叩 / 」からダウンロードできる。 新版で注目すべきは「 Scratch 」 のバージョン 2.0 が追加されたこと だ。 2017 年 8 月 16 日には Raspbian か 「 Stretch August 2017 」にバージョ ンアップされ、 Scratch 2.0 には公式 センサーポード「 Sense HAT 」へ のサポートが追加された。以下では Scratch 2.0 の強化点を見ていこう。 表 1 Raspbian 6 月版の主な追加機能 カーネルがバージョン 4.9 へ更新 Scratch バージョン 2.0 を追加 Scratch 2.0 ではラズバイの G 円 0 操作がよ り容易に Python の開発環境として、初心者にも経験 者にも使いやすい「 Thonny 」を追加 メニューなどのアイコンをより細いアウトラ Scratch に GPIO 専用「プロック」 Scratch はプログラミング言語を 知らない初心者でも構文を覚えるこ となく開発できることを目指したプ ログラミング学習環境である。ラズ パイでは長らくバージョン 1.4 が提 供されていたが 2.0 が加わった。 メニューの「プログラミング」か ら「 Scratch 2 」を起動すると最初は 英語表示になっている。図 1 のよう に地球儀のアイコンをクリックして 「日本語」を選ぶと日本語になる。 特に使いやすくなったのが、電子 工作で用いる GPIO の制御だ。 GPIO を使うには「スクリプト」タブの 「その他」をクリックして、「拡張機 能を追加」というボタンを押す。続 いて「 Pi GPIO 」を選択して右下の OK を押せば、 GPIO を制御するた めの「プロック」が図 2 の左のよう に追加される。 このプロックを使った、 LED を 点滅させる「 L チカ」プログラムが 図 2 の右だ。「 set gpio to 」という インのものに差し替え E 卩“を 1 ) 顰 ( 0 とし クリック にはんこ プロックを使 い、 GPIO の番 号 ( 15 ) をキー ポード入力で 指定し、消灯 する (Low に する ) 場合には プルダウンメ ニューから「 ou tput low 」を選 ぶ。プルダウン スクリプト ↓十ハ コスチコーム その他 pi GP ー 0 第 拡張機能を追加 プロックを作る gPlO high? set 9 0 tO output ん gh メニューで「 output high 」を選べ がクリックされたとき グラム L チカのプロ いためだ。 ( ライター須藤健一 ) CPU では Pepper Flash が動作しな 上で動作しており、 Pi Zero や Pi 1 の Google 社が開発する pepper Flash) 意が必要だ。 Scratch 2 は Flash ( 米 Pi2 / 3 上でしか動作しないことに注 ただし Scratch 2 は、 Raspberry らす煩雑だった。 田という文字列を入力しなければな 1015 を Low にする」なら「 gpi0150 にする」なら「 config150ut 」、「 GP 要があった。「 GP1015 を出力モード い、文字列入力で機能を指定する必 のも「を送る」というプロックを使 切り替えるのも、 High/Low にする 書いたのが図 3 だ。 GPIO のモードを 同じプログラムを Scratch 1.4 で を 10 回繰り返す。 ないだ LED が 1 秒ごとのオフ / オン グラムを実行すると、 GP1015 につ 選べば入力モードになる。このプロ ば GPIO が High になり、「 input 」を スクリプト プロックを市も 嫂議第を第 10 第 G 曰 0 制御用 のプロック set gpiO set gpiO tO 0 破 pu い OW tO output ん gh 図 1 Scratch 2 で「日本語」を選択 0 ラスパイマガジン 2017.10 図 2 G 曰 0 制御用の「プロック」で L チカプログラムを書く