PIC AVR 工作室->TopPage->執筆した本

執筆した本

私が執筆した本や、関わった本についてご紹介します。

基礎からのFritzing

公式サポートページ

http://www.kohgakusha.co.jp/books/detail/978-4-7775-2028-2

概要

Fritzingを使って実態配線図/回路図/PCBを描いたり、パーツの作成方法について解説した本です。

Fritzingは、EAGLEやKiCADのように、回路図を描いたり、ガーバーデータを出力してプリント基板を作成する時に使う、 回路図用のCADソフトです。

この本では、Fritzingを使って、回路図の描画から、パーツ作成、ガーバーデータ出力といった、一連の機能について解説しています。

一方、そもそもの「回路設計」とか「電子回路とは何ぞや」といった、電子回路・電子パーツはなんぞや?といったそもそもの情報については、 この本では解説していません。いわゆる、Fritzingで回路図を描いたり、パーツを作ったりする、「Fritzingの使い方・操作法」の解説書です。

Fritzing自体は、他の類似ソフトと比べて、Arduinoユーザーなどのライトユーザーでも回路図を描けるように使い勝手が工夫されていて、 使いやすくできてます。そのため、大抵の操作・大抵の機能は、こういう説明を読まなくても、だいたい使えてしまうのではないかと思います。

この本は、そういったFritzingの特性を踏まえた上で、2つの視点で書いています。

一つは、実体配線図や回路図、プリント基板図を描く上での操作方法や、それにまつわる各種概念の解説、 業者に基板製作を発注する際の情報などを整理するという視点です。ある程度機能を網羅しているので、 「こんな機能が!」とか「こんな使い方が!」といったこまかい内容まで触れています。

もう一つは、パーツ作成に関する操作や内部の仕組みなどの解説です。基本的には、こっちがメインコンテンツです。

特に後者は、パーツのグラフィックデータ部分を描くのに、Inkscapeなど外部ツールを利用する必要があり、 (公式サイトも含めて)新旧の情報が入り混じっていたり、「機能」「内部の仕組み」「操作方法」について整理された情報が見当たらなかったり、 このあたりがきっちりまとまっているサイトなどが皆無といった状況です。

そのため、ナニをどうしたら好みのオリジナルパーツが作れるのかがわかりにくいと思います。 また、SMDパーツなど込み入った形状のパーツをゼロから作ろうとすると、パーツデータのデータ構造(複数のファイルが連携している)や、 個々のSVGファイルの内部構造がどうなっているか、など、ある程度わかっている必要があるので、そうした情報を交通整理しています。

さらに、現状はFritzingとInkscapeの間で、仕様の齟齬やバグがあるため、 部分的にSVGファイルの「XMLタグ」を部分的に手で補正する必要があったりします。

という具合に、現状はパーツの作成方法は色々難解なので、そのあたりを解説して、 自由にパーツを作成して自作基板で活用できるようにするのが、この本のゴールです。

パーツの構造やその作り方は、このように少し複雑なので、まず簡単なパーツを作って、その構造や操作方法、環境周りなどを理解しつつ、 それを元にもう少し込み入ったパーツを作ってみて、さらに付録のPDFでは自由にパーツを作るための情報を整理、という具合に、 らせん階段を3周しながら説明しています。

さらに、Fritzingで使用できる「基板の外形」も、InkscapeなどでSVG図形を描けば、好きな形状のものが作成できます。 そういった、好みの形状の基板を作成する方法についても解説しています。

というわけで、結果的に内容は、「Fritzing」「Inkscape」の2つのソフトについて解説している感じの内容になっています。

例によって、紙面は比較的簡単な部分の情報整理に振って、付録のダウンロードPDFでようやく本編的な内容に至るといった感じの構成になってます。 (多分、Fritzing使う上で一番知りたいところって、複雑なパーツを自由自在に作成する説明の部分だと思うので)

結果、付録のPDF資料が80ページくらい(紙面の半分近い量)あって、InkscapeでSMDパーツとか、基板の外形とかをデザインする説明に、 かなりを費やしています。

基礎からのOpenSCAD

公式サポートページ

https://www.kohgakusha.co.jp/books/detail/978-4-7775-1961-3

概要

OpenSCADの使い方、言語仕様、各種ライブラリ、および3Dプリンタ関係などの周辺情報を解説した本です。

