広帯域 1 1<—l.3GHz! 10 万円 IJSB ネットワーク・アナライザ VNWA3E のすべて ます . 通常 , 水晶振動子のインピーダンスはかなり高 ・測定結果 めで , 直列共振周波数が印加された場合にのみ , イン 図 2 は , QCM センサの出力周波数を 4 秒間隔で測 ピーダンスは低くなります . 定した結果です . 乾燥していくにつれて , 水晶振動子 に付着した分子が少なくなり質量 ( 負荷 ) が減るため , 測定 共振周波数は徐々に上昇しています . また , 摩擦が減 少することにより Q 値が上昇するため , 共振周波数幅 ・測定方法 が狭くなっています . QCM センサが外部負荷に対してどれだけ俊敏かっ データの解析 敏感に反応するかを , VNWA で観測します . 測定前に , 湿った空気を QCM センサ容器内に送り込み , 時間経 過と共に湿った空気が徐々に水品振動子から乾燥して ・過去に測定したデータと重ねて表示する いくようすを測定します . 図 2 は , 乾燥していく振動発振子の出力周波数の定 図 1 に示す構成で , スルー測定モードで評価します . 性的挙動を表しています . 時系列表示をしているため , この構成では , 1 Q レンジのインピーダンスを測定で 乾燥とともに , 共振周波数が高くなり , Q 値が上昇し きます . 被測定対象 (DUT) のインピーダンスを増加 ていることが分かります . させると精度も上がります . 時系列表示は , VNWA ソフトウェアの Storage Screen 機能を用いました . 過去に測定した複数の結 VNWA ソフトウェアで測定 果と現在の測定値を比べることができます . 今回は , データの表示や解析を行う 事前に測定した乾燥時の測定結果と , 4 秒間隔で測定 DDS/ オーディ した結果を重ねて表示しています . オ・コーデック などの制御 ・測定値から等価回路モデルに自動変換する USB 定量的な結果を得るには , 図 2 に示した各測定曲線 をリアルタイムに分析する必要があります . この分析 には , 図 3 の VNWA の Crystal Analyzer を使用します . Crystal Analyzer は , 水晶振動子に特化したモデ ル・フィッティング・ツールです . シングル・スイー プ・モードで水品振動子を 1 個ずっ測定したり , 連続 スイープ・モードで同一素子を長時間にわたり測定し VNWA ( ) 09 (j 09 TX ポート RX ポート 被測定対象 ( み ) 波形データ ( 測定値を A - D 変換したもの ) 通過特性を測る 図 1 高インピーダンスの水晶発振子 zx はスルー測定モードで 測定 ( 非共振時 ) 0 パソコン 乾燦時 Stop = 21 .03 MH ををま第を物 0 物第を協物第な鬆第を第ガ ー 1 0 時間 経過 当 4 秒間隔で 測定した結果 1 ・ワ」っ ねは = 21 、 005MHz Cente 「 = 21 .0175 MHz 図 2 湿った空気を QCM センサに流して 4 秒間ごとに連続スイープした測定結果 湿気が蒸発するにつれて共振カープはゆっくりと乾燥時へと戻っていく ンシスタ技術 2016 年 3 月号 周波数気 Hi ] メ 159
220 FIOV で非常に小さく , 許容リプル電流は大幅 に不足しています . 実測してみると , 出力電流は当然 IA 出せず , 0.3A 程度しか取れませんでした . これでも時間さえかけれ ばスマートフォンの充電はできてしまいます . ・もちろん安全性も確保されず表示に偽りあり 安全性の面では , YUAN SOUND の AC アダブタと 同様 , 安全規格を無視した設計になっています . しか も , ケース表面に印刷された表示は , MODEL A1265 という型番表示を始め , アップル純正 AC アダブタと 全く同じ内容でした . 中国では , このようなとんでもない製品があちこち で販売されています . 安いからといって購入しないよ うにしてください . 最悪 , 自分の命に関わります . 実際に中国では , 充電中にスマホで電話をしていた 人が感電事故で亡くなる事件が数件起きています . 安 いのには理由があります . 安い物はそれなりです . Appendix 安全で十分な性能を持つ AC アダブタを選ふ方法 ・付属品や純正品が安全 スマートフォンなどの付属品や , オプションで購入 した純正品であれば , 性能も安全性も問題ないといえ ます . アップルやサムスンなど世界的に著名なメーカ は , 自社の製品で安全性に関わる事故が起こると企業 の信用に大きく傷がつくので , 安全性には非常に気を 使っています . ・購入するなら PSE マークの表示を必ず確認 問題は , いろいろな店で購入できる製造元がはっき りしない激安 AC アダブタです . このような AC アダ プタを購入して自宅や会社で使用するのであれば , 最 低限 , AC アダブタのケースに表示されている定格銘 板を確認して , 安全規格のマーク ( PSE マーク ) がつい ている事を確認しましよう . 日本国内で AC アダブタを販売するには電気製品安 全法の技術基準を満足していなければなりません . 技 術基準を満足しているかどうかは第三者認定機関で試 験調査し , その機関の名前またはロゴマークを表示す る事が義務付けられています . この技術基準を満足し ている製品は PSE マークを表示できます . 電気用品安全法の技術基準は , 使用者の感電 , 製品 の発火発煙 , 他の電気製品へのノイズによる妨害など がないように , 設計や試験の内容を規定しています . AC アダブタの場合 , 接続できる AC 電源電圧と周 波数 , 入力電流 , 出力電圧 , 出力電流の表示が義務づ けられています . 届け出事業者の名前の表示も必要で , 普通は輸入業者の名前が表示されています . ・ AC アダブタに付けられている銘板の読み方 一般的な AC アダブタの銘板表示の例を図 7 に示し ます . この図を参考に自分が使用している AC アダブ タの表示を確認して見てください . 自分の負荷と照らし合わせ , 電圧が合致しており , 十分な電流を供給できるのかを確認しましよう . 表示してある出力電圧や電流を定格値といいます . 156 定格値を越えた使い方をした場合 , 安全性は問題なく ても , 電気的な性能は保証されません . これらの表示がない製品の販売は違法です . 自分に 危害がおよぶ事もありえるので , 手に入れても絶対に 使用してはいけません . ・嘘の表示もある / 信頼できる調達先を選ぶ 銘板表示があっても安心できないのは , 先に示した 実例の通りです . PSE マークは , 製造者が自己責任で 表示できてしまいます . 中国などの違法な製造業者の AC アダブタでは , 技術基準を満足していないのに表 示をしていることがあります . PSE の技術基準に合致しているかどうかを証明する のが , 第三者検査機関と届け出事業者です . おかしい モデル NO. 人出力定格 表示 ニ重絶縁マーク (240V まで人力できて安全 アースがないので , 二重絶 縁構造が要求される ) MODEL AD5040CQ ålnput : AC 100-240V 50/60Hz 0.2A : : Output : DC 5V 1. OA PS ロ CQ 電気株式会社 検査機関 PSE マーク届け出事業者出力プラグの 名称また ( 技術基準適の名称 極性表示 はマーク合宣言 ) 図 7 購入して大丈夫なはずの AC アダブタの銘板表示例 信頼できる店からこの銘板表示がある製品を買えば大丈夫のはず ンタ技術 2016 年 3 月号
リスト 1 USB カメラを取得するプログラム (capturejpeg. c) #include <stdio . h> #include く highgui . h> int main(int argc, char *argv[ ] ) 中略 最初のアーギュメントが カメラ番号 ( O か 1 ) になる CAMN 番目カ OFF" だっ たらアプリケーション終了 pos_onoff strstr (str_camn [CAMN] ′℃ (") ー if (pos_onoff NULL) return ー 1 ー capture=cvCreateCameraCapture (CAMN) ー CAMN = at0i (argv[l] 房 sprintf ( savefile ℃ AM%S ・ jpg" argv[l] ) ー printf ( "%sYn" ′ savefile ) ー fp = fopen ( ” camonoff . txt" ′ if( fp NULL ) { printf ( " 0 ん s cannot be return ー 1 ー strcpy (str camn [ 0 ] ′℃ FF") ー strcpy (str camn [ 1 ] ′℃ FF") ー ファイルを開いて読む 1 なら CAM1.jpg 0 なら CAM0.jpg, ℃ FF" で初期化 str-camn[] を opened . fname ) ー ! = NULL) { while(fgets( mail line, 1024 ′ fp) if (capture==NULL) キャプチャ構造体の初期化 CAMN 番目のカメラを使う if( (pos strstr(mail line, ℃ AMO つ ) i f ( pos [ 4 ] 0 & & pos [ 5 ] strcpy(str camn[0] ′℃ N つ一 if( (pos strstr(mail 1 土 ne ′℃ AMI") ) i f ( pos [ 4 ] ' 0 & & pos [ 5 ] strcpy(str camn[l], ℃ N つ一 NULL NULL fprintf (stderr ′ "can not find a camera! ! Yn") ー return ー 1 ー ウインドウの作成 while(l) if (cvWaitKey ( 1 ) > = 0 ) { 何かキーを押したら終了 cvShowImage (winNameCapture ′ img) ー img=cvQueryFrame (capture) ー 表示する ウインドウに 1 フレームをキャプチャ cvNamedWindow ( winNameCapture ′ CV_WINDOW_AUTOS I ZE ームを . JPEG ファイルに落とす 1 00 フレーム ( 数秒 ) 後の最後フレ fCO 十十一 else { break; cvSaveImage (savefile, img, 0 ) ー 10 0 ) else if(fco break; break; fclose ( fp ) ストリング・サーチしてカメラ 〇 N / OFF 情報を得る . ファイルを閉しる 文字が入る str-camnC ] には ON/OFF の cvDestroyWindow (winNameCapture) ー cvRe1easeCapture ( &capture) ー return 0; ウインドウの破棄と 構造体のリリース ・フリーの画像処理ライブラリでカメラ撮影プログラ ムを作る アプリケーションの作成には , 前章でインストール したオープンソースの画像処理ライプラリ OpenCV を使います . このシステムに必要な USB カメラの制 御 , 画像表示 , JPEG ファイルへの画像変換といった 複雑そうなプログラムも短い記述で作成できます . こんな装置 ・スマホからメールで指示を送って動かせる ユーザはラズベリー・パイからのメールに返信する ことで , どのカメラを撮影に使うかを指示できます . 温度計の値を見たいときは , カメラ 0 で撮影し , 花の ようすを見たいときは , カメラ 1 で撮影する , という ことをラズベリー・パイにメールで指示します . ・自前サーバを使わないからセキュリティ知識は不要 このシステムでの通信は , すべてメールで行います . 自分で外部からアクセスできるサーバを立てる必要が なく , ネットワーク知識やセキュリティ対策は最低限 で済みます . ラズベリ ・パイをサーバに仕立てるには , IP ア ドレスを設定したり , ダイナミック DNS サービスに 登録したりと面倒です . 仕事場や自宅の画像を Web 上に晒すわけですから , ありません . それなら , ばよいのです . あまり気持ちのよいものでは サーバを立てないで実現すれ ・低価格 , 低消費電力なので気軽に台数を増やせる 現在ラズベリー・パイ 2 Model B は 5 , 000 円弱 , USB カメラは 1 , 500 円程度と安価です . 記事では USB カメラを 2 台使用しますが , USB ハプを使えば 4 台 , 10 台と増やせそうです . ラズベリー・パイや USB カ メラは今後さらに低価格化が進むでしようから , カメ ラを 100 台以上遠隔操作し , 監視するシステムも近い 将来 , 身近になるかもしれません . 小型で安価 , 低消費電力 , セキュリテイもバッチリ な遠隔操作システムにチャレンジしてみましよう . 要素 1 : カメラ画像の取得 USB カメラの操作や画像の表示 , 保存には OpenCV を使用します . OpenCV のインストールは , 第 6 章で 行っています . ソース・コードをリスト 1 に示します . 本誌サポー ト・サイトに試せる環境を公開していますので , ダウ ンロードして試してみてください . 84 ■ダウンロード方法 : http://toragi.cqpub.co.jp/にアクセスし上部メニューから [ ダウンロード ] [ 2016 年 ] を選択して本記事のリンクを選択してください ンシスタ技術 2016 年 3 月号
実行 コンパイルがエラーなしで通ったら , という実行ファイルができているので , 行します . network latency 次のように実 "edgedetect" 1 フレーム前の動画キャプチャ , そしてこれらの画像 すと , 図 2 のように USB カメラからの動画キャプチャ , にサンプル・プログラムを用意しました . これを動か 写体の動きを検出してみましよう . 実験 1 と同じよう カメラをラズベリー・パイ 2 に接続して , 動画で被 「動き検出」 画像処理の実験② imgproc/src/canny. cpp で見られます . cvCanny 関数の中身は opencv ー 2.4.10 / modules / 工ッジを検出できます . 理も , 関数にパラメータを入れるだけで簡単に使えて , ています ( 1 ). canny アルゴリズムのような複雑な処 画像の工ッジ検出には cvCanny という関数を使っ ・エッジ抽出も関数ー発でできる ドウに表示するだけでも一苦労です . で記述するとなると , JPEG ファイルを読んでウイン ずか数行で済んでいます . これらなしで一から C 言語 でパラメータを指定し , cvShowImage で表示 , とわ す . cvLoadImage でファイルを開き , cvCreateImage リスト 2 では OpenCV の関数をいくつか使っていま ・ JPEG 読み込みや画像表示の関数を使う + ℃ ] を入力します . 像上で何かキーを押すか , LX TerminaI 上で℃ trl] されています . アプリケーションを終了するには , 画 図 2 のようにウインドウが 2 枚現れ , 工ッジが検出 samples/cpp/building ・ jpgz . / opencv ー 2 . 4 .10 / . /edgedetect の差分を表示します . ・ラズベリー・バイにカメラを接続する 写真 1 のようにラズベリー・パイに USB カメラ ( 工 レコム製 UCAM ー C0220FB ) を接続します . ラズベリ ・パイがカメラを認識したかどうかは , 次のコマン ドで確認できます . $ cd 、 ~. 。 /devIZ $ ls ロ 図 8 のように videoO というファイルが表示されれば 認識が成功しています . 最近の USB カメラで UVC (USB Video CIass ) 対応機種なら , ほば認識されます . ・動き検出のプログラムをコンバイルして実行 実験 1 で試したサンプル・プログラムと同じディレ クトリに motiondetect. c ( リスト 3 ) というソースコー ドがあるので次のようにコンパイルします . $ g c c p に g ー c 0 n 工土 g motiondetect.c cflags 、 ~ コ opencv 0 motiondetect=. pkg—config libs opencv コンパイルすると , motiondetect という実行ファイ ルができているので , 次のように実行します . $ . /motiondetect[Z)l すると , 図 2 のように画面が 3 枚表示され , 1 枚は USB カメラからの動画 , 2 枚目は 1 フレーム前の動画 , 3 枚目はそれらの差分が映し出されます . ・デバイス・ドライバの操作は OpenCV まかせ USB カメラを操作するには , デバイス・ドライバ の操作が必要になり , 一から C 言語で記述するのは大 変です . OpenCV の関数を使えば , cvCreateCamera Capture でキャプチャ構造体を初期化し , cvQueryFrame で 1 フレームをキャプチャ , cvShowImage で 1 フレームを表示 , とわずか数行で /dev ディレクトリの内容を s コマンドで表示する ファイル ( 1 編集 ( E ) タブのヘルプ ( H ) 図 8 デバイス・ ファイルを格納す る /dev ティレク トリの中に vide00 があれば USB カメラは認 識されている 80 t00P2 100P3 100P4 network nutl PPP ptmx oi ・「 aspbe 「「 YPI : / d ド $ ー t00P0 loop-control Log kmsg input initctl •c.hefilr し us ト t 「 fs ー ( ont 「 oL 0 [ 0 ( k 「 am10 「 8m1 1 rfkill stderr stdin stdout tty0 tty10 乙 3 tty24 tty25 tty26 tty27 tty2B tty29 tty30 tty3t tty32 + t.y33 t [ tty46 tty47 tty48 tty49 tty5 tty50 tty52 tty53 tty54 ttyAh, 、 ttyprintk uhid uinput urandom ( ー cma vchiq V C 10 V [ 5 a し vcsa7 V ( videoø Z e 「 0 1 throughput vide00 ファイルが表示されれ läUSB カメラが認識されている ンシスタ技術 2016 年 3 月号
#include く wiringPi . h> void delay (unsigned int howLong) VOid de1ayMicroseconds (unsigned int howLong) 出力 : なし 入力 : ・ howLong ウェイト時間指定 delay : ms 単位 delayMic 「 oseconds : us 単位 (a) 指定時間 ( ミリ秒 / マイクロ秒 ) ウェイトの書式 de lay ( 10 0 房 de1ayMicroseconds ( 1 の一 図 2 指定時間ウェイト A / / 100ES ウェイト 〃 1 0 us ウェイト ※ 1 OO 〃 s 以上のウェイトは nano 引 eep ( ) システム、コール利用 100 us 未満は while() ループ (gettimeofday() で経過時間チェック ) (b) 使用例 は Linux に用意されている ge ⅲ meofday ( ) を使って指定した経過時間後の時刻になるまで 待つようにしているという違いがあります . ■サンプル・プログラム・・・経過時間表示と矩形波出力 delay() でウェイトしながら , mi Ⅱ is ( ) と micr 。 s ( ) で経過時間を取得・表示するサンプ 経過時間表示のプログラムをリスト 1 に示します ( ファイル名は「 witime. c 」 ). ムです . ル・プログラムと , delayMicroseconds ( ) を使って矩形波を出力するサンプル・プログラ これをコ リスト 1 タイミング関係 A サンプル・プログラム (witime. c) #include く stdio. h> #include く wiringPi. h> int main (int argc,char*argv[] ) int wiringPiSetup ( ) ー for ( 土 = 0 ー i く 15 ー土十十 ) { printf ("%5dms:%7d usYn" ′ millis ( ) ′ micros ( ) 房 delay ( 100 房 return ( 0 ) ー pi@raspberrypi&/work $ *. ,—cmwitime witime. c_—IwiringPi[Z pi@raspberrypiYwork $ sud0L../witime[Z ノ / 初期化ー コンパイル / / 100mS ウェイト //wiringPiSetuP ( ) からの経過時間表示 0ms : 320uS 10 lms : 1013 6 5 u s 2 02ms : 2 019 7 7us 13 0 6ms : 13 0 6 4 8 6us 14 0 6ms : 14 0 6 612 us pi@raspberrypi&/work $ 実行 実行結果 wiringPiSetuo() を実行 してからの経過時間 図 3 84 サンプルのコンバイルと実行 トランシスダ技術 2016 年 3 月号 別冊付録
ノ sp 土 . c ロ pi@raspberrypi -/work $ cat #include く stdio. h> #include く wiringPi. h> #include く wiringPiSPI. h> スコード表示 ソー char outdat [ 4 ] = { 0X01 ′ 0X83 ′ Oxa5 ′ Oxed}; int main ( 土 n む argcr char *argv[] ) Char c; int fd, data; fd = wiringPiSPISetup ( 0 ′ 500000 房 土 f ( fd く 0 ) { printf ("SPI Open error!\n") ー return ( 1 ) ー ソース コード SPIJ\ スを オープン 4 バイトのデータを送受信 data = wiringPiSPIDataRW ( 0 ′ outdat, 4 ) ー printf ("Data [%d] : ",data) ー for (c=0; c く 4 ー c 十 + ) データ表示 printf ("%02XH ",outdat [c] 房 printf ( ” \ n ”濤 return ( 0 ) ー pi@raspberrypi -/work $ cc ー 0 、 .. SPI 、 .. , SPI. C pi@raspberrypi ywork $ 00d0 . / sp 土ロ・ -- - 、、 -- -- - ⑩ Data[4] : 01H 83HA5HEDH 送信したデータが受信できている pi@raspberrypi -/work $ 図 26 S サンプルのソースコードとコンバイル / 実行結果 SPII_SCLK SPII _MOSI SPII _MISO SPII_CEO S PI 10u 10 リ 中」 リ 4 」リ u リ 6 リ u リ u リ 4 」 リ 4 」 u リ リ らリ リ リ リ リ 13775u リ 4 」リリ 2 s 図 27 SPI 動作波形 まま受信されるようにしてみました . 外部に 74HC04 や FET などによる反転回路を入れ れば , ビット反転したデータになります . 図 26 はソースコード表示 , コンパイル , 実行したところです . 送信データである , 01 , 83 , A5, ED がそのまま読めています . 図 27 は動作時の波形をロジック・アナライザで取得したものです . モード 0 で動作し ており , クロックの 1 サイクルが 2 us ですので , 設定どおり , 500 kHz で動作しているこ とがわかります . 一番下の「 SPI 」のところはプロトコル解析機能を使ってデータ表示し ています . 60 トランシスタ技術 2016 年 3 月号 別冊付録
緊急実験 ! 5 ドル I/O コンビュータ上陸 特集 25 % 消 LED 点 、肖点消点 消点 灯 丁 ( 明るい ) 灯 灯 ′ J 灯 (a) デューティ比 O. 25 ディスプレイ 拡張 HDMI 表示 LED コネクタ 操作 , 設定 GPIO スイッチ パソコン用やテレビ パソコン用機器が 使える USB メモリ ( 画像データ ) Wi-Fi ドングル 75 % USB 消点 消 点 消 点 消 点 消 LED 灯灯 灯 灯 灯 灯 灯 灯 灯 ( 暗い ) USB ラズベリー・パイ 2 Model B 無線 LAN (b) デューティ比 O. 75 自作部分は GPIO LAN, インターネット を使う 図 7 ④ PWM 信号・・ " H " と " L " の幅 ( デューティ比 ) を変えるこ とで LED の明るさなどを調整できる 図 8 パソコン用機器と自作部分を組み合わせてサッと作れる例 ” L ”点灯の回路を組んだ場合の波形 ・・多機能フォト・フレーム として使うことができます . また , モータのトルクや LED の明るさを滑らかに変化させることができます . の祖父母にこのフォト・フレームをプレゼントして , モータのような電力を要するデバイスを直接駆動さ 孫の近況を日々更新表示してあげると喜ばれるかもし せるドライプ能力はありません . トランジスタなどに れません . >12C 機能を活用・・・計測装置 よるバッフアが必要です . また , ラジコン用のサーポモータの制御信号を作る 12C で通信できる 24 ビットの A ー D コンバータ IC を 接続すると , グラフ表示 , 演算機能 , 記録機能が充実 こともできます . した計測器が実現できます . ネット接続で遠隔収集も ・ HDM ト・ディスプレイ出力として使える 可能です . 電池駆動は難しいですが , 100V 機器とし 家庭の大型テレビに接続すれば , フル HD 解像度で ては低消費電力の装置が実現できると思います . Linux のデスクトップ画面が表示できます . >Linux の得意分野 / 家庭用サーバ 音楽データや映像データ , インターネット・ラジオ 音声・・・卩 S 端子搭載で話題のイレゾにも対 など , サーバ用途はアイデア次第でさまざまなものを 作る事ができると思います . アナログ音声はジャックからも出力できます力 , 40 注意点はラズベリー・パイのファイル・システムカゞ ピン拡張コネクタの 12S 端子を使うと , 最近話題のハ イレゾ・オーディオにも対応できます . SD メモリーカード上にあることです . 24 時間稼働で ファイルの読み書きが連続すると短期間で SD メモリ HDMI 端子にも音声信号を出力できます . また ーカードが寿命に達する恐れがあります . 安価なので USB マイクを使うと音声を取り込めます . 消耗品と考えてもよいでしよう . こんなものが作れる マイコンとの組み合わせ・・・画像認識のロポット PWM で制御できるモータは , 電圧で回転数が変わ ラズベリー・パイは , 多くの周辺機器が簡単に接続 るプラシ付き DC モータです . できます . なおかっソフトウェアの開発も自由自在に ロポットに使われるサーポモータを直接制御するこ とはできません . リアルタイム制御が必要なサーボモ 行えるため , 作る対象に専念できます . ラズベリー・パイを使えば , 市販品にはない , ータ制御はマイコンに任せ , 画像処理や画像認識など 規模の大きなソフトウェア処理をラズベリー・パイが わりの機能に専念した装置が作れます . これこそ自作 担当する方法もあります . の醍醐味といえると思います . すぐ作れる / 多機能フォト・フレーム 作るためのヒントが盛りだくさん 私がすぐに思いつくものは , 図 8 のようなフォト・ フレームです . USB メモリ内の画像ファイルを表示 ・世界中の仲間が助けてくれる するだけでなく , 無線 LAN 接続をすれば , インター ハードウェアがらみの開発では , ターゲットが動く ネット・ラジオを BGM で流す , パソコンから写真の 入れ替えをする , 遠隔地の Web カメラの画像を表示 まで , つらく長い試行錯誤の時間が必要です . ューザ の少ないマイコン・ポードで特殊なハードウェアを対 するなど , アイデア次第でいろいろ楽しめます . 郷里 73 ンシスタ技術 2016 年 3 月号
int piBoardRev (void) ポードのリビジョンを取得します . イ 2 では 0X02 が戻ります . WiringPi 内部では , /proc/cpuinfo 戻り値は 0X01 , 第 3 章 WiringPi の基本作法 または 0X02 です . ラズベリー を読み出し , 得られるリビジョン番号 (Revision: の項目 ) の最終桁が・ 2 ' や・ 3 ' なら Revision1, それ以外は Revision2 として扱っています . ・サンプル・プログラムと実行結果 リスト 1 は , リビジョン表示のサンプル・プログラムです . ファイル名は 「 revision. C 」 としました . 中身は , printf() を使って piBoardRev() の値を表示するというものです . コンパイルと実行した結果は図 2 になります . ラズベリー・パイ 2 で実行しましたので , リビジョン値は 2 が返ってきていることがわかります . リスト 1 リビジョン取得サンプル・プログラム #include く stdio. h> #include く wiringPi. h> int main (int argc ′ char *argv[] ) printf ("Revision = %dYn",piBoardRev() ) ー return ( 0 ) ー pi@raspberrypi &/work $ caturevision. int main は nt argcrchar *argv い ) #include く w 土 r 土 ng を土 . h > # = 土れ C1ude く stdiO. h> printf = %dYn", PiBoardRev ( ) ) return(0) : v//piBoardRev ( ) によるリジョン取得と表不 ソースコード ( re ⅵ sion. c ) を表示 ソースコード pi@raspberrypi m/work $ ccu—o,_,revision,_,revision. C 実行 pi@raspberrypi ywork $ sud0,_../revisionQ —1wiringPi[Z コンパイル Revision = 2 pi@raspberrypi &/work $ 図 2 コンバイル & 実行例 ラズベリー・パイ 2 なので 2 が返ってきた トランタ技術 2016 年 3 月号 別冊付録 23
ブラックボックス解剖コーナ プロの目 / 200 円アジア製から 2 , 200 円純正 まで , 設計 / 性能 / 安全性 / 寿命を徹底評価 粗悪品と優良品を見極めろ / 4 種類の iPhone 充電用 AC アダブタ 並木精司 seiji Namiki 最近 , スマートフォンやタブレットの充電用をは じめとして , USB コネクタの出力を持つ AC アダブ タが増えています . 汎用に使えること , iPhone 用 が小型でコンパクトなことから人気があり , 100 円 ショップでも購入できます . AC アダブタは 100 V を入力とします . 粗悪品だ と , 命に関わる事態になりかねません . メーカ純正 品と激安品では何が違うのか , 外観ではわからない 中身の違いを明らかにすべきです . 安全性に問題が ある AC アダブタはどういうものなのか , 安全で良 好な性能を持つ AC アダブタを手に入れるにはどう (a) 100 円ショ、ソプで 200 円の (b) ア、ソプル純正の く編集部〉 したらよいのかを解説します . AC アダブタ AC アダブタ 写真 1 スマートフォン充電用の小型 AC アダブタは安価なもの も売っている 見かけは同じだが価格は大きく違う . 中はどのくらい違うのか ? ①よくできているハイ・コスト・パフォーマンスの 200 円 AC アダブタと ② iPhone 用純正 AC アダブタ ・外観はほぼ同じなのに値段が 10 倍違う ? ! ・入力 100 V ー 240 VAC 50 / 60 Hz iPhone には , 白くて真四角な超小型 AC アダブタカ ・出力 5. OV DC 1. OA 付属品で付いています . そっくりな AC アダブタカ 両者共に , 日本の電気製品として安全であることを 100 円ショップで 200 円 ( 税別 ) で販売されています ( 写 示す PSE マークがついており , 第三者機関の適合試 真 1 ). 純正 AC アダブタの定価 2 , 200 円と比べると何 験に合格しています . だか安すぎます . はたして 200 円の AC アダブタは本当に使えるのか , ・電気的性能 安全性に問題はないのか調査してみることにしました . 出力特性は互角 外からチェックできる内容を確認 両者の出力特性を比較してみました ( 図 1 ). 200 円 AC アダブタは , アップル純正 AC アダブタに対して 遜色ありません . ・サイズと表示 A200 円 AC アダブタの出力特性 外観を比べます . 微妙な立法の差はありますが , お 200 円 AC アダブタの出力特性は少しうねっていま おむね同じ大きさです . す . 出力コードによる電圧降下を補償する機能 ( コラ 性能表示や安全規格表示 ム 1 参照 ) が入った制御 IC を使用した場合 , このよう 両者共に次のような定格表示がされています . 同等 な特性になります . の性能となっています . 出力電流が定格出力電流 IA 超えたあたりから綺麗 ンシス 9 技術 2016 年 3 月号 うまい話は ないのだ ヾ、ヾ、 144
リスト 3 UART サンプル・プログラム #include く stdio. h> #include く w 土 r 土 ngP 土 . h > #include く wiringSeria1. h> intmain(int argc ′ char*argv[]) int fd; int outdat, indat ′ c; fd = seria10pen("/dev/ttyAMAO", 9600 ) : printf ("%dVn" ′ fd); シリアル・ポート・オープン while (c--) { ア大ッププっている数分読み出す while(! (c=seria1DataAvai1(fd))) ノイ到達行 seria1Putchar ()d ′ outdat) ー ツデタ出ガ for (outdat=Ox40; outdat く 0X44 ー outdat 十 + ) { ノ / 表示 ツ文字取り込んを学 printf ("%c [%02XH]Yn ”′ indat, indat) ー indat = seria1Getchar (fd) ー seria1Puts (fd' "@ABCD") ;seria1C10se (fd) ー 1 文字ずつ出力 return ( 0 房 @ABCD の 5バイト連続出力 と表示 416 リ 416u UART-TxD UART-RxD UART UART UART-RxD UART-TxD 7 当 0 リ Ox40 を出力 ldle 3. 受 rn 3 m 7 リ 7 u 3522E 3.522E 52 師 Ox41 を出力 (a) 1 バイトすつ出力 3738g 3738E ldle Ox42 を出力 520u 520u 41 16 リ 16u "@ABCD" (0x40&Ox44) を 1 行として連続出力 (b) se 「 ialPuts ( ) を使って連続出力 図 37 UART サンプル動作波形 serialPuts() を使って連続して出力させたときの波形です . 動作波形は図 37 に示します . (a) は 1 バイトすつ出力して表示させているとき , 最後に seriaIPuts() で "@ABCD" の 5 バイトを連続出力しています . (b) は 68 トランシスタ技術 2016 年 3 月号 別冊付録