OpenSCADは、PovRayのように、プログラムを記述することで、立体の造形を行うCADソフトです。

文法自体は、C言語にそっくりなので、C言語系のプログラムをいじったことのある人なら、すぐになじむと思います。 ポインタもオブジェクト指向も出てこないので、RubyやPHP、JavaScriptなんかの経験があれば、障壁はほとんどないとおもいます。

操作系が、一見GUI操作のCADのように見えつつ、移動も回転も変形も、すべてプログラミングによって操作するので、 その点だけ最初は戸惑うと思います。なので、付録のムービーで、その辺の操作系についての導入を解説しています。

立方体/直方体や、球、円柱のような簡単な立体(プリミティブ)を元にしてくみ上げることもできます。 また、2D図形を元に「押し出し」や「回転」といった操作で立体を作ることもできます。 この辺は、普通の3D-CADと変わりません。

でも、なんと言っても違うのは、世界中で作られているたくさんの「ライブラリ」でしょう。 「ライブラリ」を使うことで、インボリュート歯車のような複雑な立体がさくっと作れるんですが、 そのライブラリ自体も、普通のプログラムの文法で書かれているので、普通の3D-CADに比べて、拡張が容易なのがOpenSCADです。

ポリへドロンや、ミンコフスキー和のような、ちょっと複雑な機能については、pdfのダウンロード付録で解説しています。 また、関連ファイルの特徴や、3Dプリンタ/CNCフライス関係の情報なども、123D Design本のように一通り触れています。

123D Designは、かゆいところに手が届かない部分がありますが、OpenSCADなら、そういうところにも手が届きます。

そうそう。2D図形(SVGやDXFファイル)を作るときにも使えます。レーザーカッターで、板や紙などをカットするためのSVGやDXFを作るときに、 inkskapeとかだとちょっと融通が利かないよな…なんて思うことあると思います。 そんなときに、ちょこっとスクリプト書いて、自由度高い図形描画ができます。

Edison&ArduinoではじめるIoT開発

公式サポートページ

http://www.kohgakusha.co.jp/support/edison_arduino/index.html

概要

Intel Edisonで、「Arduino環境」や「node.js/MRAA」を使って、電子機器やネット接続を行う方法について触れた本です。

Arduino言語自体は、オリジナルのArduinoとほとんど変わりませんが、Arduino互換基板の電源電圧設定とか、 PWM Swizzlerの設定・使い方、電源配線などでオリジナルと異なる部分なども触れています。

node.js/MRAAは、node.jsやJavaScriptを使った事がない人でも大丈夫なように解説しています。 node.js、MRAA、JavaScript、jQueryを連動して、Edisonに接続したセンサやモータなどを、 ネット越しにブラウザ画面から操作することができます。

また、WICED Senseを題材に、BLE(Bluetooth Low Energy)との接続も行います。

ダウンロードのpdfデータで、OSが起動できなくなった場合のリカバリ方法、Linuxコマンド、ファイルシステム経由のGPIO制御、 などなどについて説明しています。

Ajax、jQueryなどを使うと、こんな感じで、web画面からスライダでサーボを操作したり、 ADCからセンサーの値を読み取ったりする事ができます。(ダウンロードのpdfにプログラムなどを掲載)

Yocto Linux、MRAAライブラリ、Arduino環境…、出版した当初時点では、頻繁にバージョンアップが行われていて、 バグなども逐次修正が行われてきています。が、小さなバグなどもまだ多少残っているようで、 色々実験を通しながら、それらを回避する方法なども探してきました(紙面やpdfで触れています)。

はじめてEdisonに触ってみるという方などが、環境面でハマったりするのを避けられるかと思います。

Edisonを使ってみた個人的な感想としては、Galileoなどのノウハウを元にしてIntelが本気で作ったマシンといった感じ。 本当にLinuxが動くマシンなの?と思うほどの省電力と、作りこまれたArduino環境(ソフト、ハード)を使った、扱いやすいお試し環境、 Yocto Linuxなどを通してネットと電子デバイスを簡単に接続できるIoTのプラットホームとして、程よいパッケージといった印象。 Raspberry Piが練習や教育用に向いているとしたら、やはりEdisonは実用向けといった感じです。

はじめての123D Design

公式サポートページ

http://www.kohgakusha.co.jp/support/123d/index.html

概要

123D Designの使い方の解説本です。一通りの機能を、紙面上と、ムービー(サポートページからダウンロード)でゼロから解説します。

「3D-CAD系」のソフトは、文字や図だけだと、なんとなく理解しにくいところがあるので、解説ムービーも使って、 各機能をできるだけ容易に使いこなせるように、 と考えたコンテンツになっています。(解説ムービー:1280×784ドットの大画面 × 38本)

メーカーの公式ページや、youtubeの公式ムービーの機能解説も、各機能の詳細までは解説していないので、 諸々の機能を使いこなすには足りないかんじです。この本では、各機能について、一つ一つ詳細に紐解きました。

特に、スケッチ関係の使い方(スケッチの加工や再編集)は、2D系CADソフトとはまた少し違う概念でもあり、 複雑な立体を正確な寸法で造形する上で大事な部分なんですが、公式サイトを含め、纏まった情報はあまり情報が見当たりません。 その辺りの使い方、考え方も掲載しています。

また、3DプリンタやCNCフライスとの連係についてや、扱えるファイルの種類(入出力の可否など)など、周辺事情についても纏めてあります。

補足

こんなのとか、

こんなを作るための、操作方法が解ります。

「3D系のソフト」というと、私はWindows95の時代から、マイクロネット「3Dアトリエ」シリーズから始まり色々なソフトを使ってきました。 が、「3D-CAD」は操作などが少し毛色が違う(2D-CADともずいぶん違う)ので、とっつきにくく、なんとなく避けてきました。

しかし、最近の3Dプリンタ普及の流れを受けて、個人的にも「使ってみたい、色々作ってみたい」、と思うように。 でもフィギュアみたいな有機的な造型物を作りたいわけじゃなく、寸法とかちゃんと指定して、「カチッとしたもの」を作りたいなと。

例えば、電子工作で作った作成物の箱とか、周辺部品とか、カメラ関係の撮影器材パーツとか。 そういった厳密に寸法を指定するようなものを…

「3D-CG系」ではなく、「3D-CAD系」のソフトを試してみることに。で、作りたいものがそれなりにちゃんと作れる機能があって、 使いやすくて、できれば安いソフト…ということで使ってみたのが123D Design。

当初は、無料ソフトだし、操作系が凄く簡略化されてるし、有料の「3D CAD」ソフトに比べると、機能を削りすぎてたりして、 もの足りないんじゃないの?と思ってました。でも、使い込んでみると、案外そうでもなく、作りたいものをちゃんと作れる機能を搭載しつつ、 解りやすい操作系でまとめられている、いい感じのソフトだなぁと。

では、使ってみたら、誰でもすぐにすべての機能を使いこなせるかというと…やっぱりその背景にある「3D-CAD」って何? みたいな、基本的な概念を押さえないと、搭載されている機能を使いこなせず、それなりに苦労する部分もあります。 特に、複雑な加工をしたり、作ったものを再編集したりするときには、モロモロの知識や概念の理解も必要に。

ゼロから使い始めることを前提に、それなりに自由自在に造型できるようになるために、どういうことを理解して、 どんな風に扱ったらいいかを、私なりに頭の中で整理してまとめてみました。

「3D-CADって使ったことないんだよな」、とか、「123D Designって、機能削りすぎてて使い物にならないんじゃないの?」 などと思っている方に、特に試してみていただきたいと思ってます。

Raspberry Piでつくる電子工作

公式サポートページ

http://www.kohgakusha.co.jp/support/raspberrypi/index.html

概要

Raspberry Piに電子回路を繋いで、ネット越しにアクセスしてみるところまでを、一つ一つ紐解いた内容の本です。

Raspberry Piは、Linux搭載機として一通りの機能を持ったコンピュータです。ただし、PC用Linuxと比べると、 CPUがARMコアで少し遅めだったり、BIOS(もしくはUEFI)に相当する機能がなかったりといった違いもあり、 インストールやブート時の動作などに差異があります。

その辺りの違いも踏まえて、導入(インストール)から、Linux OSのイロハ(基本的なコマンドや端末操作など)、 GUI環境の使い方など環境設定、Python言語での簡単なプログラムの知識といったことを一通り触れた上で、GPIO端子の使い方、 GPIO端子にLEDやモータの接続と制御、SPI通信デバイスやI2C通信デバイスをPythonで制御する方法、 CGIを使ってネット越しに制御する方法、WebIOPiでAjax通信を使った制御などを解説しています。

出版社のサポートページから、pdfテキストをダウンロードしていただくと、Wiring Piライブラリを使ったGPIO制御の方法や、 WebIOPiライブラリのAjax通信の詳細も解説してるので、そちらもご覧頂ければと思います。

補足

例によって、個人的に「最初にこういう本があったらよかったのにな」、という内容を盛り込んであります。

Raspberry Piは、サイズやCPU処理速度は小さいものの、ビデオ出力や音声出力、USB端子などを備えた、 一つの立派なLinux PCとしての機能を持っています。しかも、消費電力は、Windows機と比較にならないほど小さいので、 モバイルブースターなどでも長時間動かすことができます。

また、Linuxのディストリビューションに、Debian(のカスタマイズ品)を採用しているので、ApacheやMySQLなど、 メジャーなパッケージは一通り動かすことができます。

Linux周りなんかは、「Linuxの専門書を読んでください」で済ますことも出来るんですが、 たくさんの本を買ってようやくRaspberry Piを動かすことが出来る…では意味が無いし、 そもそもRaspberry Piを使ってWindows機の代わりにPCとしてバンバン使うとか、商用サイトの構築をしてみよう、という人は皆無でしょう。 「電子工作」という使用目的に照らして、必要な情報を1冊に纏めました。

Raspberry Piで「電子工作」という使用目的としては、「小型のマイコン基板」のように、GPIOを使って各種電子デバイスを制御しつつ、 Linux OSや各種高級言語を使い、ネットを介して制御する、といった使い方が主だったものでしょう。

RESTインターフェースやJSONなども使っていますが、面倒な部分はWebIOPiが覆い隠しているので、比較的簡単にその辺りを利用できます。

そうした用途を念頭に、必要となる技術情報を整理して纏めています。Linux OSもコマンドもPythonもhttpアクセスもcgiもAjaxもよく知らないし、 GPIOや電子部品のこともよく知らないんだよなぁ、という方でも、1冊で仕組みを理解しながら手を動かして、 さらに応用出来るようになっていると思います。

Arduinoではじめる電子工作

公式サポートページ

http://www.kohgakusha.co.jp/support/arduino/index.html

概要

Arduino IDE 1.0に対応した、Arduinoの解説書です。

Arduinoを使用する環境のインストール、どんなことが出来るか、Arduinoの開発用言語の解説、プログラム(スケッチ)の組み方、 電子部品の使い方と回路図、各種電子部品を繋いでプログラムから制御、開発の流れ、Arduinoの内部(AVRマイコン)、 ライブラリと使い方、といった内容を掲載しています。

LEDチカチカから始まり、モータを緩急つけて回してみたり(Hブリッジによる正転逆転)、キャラクターLCDに文字を表示したり、 音程をつけて音を出してみたり(音声用パワーアンプなど)、簡単なデバッグ方法などについて触れています。

使用する電子部品について、その働きと使い方などを説明しているので、基礎知識無しでもArduinoが使えるようになるかと思います。

補足

ネット上のArduino情報サイトや、各種書籍などを眺めていると、「こうすれば、こうなる」という「結果」については触れられているのですが、 なぜそれで良いのか、というところについては、あまり言及されていないものが多いと思います。

特に、デジタル入出力端子にLEDを繋いで光らせるだけでも、なぜそういう回路でいいのか、回路の定数をいじったらどうなるのか (動くのか動かないのかだけでなく、壊れてしまわないかなど)を考えるのに必要な情報、 例えば、デジタル端子の内部回路はどのような形になっているのか、壊さないためにはどんな計算をすればいいのか、といったことを整理しています。

また、複雑なものを作っていく場合に、どんな流れで進めて行けばいいのかといったことなども触れています。

「ロボット」がわかる本(共著)

公式サポートページ

http://www.kohgakusha.co.jp/books/detail/978-4-7775-1793-0

概要

様々なロボットや、それを支える技術、コンピュータについての本です。メカトロ関係のところなどをお手伝いしています。

補足

実例もまじえて、ロボットとそこに関わる技術などを平易に解りやすく解説されている本です。