<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>Arduino &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/arduino/feed/" rel="self" type="application/rss+xml" />
	<link>https://html5experts.jp</link>
	<description>日本に、もっとエキスパートを。</description>
	<lastBuildDate>Sat, 07 Jul 2018 03:14:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.19</generator>
	<item>
		<title>JavaScriptエンジニアへのIoTのすすめ：Node.jsとArduinoでスマートデバイスのプロトタイプをしてみよう</title>
		<link>/girlie_mac/17684/</link>
		<pubDate>Thu, 26 Nov 2015 00:00:36 +0000</pubDate>
		<dc:creator><![CDATA[Tomomi Imura]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Internet of Things]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[PubNub]]></category>

		<guid isPermaLink="false">/?p=17684</guid>
		<description><![CDATA[ここ、HTML5Experts.jpでも今年になって IoTやWoT関連の話題がことかかず、みさなんも関心を持ち始めていることかと思われます。 私もフロントエンド・エンジニアではありますが、もともと関心があったことと、去...]]></description>
				<content:encoded><![CDATA[<p>ここ、HTML5Experts.jpでも今年になって IoTやWoT関連の話題がことかかず、みさなんも関心を持ち始めていることかと思われます。</p>

<p>私もフロントエンド・エンジニアではありますが、もともと関心があったことと、去年からデータ・ストリームのPaaS (platform as a service) 会社である<a href="http://pubnub.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PubNub</a>で働いていることもあって、IoTを避けずには通れなくなり、電子工作を始めるようになりました。</p>

<p>そこで、最近東京・渋谷で行われた、東京Node学園で登壇した際に話したテーマ、<a href="https://speakerdeck.com/girlie_mac/tokyo-nodefest-2015-hardware-hacking-for-javascript-developers-japanese-ri-ben-yu" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Hardware Hacking for JavaScript Developers</a> から、ArduinoとNode.jsを使ってプロトタイプする、という内容についてチュートリアル形式で書いてみたいと思います。</p>

<h3>Arduinoが変えたMakerムーブメント</h3>

<p>みなさん、<a href="https://www.arduino.cc/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino</a>の名前は聞いたことがあると思います。Arduino、もしくはGenuinoとして知られているこのオープンソースのAVRマイクロコントローラ電子工作キットは、既存のマイコンボードと違い、安価で、I/Oポートもあり、USB接続で今すぐ始められます。開発環境（IDE）とサンプルコードなども簡単にダウンロード、インストールできることから初心者でも簡単に電子工作ができるようになったという面では、今までハードウェアに縁がなかったソフトウェアエンジニアが、Makerムーブメントに積極的に参加するようになった火付け役ともいえると思います。</p>

<p>しかし、同じソフトウェアといえども、ウェブエンジニアはどうでしょう？Arduinoで使用される言語はC-ベースのSketchということで敷居が高く感じたり、興味がなかったりするのではないでしょうか？でも、もし馴染みのJavaScriptで好きなことができたら、遊んでみたくなりませんか？</p>

<h3>Johnny-Five: JSロボティクス・フレームワーク</h3>

<p>そこで紹介したいのが、JavaScript ロボティクス・フレームワークである、<a href="http://johnny-five.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Johnny-Five</a>。日本ではまださほど知られていない感じがしますが、オープンソースでディベロッパ・コミュニティの結束も固く、<a href="http://nodebots.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">インターナショナル NodeBots Day</a>などでユーザ・コミュニティも大きくなってきたこのフレームワークを使えば、JavaScriptをで簡単にプログラマブル電子工作ができるようになります。ここは説明よりも実践してみるほうが理解も深まると思いますので、さっそくチュートリアルを始めましょう！</p>

<p><img src="/wp-content/uploads/2015/11/arduino-loves-j5.png" alt="arduino nodejs johnny-five" width="640" height="236" class="aligncenter size-full wp-image-17712" srcset="/wp-content/uploads/2015/11/arduino-loves-j5.png 640w, /wp-content/uploads/2015/11/arduino-loves-j5-300x111.png 300w, /wp-content/uploads/2015/11/arduino-loves-j5-207x76.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>1. Arduino のセットアップ</h2>

<p>用意するハードウェアとインストールの必要なソフトウェア</p>

<ul>
<li><a href="https://www.arduino.cc/en/Main/ArduinoBoardUno" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino (Genuino) Uno</a></li>
<li><a href="http://arduino.cc/en/main/software" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino IDE</a></li>
<li><a href="https://nodejs.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Node.js</a> </li>
</ul>

<p>始めにセットアップから始めます。ArduinoボードをUSBで、コンピュータにつなぎます。Arduino IDEをダウンロード、インストールして、起動させたら、ボードとシリアルポートの設定をします。</p>

<p>メニューの<strong>ツール</strong> &gt; <strong>マイコンボード</strong>の中の<strong>Arduino Uno</strong>を選択し、 <strong>ツール</strong> &gt; <strong>シリアルポート</strong>の中の<strong>/dev/tty.usbmodem</strong>、もしくは<strong>cu.usbmodem</strong>という名前が含まれる項目を選びます。</p>

<p><img src="/wp-content/uploads/2015/11/arduino-johnnyfive-setup-jp.png" alt="Arduino setup" width="640" height="180" class="aligncenter size-full wp-image-17690" srcset="/wp-content/uploads/2015/11/arduino-johnnyfive-setup-jp.png 640w, /wp-content/uploads/2015/11/arduino-johnnyfive-setup-jp-300x84.png 300w, /wp-content/uploads/2015/11/arduino-johnnyfive-setup-jp-207x58.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>Johnny-FiveはFirmataプロトコルを使ってArduinoと通信をするので、今度は<strong>StandardFirmata</strong>をインストールします。</p>

<p>メニューから<strong>ファイル</strong> &gt; <strong>スケッチの例</strong> &gt; <strong>Firmata</strong> &gt; <strong>StandardFirmata</strong>を選択すると新しいウィンドウが開きます。そこから左から２番目にあるアップロードボタンをクリックします。下のGIFアニメーションの通りです。</p>

<p><img src="/wp-content/uploads/2015/11/arduino-johnnyfive-firmata-jp.gif" alt="Arduino setup GIF animation" width="640" height="512" class="aligncenter size-full wp-image-17727" /></p>

<p>終わったら閉じ、このIDEはもうこれからは必要ありません。</p>

<h2>2. Hello World</h2>

<p>まずコンピュータに、Node.jsがすでにインストールされていることを、確認してください。そして適当なディレクトリ (e.g. /j5-hello/) を作ったら、そのディレクトリ内にパーケッジマネージャであるnpmを使って、Johnny-Fiveをインストールします。</p>

<p><code>$ npm install johnny-five</code></p>

<p>さっそくJohhny-Fiveを使ってはじめの一歩である、Hello Worldを書いてみましょう。新しい言語やフレームワークを学ぶ際に初めて書くプログラムは&#8221;Hello world&#8221;という2つの単語を出力する、というのが一般ですが、ここでは、ハードウェア界のHello Worldとも言える「Lチカ」（LEDを点滅させる）をしてみます。</p>

<h3>必要なハードウェア</h3>

<ul>
<li>セットアップ済みのArduino Uno</li>
<li>LED</li>
<li>ブレッドボード </li>
<li>ジャンパー・ワイヤー（両側がピン状になっているオス〜オス）</li>
<li>抵抗　（200-330Ω 程度）</li>
</ul>

<p><img src="/wp-content/uploads/2015/11/arduino-hello-world-jp.jpg" alt="Arduino LED blink" width="640" height="318" class="aligncenter size-full wp-image-17692" srcset="/wp-content/uploads/2015/11/arduino-hello-world-jp.jpg 640w, /wp-content/uploads/2015/11/arduino-hello-world-jp-300x149.jpg 300w, /wp-content/uploads/2015/11/arduino-hello-world-jp-207x103.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>まずはハードウェア側のセッティングです。
部品などどこで買ったらわからない、という方はAmazonなどでキットを買うのをお勧めします。</p>

<h3>LEDの基本</h3>

<p>LED（発光ダイオード）には、極性があり、その＋極を<strong>アノード</strong>、ー極を<strong>カソード</strong>と呼びます。普通のLEDには通常、足が二本ついていますので長い方がアノードです。これは回路を作るときに重要になってきますので必ず覚えておいてください！</p>

<p><img src="/wp-content/uploads/2015/11/led-anode-cathode-jp.png" alt="LED anode and cathode" class="aligncenter" /></p>

<h3>電気回路の作成</h3>

<p>ArduinoからLEDを光らせるための回路はこんな感じになります。ここでは便宜上、電源からつながるプラス側を赤、Groundにつながるマイナス側を黒のワイヤーで示してあります。何色を使っても構いませんが、混乱を避けるために2つの異なる色にすることをお勧めします。</p>

<p><img src="/wp-content/uploads/2015/11/arduino-uno-led_bb.png" alt="Fritzing Arduino Uno LED" width="640" height="483" class="aligncenter size-full wp-image-17716" srcset="/wp-content/uploads/2015/11/arduino-uno-led_bb.png 640w, /wp-content/uploads/2015/11/arduino-uno-led_bb-300x226.png 300w, /wp-content/uploads/2015/11/arduino-uno-led_bb-207x156.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>ブレッドボードや抵抗についての基本、そしてこの「Lチカ」の回路については<a href="https://html5experts.jp/youtoy/12029/" data-wpel-link="internal">初心者でもわかる・できる！Arduinoを使った初めての電子工作実践</a>の<strong>「部品をつなぐ」</strong>セクションで豊田陽介さんが詳しく説明されているので、それを参考にしましょう。</p>

<h3>Johnny-FiveでLチカ</h3>

<p>では、適当なファイルネーム、例えば<code>blink.js</code>を作成し下のコードをコピーペーストしてください。</p>

<p></p><pre class="crayon-plain-tag">var five = require('johnny-five');
var board = new five.Board();

board.on('ready', function() {
  var led = new five.Led(13);
  led.blink(500);
});</pre><p></p>

<p>ターミナルからこのファイルを走らせましょう。</p>

<p><code>$ sudo node blink.js</code></p>

<p>正しく作動しましたか？回路が正しく、コードにエラーがない場合は、500ms間隔でLEDが点滅します。</p>

<p><img src="/wp-content/uploads/2015/11/arduino-johnnyfive-blink.gif" alt="LED blink animated GIF" class="aligncenter" /></p>

<p>これで、JavaScriptとハードウェアを使う基本を学びましたので、今度は実際にスマートデバイスのプロトタイプを作ってみましょう。</p>

<h2>3. スマート照明システムをプロトタイプする</h2>

<p><a href="http://www2.meethue.com/ja-JP/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Philips HUE</a>や、<a href="http://www.lifx.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">LIFX</a>は、ムードや状況によってスマートフォンやタブレットから、明かりの色や照度をカスタマイズできるLED電球です。さっそく Arduinoを使ってこれらのように色を自在に変えられるLEDを作ってみましょう。色を変えるためのコントローラはHTML５を使ってブラウザから操作できるようにしましょう。</p>

<h3>JavaScript で Internet of Things</h3>

<p>さて、ここで重要なのは、デバイス（ハードウェア）とモバイルUI (HTML5)をインターネットでつなげて、IoT化するということです。Bluetoothなどと違い、インターネットにさえ繋がっていれば、あなたが世界のどこにいようともモバイルから自宅の照明の操作をすることができるのです。この2ウェイ・コミュニケーションを可能にするにはソケット・コネクションが必要になります。ここで、この双方向通信を簡単に行うことにできるPubNubのJavaScript APIを使って、IoTのプロトタイプをしてみましょう。</p>

<p><a href="http://pubnub.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PubNub</a> はグローバルなデータストリームネットワーク (DSN) で、 このAPIを使ってリアルタイムアプリケーション、IoTデバイスなどを接続、拡張、管理することができます。今から作成するスマートLEDは下の図のようにモバイルデバイス（このプロトタイプの場合はブラウザ）とハードウェアをインターネットでつなげることが可能です。</p>

<p><img src="/wp-content/uploads/2015/11/pubnub-arduino.png" alt="How PubNub makes an Arduino as an IoT device" width="640" height="233" class="aligncenter size-full wp-image-17720" srcset="/wp-content/uploads/2015/11/pubnub-arduino.png 640w, /wp-content/uploads/2015/11/pubnub-arduino-300x109.png 300w, /wp-content/uploads/2015/11/pubnub-arduino-207x75.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>例えば、サンフランシスコにいるモバイルユーザが東京にあるArduinoを操作する場合：</p>

<ol>
<li>ユーザがモバイルから「緑い照明にしたい」と送信（パブリッシュ）</li>
<li>メッセージがPubNubのサンスランシスコデータセンターに送信される</li>
<li>データは世界各地のデータセンターと同期</li>
<li>Arduinoが東京データセンターからデータを受信（サブスクライブ）して、LEDを緑に</li>
</ol>

<p>この全てのオペレーションがわずか¼秒かそれ以下で行われるのが、PubNubの利点です。</p>

<p>このチュートリアルではJavaScriptを使ってプロトタイプを作りますが、PubNubの組み込みとモバイルのSDKを使えば、実際にHUEのようなスマートデバイスを製品化することも可能なのです。</p>

<h3>必要なハードウェア</h3>

<ul>
<li>Arduino Uno</li>
<li><a href="http://www.amazon.co.jp/100%E5%80%8B-5%E3%83%9F%E3%83%AA%E3%83%A1%E3%83%BC%E3%83%88%E3%83%AB-4%E3%83%94%E3%83%B3-RGB-%E3%82%AB%E3%82%BD%E3%83%BC%E3%83%89/dp/B00HIUDSJK/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RGBフルカラーLED（カソードコモン）</a></li>
<li>ブレッドボード </li>
<li>ジャンパー・ワイヤー（オス〜オス）</li>
<li>抵抗　（220Ω x 2, 330Ω x 1）</li>
</ul>

<p><img src="/wp-content/uploads/2015/11/arduino-rgbled-jp.jpg" alt="Arduino RGB LED JP" width="640" height="273" class="aligncenter size-full wp-image-17702" srcset="/wp-content/uploads/2015/11/arduino-rgbled-jp.jpg 640w, /wp-content/uploads/2015/11/arduino-rgbled-jp-300x128.jpg 300w, /wp-content/uploads/2015/11/arduino-rgbled-jp-207x88.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h3>RGBフルカラーLEDの基本</h3>

<p>RGB (Red-Green-Blue) フルカラーLEDは、赤、緑、青の3色のLEDが一本になったもので、この三原色の組み合わせで無数の色を作り出すことができます。ほとんどのこのタイプのLEDは、各色のピンが一本づつと共通のカソード（もしくはアノード）の合計4本のピンがあります。このチュートリアルでは、カソードコモンのものを使用しています。</p>

<p><img src="/wp-content/uploads/2015/11/led-rgb-cathode-jp.png" alt="RGB LED JP" width="640" height="151" class="aligncenter size-full wp-image-17703" srcset="/wp-content/uploads/2015/11/led-rgb-cathode-jp.png 640w, /wp-content/uploads/2015/11/led-rgb-cathode-jp-300x71.png 300w, /wp-content/uploads/2015/11/led-rgb-cathode-jp-207x49.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h3>電気回路の作成</h3>

<p>Hello World を成功させたからには、この下の図の回路も問題なく作れるのではないでしょうか。がんばってみてください。</p>

<p>ワイヤーを差し込むピンは、単純な「Lチカ」とは違い、PWM (Pulse Width Modulation：パルス幅変調) ピンを使っています。Arduinoボードにラベルされているピン番号の前に「〜」が付いているものがPWMピンになります。</p>

<p>これらと他のピンの違いは、簡単にいえばアナログかデジタルかの違いになります。例えばLEDの場合、一般のデジタルピンにつなぐとオフかオンの2つのステートしか表現できません。Lチカ（点滅）はこのデジタル信号をオンとオフと交互に発しています。しかしRGBフルカラーLEDで無数の色を表現するには、各色の値の組み合わせで色を作り出すので中間の値が必要になりますので、アナログであるPWMピンを使います。</p>

<p><img src="/wp-content/uploads/2015/11/arduino-uno-rgb-led_bb.png" alt="Fritzing Arduino RGB LED" width="640" height="476" class="aligncenter size-full wp-image-17719" srcset="/wp-content/uploads/2015/11/arduino-uno-rgb-led_bb.png 640w, /wp-content/uploads/2015/11/arduino-uno-rgb-led_bb-300x223.png 300w, /wp-content/uploads/2015/11/arduino-uno-rgb-led_bb-207x154.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>ここで抵抗を220Ωと330Ωにわけてあるのは、同じ抵抗だと赤が強くなるので、抵抗を増やして赤を控えめな明かるさになるように調整してあります。抵抗の計算方法やカラーコードの読み方については、ここで割愛しますが、自分でいろいろ調整してみてください。</p>

<h3>IoT リモートコントローラーUIの作成</h3>

<p>ブラウザでLEDの色をコントロールするUIを作ってみましょう。</p>

<p><img src="/wp-content/uploads/2015/11/hue-prototype-ui.png" alt="hue-prototype-ui" width="640" height="434" class="aligncenter size-full wp-image-17707" srcset="/wp-content/uploads/2015/11/hue-prototype-ui.png 640w, /wp-content/uploads/2015/11/hue-prototype-ui-300x203.png 300w, /wp-content/uploads/2015/11/hue-prototype-ui-207x140.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>HTML5の&#8220;、&#8221;R&#8221;、&#8221;G&#8221;、&#8221;B&#8221;の各色調整をするスライダーバーを描写します。各色は0から255まで(<code>min="0" max="255"</code>)の整数の値(<code>step="1"</code>)を、つまみで調節できるようなUIにしてみましょう。</p>

<p></p><pre class="crayon-plain-tag">&lt;input id="red" type="range" min="0" max="255" step="1" value="0"&gt;</pre><p></p>

<p>これで赤色を調節するスライダーができました。このチュートリアルではCSS部分は省略しますが、スクリーンショットのようなスタイルにするには、<a href="https://github.com/girliemac/arduino-led-rgb" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GitHubのソースコード</a>の<a href="https://github.com/girliemac/arduino-led-rgb/tree/gh-pages" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">gh-pages ブランチ</a>を参照してください。</p>

<p>次はJavaScriptでこの値がユーザによって変更された時に、その値をArduino側に反映させるようにします。これを実現させるためにPubNub JavaScript APIで両デバイスを接続させてみましょう。</p>

<p>PubNub JavaScript API を使うには、まず自分の<a href="https://admin.pubnub.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">APIキーを取得</a>を取得したら、CDNライブラリ（もしくはローカルファイル）を読み込みます。</p>

<p></p><pre class="crayon-plain-tag">&lt;script src="//cdn.pubnub.com/pubnub-3.7.15.min.js"&gt;&lt;/script&gt;</pre><p></p>

<p>そして自分のキーを使ってインスタンスを初期化します。</p>

<p></p><pre class="crayon-plain-tag">var pubnub = PUBNUB({
　subscribe_key : '自分の subscribe key',                          
　publish_key   : '自分の publish key'
});</pre><p></p>

<p>UIイベント発生時に自動的にLEDの色を変える仕様にしてみましょう。
スライダーDOMに<code>change</code>イベントが発生した時に、変更値をPubNubに <code>publish</code> メソッドを使って送信（パブリッシュ）します。</p>

<p></p><pre class="crayon-plain-tag">var red = document.getElementById('red');

red.addEventListener('change', function(){
  pubnub.publish({
    channel: 'smart-led', 
    message: {color: 'red', brightness: +this.value}
  });
}, false);</pre><p></p>

<p>この時の <code>channel</code> 名は何でも構いませんが、のちにこのデータを受信する際にはこれと同じチャンネル名にします。</p>

<p>では次はNode.jsを使ってハードウェア側でこの値を反映させてみましょう。</p>

<h3>Johnny-Five と PubNub で Arduino を IoTデバイスに</h3>

<p>Johnny-FiveでRGBフルカラーLEDを動かすコードは、いたって簡単。npmでjohnny-fiveをインストールしたら、次のコードを動かしてみてください。</p>

<p></p><pre class="crayon-plain-tag">var five = require('johnny-five');
var led;

five.Board().on('ready', function() {
  console.log('ready');

  // RGB LED を初期化
  led = new five.Led.RGB({
    pins: { // pin 番号
      red: 6,
      green: 5,
      blue: 3
    }
  });

  // テスト
  led.color({red: 255, blue: 0, green: 0});
  
  led.on();
});</pre><p></p>

<p>LEDが赤色に光ましたか？
何も起こらない場合はコードと配線などを確かめてください。それでも作動しない場合は、使っているRGB LED がカソードコモンではなくアノードコモンの可能性があります。その場合は、GND（図上の黒のワイヤー）を、Arduinoの5Vのピンに変えてみてください。</p>

<p>「テスト」とコメントされた行をみてください。<code>color</code> メソッドでLEDの色を指定しているのがわかると思います。この場合、赤の値が255で他が0となっているので、LEDを赤で光らせることができます。Johnny-Fiveでは、CSSのcolorプロパティと同じようにRGBの値を0～255で指定することができるのです。RGBの各値を変えながらどんな色になるか実験してみてください。</p>

<p>さて今度は、このRGBの値をブラウザUIからリモートコントロールして、動的にLEDの色を変えてみましょう。</p>

<p>さきほどのUI側からパブリッシュされたデータを受け取って、ハードウェアに反映させるには、PubNub <code>subscribe</code> メソッドで受信（サブスクライブ）しましょう。</p>

<p>まず、npm で pubnub をインストールします。</p>

<p><code>$ npm install pubnub </code></p>

<p>フロントエンドと同様に、pubnubインスタンスの初期化します。</p>

<p></p><pre class="crayon-plain-tag">var pubnub = require('pubnub').init({
  subscribe_key: '自分の subscribe key',
  publish_key:   '自分の publish key'
});</pre><p></p>

<p>UI側から送信されたデータは、同じ <code>channel</code> にアクセスすることによって自動的に送信することができます。データが送信された際には、<code>subscribe</code> メソッドの <code>callback</code> が返されます。このコールバック内で送信された色データをLEDに反映させます。</p>

<p></p><pre class="crayon-plain-tag">pubnub.subscribe({
  channel: 'smart-led',
  callback: function(m) {
    if(led) {
      r = (m.color === 'red') ? m.brightness : r;
      g = (m.color === 'green') ? m.brightness : g;
      b = (m.color === 'blue') ? m.brightness : b;

      led.color({red: r, blue: b, green: g});

      console.log( 'color change to...' );
      console.log( led.color() );
    }
  }
  error: function(err) {console.log(err);}
});</pre><p></p>

<p>送信されたメッセージ、<code>m</code> は、UIから送られたオブジェクト、例えば青の値が150の場合、<code>{color: 'blue', brightness: 150}</code>、となります。次に送信された値が、<code>{color: 'red', brightness: 150}</code> ならば、前の値の青＝150はそのままで、ここに赤＝150が加わることによって、LEDは紫に近い色になります。さらに赤緑青の3つの値が変われば、LEDはさまざまな色に変わります。</p>

<p><img src="/wp-content/uploads/2015/11/poormans-philips-hue.jpg" alt="IoT 101 Arduino with RGB LED" width="640" height="480" class="aligncenter size-full wp-image-17705" srcset="/wp-content/uploads/2015/11/poormans-philips-hue.jpg 640w, /wp-content/uploads/2015/11/poormans-philips-hue-300x225.jpg 300w, /wp-content/uploads/2015/11/poormans-philips-hue-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>全コードは、<a href="https://github.com/girliemac/arduino-led-rgb" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GitHubのソースコード</a>の<a href="https://github.com/girliemac/arduino-led-rgb" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">master ブランチ</a>内の <code>/node/index.js</code>を参照してください。</p>

<p>さて、これでIoTスマート照明のプロトタイプができあがりました！</p>

<p><img src="/wp-content/uploads/2015/11/arduino-johnnyfive-hue.gif" alt="arduino-johnnyfive-hue" width="371" height="317" class="aligncenter size-full wp-image-17706" /></p>

<p>Johnny-FiveもPubNubもArduinoだけではなく、他のいろいろなマイクロコンピュータに使うことができます。いろいろなセンサーやカメラなどを組み合わせて、IoTプロトタイプに挑戦してみてください。</p>

<p>では、Happy hacking!</p>

<h2>References</h2>

<ul>
<li><a href="http://johnny-five.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Johnyy-Five</a>: The original JavaScript Robotics programming framework</li>
<li><a href="https://www.pubnub.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PubNub</a>: The global realtime Data Stream Network for IoT, mobile, and web applications</li>
</ul>
]]></content:encoded>
			</item>
		<item>
		<title>Webエンジニアが、量産品のハードウェアを作るようになるまで─Cerevoの中の人に聞いてみた！</title>
		<link>/shumpei-shiraishi/12913/</link>
		<pubDate>Tue, 24 Feb 2015 00:00:30 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[システム開発]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Cerevo]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[SmartTrigger]]></category>
		<category><![CDATA[ハードウェア]]></category>

		<guid isPermaLink="false">/?p=12913</guid>
		<description><![CDATA[連載： IoTxWeb (4)Arduinoなどのマイコンのおかげで、ハードウェア開発、特にプロトタイプづくりに関するハードルはだいぶ下がりました。自分（白石）のような人間でも、LEDをチカチカさせるくらいのことはやって...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (4)</div><p>Arduinoなどのマイコンのおかげで、ハードウェア開発、特にプロトタイプづくりに関するハードルはだいぶ下がりました。自分（白石）のような人間でも、LEDをチカチカさせるくらいのことはやってみたことがあり、「こんなに簡単にハードを制御できるなんて！」と感動したのを覚えています。ただ、プロトタイプを一度作ってみると、更なる大きな疑問がわいてきます…<em>身の回りにあるハードと、自分の作ったプロトタイプの落差に驚愕する</em>のです。</p>

<p><em>自作したプロトタイプを、カッコいい量産ハードウェアに持っていくためには、どんな作業が必要なの？</em>
今回はそんな素朴な疑問に答えてもらうべく、Cerevoさんにお邪魔してプロダクトマネージャーの國舛さんにお話を聞いてきました。</p>

<p>Cerevoといえば「LiveShell」などのハードウェア制作で有名なハードウェアスタートアップ。先日のCESでは「Top Tech of CES」を受賞されたりと、その快進撃は止まりません。今回インタビューに答えていただいた國舛さんは、現在はCerevoのプロダクトマネージャーを務めていらっしゃいます。が、「<a href="http://smart-trigger.cerevo.com/ja/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SmartTrigger</a>」という製品を手がける前までは、ハードウェア開発の経験を持たないWebエンジニアでした（僕らと一緒ですね！）。</p>

<p><img src="/wp-content/uploads/2015/02/cerebo2.jpg" alt="" width="550" height="399" class="alignnone size-full wp-image-13083" srcset="/wp-content/uploads/2015/02/cerebo2.jpg 550w, /wp-content/uploads/2015/02/cerebo2-300x217.jpg 300w, /wp-content/uploads/2015/02/cerebo2-207x150.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /><br><span style="font-size: 80%;">　▲株式会社Cerevo プロダクトマネージャー　國舛等志さん</span></p>

<p>そんな國舛さんに、「量産ハードウェアの作り方」をわかりやすく語っていただきました。では、お楽しみください！</p>

<h2>SmartTriggerの説明</h2>

<p><br>
<b>白石:</b> 今回は、國舛さんがはじめて中心となって手がけられた量産型ハードウェア、「SmartTrigger」を題材に、ハードウェア開発の実際についていろいろ伺いたいと思っています。どうぞ、よろしくお願いします。
<br><br>
<b>國舛:</b> よろしくお願いします。ではまず、SmartTriggerとはどんな製品かを簡単に説明したあと、開発のお話をしましょうか。</p>

<p><img src="/wp-content/uploads/2015/02/cerebo3.jpg" alt="" width="550" height="331" class="alignnone size-full wp-image-13084" srcset="/wp-content/uploads/2015/02/cerebo3.jpg 550w, /wp-content/uploads/2015/02/cerebo3-300x180.jpg 300w, /wp-content/uploads/2015/02/cerebo3-207x124.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
こちらがSmartTriggerです。簡単に言うと、カメラとこのデバイスをつないでおくことで、スマホからリモートでカメラを操作できる、という製品ですね。
シャッターを押すのはもちろん、連写やタイマー撮影もできます。</p>

<p><img src="/wp-content/uploads/2015/02/cerebo5.jpg" alt="" width="550" height="364" class="alignnone size-full wp-image-13086" srcset="/wp-content/uploads/2015/02/cerebo5.jpg 550w, /wp-content/uploads/2015/02/cerebo5-300x198.jpg 300w, /wp-content/uploads/2015/02/cerebo5-207x136.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /><br><span style="font-size: 80%;">　▲聞き手：HTML5 Experts.jp編集長　白石俊平</span>
<br><br>
<b>白石:</b> おもしろいですねー。SmartTriggerが、スマホから送られてくる命令に従って、カメラを操作するという感じなんですね。
<br><br>
<b>國舛:</b> そのとおりです。タイムラプス動画（時間をかけて連続撮影した写真を動画のように高速再生するテクニック。時間を圧縮したような感覚の動画を得られる）も、間隔や秒数などのパラメータをセットしたら、あとはSmartTriggerが勝手にやってくれます。その間、スマホでは別の操作をしていても全然構いません。
<br><br>
<b>白石:</b> カメラとSmartTrigger、スマホはどういう風に通信するんですか？
<br><br>
<b>國舛:</b> SmartTriggerとスマホの間はBluetoothで無線通信します。SmartTriggerとカメラはケーブルで有線接続。メーカーの違いはケーブルで吸収していますので、国内メーカーのカメラはほとんどサポートできています。
<br><br>
<b>白石:</b> なるほど、手持ちのカメラに合うケーブルも同時に購入する、というかんじなんですね。<br />
では本日は、この「SmartTrigger」を制作するにあたってのいろいろなお話を伺いつつ、「Webエンジニアが量産品のハードウェアを作るまで」をお聞きしたいと思います。</p>

<h2>元々はWebエンジニアが趣味で始めたプロジェクト</h2>

<p><br>
<b>白石:</b> 國舛さんは以前はWebエンジニアだったとお聞きしていますが、そんな國舛さんがSmartTriggerを作るようになった経緯と製作過程を教えて下さい。
<br><br>
<b>國舛:</b> はい、元々私はJavaで業務系のアプリを作っているエンジニアだったのですが、数年前にCerevoに転職しました。この会社では、最初はPythonでサーバサイドのプログラミングを担当していて、そこからiOSのアプリエンジニアにシフトしていきました。<br />
<br>
SmartTriggerについては、最初は趣味でやっていたんです。テレビを見ていたら「タイムラプス」という表現方法があることを知り、それをキレイに撮れるようなデバイスはないかと探していました。
<br><br>
でもその当時の製品は割と高くてかっこよくなかったんです。買おうかどうか迷って、ネットで情報を収集しているうちに、「どうやら自分でもプロトタイプなら作れるんじゃないか」と思うようになりまして。同じようなものを作っている方の情報を参考にしながら、同じようにやったらとりあえずできた。
<br><br>
でもそこで自己満足してしまって、その後はしばらくほっといてたんですよ。その後会社でアイデアを出す場があったので、そこでこのアイデアを提案したことが、仕事になったきっかけですね。
<br><br>
<b>白石:</b> なるほど、会社の仕事とも関係なく、純粋に個人的なプロジェクトとして始められたんですね。
<br><br>
<b>國舛:</b> そうなんです。全然仕事にするつもりはなかった。
<br><br>
<b>白石:</b> ちなみに結論を先取りしてしまうと、結局これが量産ハードウェアづくりにつながるわけですが、その時点で量産ハードウェア開発の知識とかはあったんですか？
<br><br>
<b>國舛:</b> いえいえ、それが全然…。周りに助けられながら、なんとかやり遂げた感じです。
<br><br>
<b>白石:</b> それはソフトウェアしか触ったことのないぼくのようなエンジニアからすると、朗報です。いい仲間さえいれば、なんとかなるもんなんですね！</p>

<h2>まずはプロトタイピング</h2>

<p><br>
<b>白石:</b> では、SmartTrigger開発がどのように進んだのかをお聞かせください。最初のプロトタイプってどんな感じだったんですか？
<br><br>
<b>國舛:</b> 最初はAndroidとArduino、あとカメラを全部有線でつないだようなものでしたね。ネットの情報を見ながら、「Androidで操作したらカメラのシャッターが切れる」というところまで作りました。
プロトタイプは3つくらい作りましたね。
<br><br>
まず最初のプロトタイプは、そもそものコンセプトが実現できるかどうかを、形や大きさを気にせず試してみました。</p>

<p><div id="attachment_12920" style="width: 234px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/02/prototype1-224x300.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/02/prototype1-224x300.jpg" alt="SmartTrigger最初のプロトタイプ" width="224" height="300" class="size-full wp-image-12920" srcset="/wp-content/uploads/2015/02/prototype1-224x300.jpg 224w, /wp-content/uploads/2015/02/prototype1-224x300-154x207.jpg 154w" sizes="(max-width: 224px) 100vw, 224px" /></a><p class="wp-caption-text">SmartTrigger最初のプロトタイプ</p></div>
<br>
2回目のプロトタイプは、個人的な興味もあって<a href="https://mbed.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">mbed</a>という基板を使ってみたりと、ちょっと寄り道したりもしましたが、基本的にはどんどんサイズを小さくしていくのが目標でした。</p>

<p><div id="attachment_12921" style="width: 310px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/02/proto2.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/02/proto2.jpg" alt="SmartTrigger2番目のプロトタイプ" width="300" height="200" class="size-full wp-image-12921" srcset="/wp-content/uploads/2015/02/proto2.jpg 300w, /wp-content/uploads/2015/02/proto2-207x138.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">SmartTrigger2番目のプロトタイプ</p></div>
<br>
3回目のプロトタイプでは、BLE (Blootooth Low Energy) を使って動作させてみることが目標でした。BLEを触った経験がなかったもので、BLEのモジュールを取り寄せるところから始めて、手探り状態でしたね。</p>

<p><div id="attachment_12922" style="width: 310px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/02/proto3.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/02/proto3.jpg" alt="SmartTrigger3番目のプロトタイプ" width="300" height="200" class="size-full wp-image-12922" srcset="/wp-content/uploads/2015/02/proto3.jpg 300w, /wp-content/uploads/2015/02/proto3-207x138.jpg 207w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">SmartTrigger3番目のプロトタイプ</p></div>
<br>
<b>國舛:</b> SmartTriggerはクラウドファンディングを前提としていたので、プロトタイプの段階でできるだけホンモノをイメージできるものを作るようにしました。その後クラウドファンディングで無事成立し、製品化が決定。そこからは最終製品づくりに向かいました。</p>

<h2>量産に至る過程</h2>

<p><br>
<b>白石:</b> ちょっとそこ、詳しくお聞きしてもいいですか？Arduinoとかを使ったプロトタイピングまではまだイメージできるんですが、そこから最終製品を量産するというところまでのイメージがさっぱりわかなくて…
<br><br>
<b>國舛:</b> ぼくの場合はまず、リリース時期を決めてしまいます。例えばクリスマス商戦に間に合わせるぞ、とかですね。そこから逆算して、各工程にかけられる時間を見積もります。
<br><br>
そうして今度は、量産を前提とした試作を行っていきます。試作は毎回、明確な目標を定めて行うようにします。
<br><br>
まず必要なのは基板の設計と製品のデザインですね。それぞれ専門の方に担当していただき、まずは荒くてもいいから動くものを作ります。で、ここでトラブルがたくさん起きる。
<br><br>
それを受けて次の試作では、1度目の試作で出たトラブルに対処しつつ、信頼性の検証を行いました。
例えば静電気が発生しても壊れないとか、ボタンを何回押しても壊れないとか。
<br><br>
こんな感じで、次に何をやるかをイメージしながら、どんどん試作を改良していくイメージです。
<br><br>
<b>白石:</b> デザインはどんどん変化していくんですか？
<br><br>
<b>國舛:</b> いえ、<em>デザインは最初のほうでしっかり固めなくてはなりません</em>。ハードウェアは、デザイン修正のコストが大きいので。そこがWebとは大きく違うところですね。
でも最近は3Dプリンタで簡単に出力できるのがありがたいです。基板が入るかどうかとか、ボタンが押せるかどうかとか、そういったことを確認するためには3Dプリンタで作った試作品がとても役に立ちます。
<br><br>
<b>白石:</b> なるほど。そして、何度か試作を行って完成度を高めたら、いよいよ量産に向けて動き始めるんですよね。
<br><br>
<b>國舛:</b> はい、そうですね。<em>量産するにあたっては、部品を購入したり、工場を決めたりということが必要になってきます</em>。<br>
部品も、物によっては中々入手できなかったりするので、どこからどうやって調達するかを考えなくてはなりません。ぼくらは中国の工場を使ったのですが、部品を現地で調達したほうがいいのか、こちら（日本）で入手したり作ったりしてから送ったほうがいいのかとか、いろいろとトレードオフがあります。<br><br>
また工場を決定するにあたっては、実際に現地の工場に足を運んで、設備や品質管理のレベルを確認します。スタッフの熟練度は非常に重要で、実際にサンプルを作ってもらって、クオリティを確認する必要があります。
そうして選んだ基板工場や金型工場、組み立て工場に3Dデータや回路図を渡し、量産を依頼するわけです。
<br><br>
<b>白石:</b> 工場に量産をお願いしたら、あとはスムーズに製品ができ上がるんですか？
<br><br>
<b>國舛:</b> それが理想なんですが、実際にはよくトラブルが起きてしまうんですよね。
あらかじめテスト項目を用意しておくんですが、テストにパスしないものが多く出てくると「不良率が高い」ということになって、なかなか出荷したい台数に届かないということになります。
<br><br>
量産するにあたっては、「量産試作」という工程があって、実際の工員さんを使って量産ラインを流してみます。
例えばそこで100台とか、多めの数を流して検証してみて、組立方法を変更して時間を短縮したり、製品に不具合がないかどうかを検証して調整します。
そうして問題が出なくなったら、あとはどばっと流すかんじですね。</p>

<h2>ハードウェア開発の体制と工程</h2>

<p><br>
<b>白石:</b> 量産に至るまでの流れが、少しイメージできるようになりました。これも聞きたいんですが、ハードウェアを作るとなると、実際にはどういうスキルを持った人が必要になるんでしょうか？
<br><br>
<b>國舛:</b> 大きく分けると4つくらいの職種が共同で作業に当たる感じですね。
<br><br>
まずは<em>電気設計</em>。基板づくりを担当します。
<br><br>
<em>デザイナー</em>。製品の見た目はもちろん、ボタンの押し心地などの機構も考えます。他にはパッケージや製品アクセサリのデザインもするし、場合によってはWebサイトのデザインも行ったりします。
<br><br>
<em>組み込みエンジニア</em>。ハードウェアに搭載する組み込みのソフトウェアを担当します。
<br><br>
そして一般的な<em>アプリエンジニア</em>です。
<br><br>
他にもサーバインフラのエンジニアやプロジェクトマネージャーなどもいたりしますが、基本的には先程申し上げた4つの職種がメインになります。
<br><br>
<b>白石:</b> あと、工程や期間についても、少し具体的に教えていただけますか？
<br><br>
<b>國舛:</b> 原理試作、EVT、DVT、そして量産と言った流れですね。</p>

<p><div id="attachment_12963" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28.png" alt="量産型ハードウェア開発プロセス（一例）" width="640" height="299" class="size-full wp-image-12963" srcset="/wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28.png 640w, /wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28-300x140.png 300w, /wp-content/uploads/2015/02/4c39d2a07e17ffc686015473bd582e28-207x96.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">量産型ハードウェア開発プロセス（一例）</p></div>
<br>
Cerevoでいう原理試作というのは、どんな大きさでもいいから、やりたいことが出来るかを検証します。この過程でArduinoとかが使われますね。
<br><br>
EVTはEngineering Verification Testの略で、Cerevoでは社内で（作業が）完結する試作のことを指します。デザインを3Dプリンタで出力してみて、基板や部品が中にきちんと収まるかどうかを検証するのが主な目的です。ソフトウェアもちょっと書いたりしますね。EVTは1〜3回行い、1回のフェーズでだいたい1ヶ月から1ヶ月半かかります。
<br><br>
EVTを進めて行く中で、そろそろ工場にお願いしてもいいかな、という段階になったら、1〜3ヶ月くらいかけて工場の選定を行います。新しい工場を使うなら、契約とかも必要になりますね。
<br><br>
決定したら、DVTを行います。DVTはDesign Verification Testの略で、工場側がきちんと設計通り製造できるかのチェックが目的の試作になります。ここで問題がなければ、量産を行います。
<br><br>
最後に量産ですが、そもそも最初に電子基板作るのに3〜4週間かかりますね。<br>
その上で、1,000台とか3,000台作るとなると、2〜3週間かかるかな。部品が全部揃っているという前提ですけどね。量産にかかる時間は、製品によってかなりまちまちです。あとは販売ルートとかマニュアルの整備とか、そういう実務も必要になってきます。</p>

<h2>「とにかく作ってみる！」それが大事！</h2>

<p><br>
<b>白石:</b> ではそろそろインタビューを終えたいと思いますが、これまでソフトウェア開発しかしたことがないエンジニアに向けて、一言いただけますでしょうか？</p>

<p><img src="/wp-content/uploads/2015/02/cerebo4.jpg" alt="" width="550" height="352" class="alignnone size-full wp-image-13088" srcset="/wp-content/uploads/2015/02/cerebo4.jpg 550w, /wp-content/uploads/2015/02/cerebo4-300x192.jpg 300w, /wp-content/uploads/2015/02/cerebo4-207x132.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" />
<br><br>
<b>國舛:</b> 「とにかく作ってみる」それが重要ですね。最近は3Dプリンタもあるし、マイコンも流行っているので、ハードウェアを触るのもずいぶん敷居が下がりました。エンジニアは、どうしても「小さく」「カッコよく」を目指してしまいがちなんですが、最初はそんなのどうでもいい。とにかくやってみることが重要です。あとは、最近はイベントとかもよくやっているので、そういうのにも参加してみてはいかがでしょうか。
<br><br>
<b>白石:</b> 本日は、実際にハードウェア製品をリリースするまでの過程を詳しくお話いただき、ありがとうございました！とてもためになりました。</p>

<p>ちなみに、國舛さんが<strong>「ハードウェアスタートアップでアプリエンジニアは何をしているか」</strong>というテーマでブログを書かれています。こちらも合わせてお読みいただくと、より理解が深まると思います！</p>

<ul>
<li><a href="http://tech-blog.cerevo.com/archives/753/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ハードウェアスタートアップでアプリエンジニアは何をしているか</a> | Cerevo TechBlog</li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
		<item>
		<title>初心者でもわかる・できる！Arduinoを使った初めての電子工作実践</title>
		<link>/youtoy/12029/</link>
		<pubDate>Thu, 05 Feb 2015 01:34:12 +0000</pubDate>
		<dc:creator><![CDATA[豊田陽介]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[電子工作]]></category>

		<guid isPermaLink="false">/?p=12029</guid>
		<description><![CDATA[連載： IoTxWeb (2)この記事では、「IoT」という言葉には少し関心があるけど、ハードウェアを作るなんてハードルが高そう…と感じていらっしゃる方々（特にWebデザイナー／エンジニア）に向けて、低価格で簡単にハード...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/iot_web/" class="series-240" title="IoTxWeb" data-wpel-link="internal">IoTxWeb</a> (2)</div><p>この記事では、「IoT」という言葉には少し関心があるけど、ハードウェアを作るなんてハードルが高そう…と感じていらっしゃる方々（特にWebデザイナー／エンジニア）に向けて、低価格で簡単にハードウェア制御を学べる「Arduino」（アルデュイーノ）という電子工作キットの使い方をお伝えします。</p>

<h2>電子工作でできること</h2>

<p>ではそもそも「電子工作」とは何でしょうか？<br>
インターネットで検索すると「電子部品を使った工作のこと」、「様々な部品で電子回路を作ること」などとでてきます。でも、「電子部品って何？」「電子回路？」と疑問が増えていきます。<a href="http://ja.wikipedia.org/wiki/%E9%9B%BB%E5%AD%90%E9%83%A8%E5%93%81" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Wikipediaで電子部品の項目</a>を見てみると「電子部品とは、電気製品に使用される部品のことである」と書いてあり、難しそうな部品の名前が書かれています。</p>

<p>はじめから詳細に踏み込むと難しそうなので、まずは、電子部品を使うとどのようなことが実現できるかを、具体例で見てみましょう。</p>

<h3>センサーライトなどの機能の例</h3>

<p>自分でスイッチのON／OFFを行わなくても、人の出入りに合わせて点灯／消灯するライトがあります。ライトが必要なときのみにONになり、省エネにも効果的です。<br />
この仕組みを実現するためには「センサーで人が近づいたことを検知する」、「ライトのON／OFFを制御する」という機能が必要です。この「人を検知するセンサー部品」や「ライトを制御するプログラムを処理する」といった部分が、電子部品を組み合わせることによって実現されています。</p>

<p>他に、「部屋の温度を自動的に設定温度どおりに維持する」というエアコンの機能を考えてみましょう。センサーライトの例のセンサーや制御の部分が、「センサーで温度を測る」、「エアコンの冷風／温風の温度を制御する」と置き換わると実現できそうです。</p>

<h2>Arduinoでできること</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_LED_blink.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_LED_blink-300x229.jpg" alt="ArduinoでLチカの実行" width="300" height="229" class="alignnone size-medium wp-image-12158" srcset="/wp-content/uploads/2015/01/Arduino_LED_blink-300x229.jpg 300w, /wp-content/uploads/2015/01/Arduino_LED_blink-207x158.jpg 207w, /wp-content/uploads/2015/01/Arduino_LED_blink.jpg 627w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>先ほどの例と似たようなことを、一から自分で試してみようとすると大変です。センサーなどの部品をつなげるだけでなく、「センサーで検知した内容に合わせて、何か制御を行う」という、プログラムを処理する部分や、プログラムを書き込む方法の用意などノウハウが必要です。</p>

<p>このように気軽には試せなかった「電子部品を使った工作」を、より身近にしてくれるものが「Arduino」です。Arduino には「センサーなどの部品をつなげる部分」や、「プログラムを開発し、部品へ書き込むための開発用ソフトウェア」などが用意されています。PCとArduino、そして、ちょっとした部品があれば電子工作を試すことができ、工作を始める際の敷居が大幅に下がります。</p>

<p>ところで、Arduinoを使うとどんなものを作ることができるのか、工作例を見てみましょう。</p>

<ul>
  <li>Arduinoの工作例（Youtube・Vimeo の動画へのリンク）
    <ul>
      <li><a href="https://www.youtube.com/watch?v=Po0uQPXmztU" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">郵便受けに手紙が届いたら携帯電話へお知らせ</a></li>
      <li><a href="http://vimeo.com/38796545" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ゼリーを触って演奏するユニークな楽器</a></li>
      <li><a href="http://vimeo.com/16797925" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Twitterで特定のつぶやきがあったらお知らせ：サルのぬいぐるみ</a></li>
       </ul>
  </li>
</ul>

<p>これらは、先ほどの例にあった「センサーによる検知、検知した内容にあわせた制御」を、Arduinoと部品を使って実現しています。Arduinoでは、例えば下記のような機能を実現できます。</p>

<ul>
  <li>光や温度、音、物との距離など周囲の状態を知る</li>
  <li>光や音をだす、モーターなどの部品や他の機械を動かす、他の機械に情報を送る</li>
</ul>

<h2>最初の一歩：Lチカ</h2>

<p>部品を組み合わせるといろいろなことができるArduinoですが、まずは基本的な内容を試すことにしましょう。Arduinoを試す最初の一歩に「Lチカ（LEDを点滅させるプログラム）」があります。この Lチカに必要な部品、部品のつなぎ方、LEDの制御方法などを説明していきます。</p>

<h3>手軽に部品を揃える</h3>

<p>Lチカに必要な部品がいくつかありますが、自分で個別に揃えるのは大変です。部品の種類が複数あり「どれを組み合わせれば良いかが分からない」ということがおこりえます。</br>
そのため、最初は、基本的な部品がセットになった「キット」を利用することをオススメします。インターネットで「Arduino　キット」とキーワード検索するといくつかでてきますが、4000円程度のものを一例として挙げておきます。</p>

<ul>
  <li>キットの例（2015年1月現在）
  <ul>
    <li>Arduinoエントリーキット（<a href="http://store.techshare.jp/shopdetail/005004000001" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">⇒テックシェアの販売ページ</a>）</li>
    <li>Arduinoをはじめようキット（<a href="https://www.switch-science.com/catalog/181/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">⇒スイッチサイエンスの販売ページ</a>）</li>
  </ul>
  </li>
</ul>

<p>　※ <a href="http://www.amazon.co.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Amazon.co.jp</a>でも購入が可能です</p>

<p>また、キットには説明書が付属されていないため、部品のつなぎ方は自分で調べる必要があります。インターネットで調べてもよいですが、調べるのが大変という方は書籍を購入することで手間を省けます。前述の2つのキットに関しては、販売ページの商品説明に、オススメの書籍の例がそれぞれ記載されています。</p>

<h3>Lチカのための部品</h3>

<p>部品をつないでみる前に、Lチカでに必要になるもの一式を紹介します。各部品の説明は後述していきます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/parts_r2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/parts_r2.png" alt="Lチカ用の部品一式" width="605" height="432" class="alignnone size-full wp-image-12112" srcset="/wp-content/uploads/2015/01/parts_r2.png 640w, /wp-content/uploads/2015/01/parts_r2-300x214.png 300w, /wp-content/uploads/2015/01/parts_r2-207x147.png 207w" sizes="(max-width: 605px) 100vw, 605px" /></a></p>

<p><a href="http://arduino.cc/en/Main/Products" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduinoボードはいくつか種類があります</a>が、この記事では、前述のキットでも同梱されている「<a href="http://arduino.cc/en/Main/ArduinoBoardUno" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino Uno R3</a>」を利用します。</br>
抵抗もいくつか種類がありますが、今回は利用するLEDに合わせて330Ω（オーム）のものを使います。抵抗の種類については、後で補足します。
なお、キットを購入すると、よく利用する複数の種類の抵抗が付属されています。そして、キットに対応する書籍を購入していると、組み合わせるべき部品と抵抗の種類の情報が記載されているため、 Lチカやそれ以外の工作を楽に進めることができます。</p>

<p><strong>【USBケーブルに関する補足】</strong></p>

<p>PCとArduinoボードをつなぐ USBケーブルですが、ケーブルの種類が「USBケーブル A-Bタイプ」などと呼ばれるものになります。接続部分の形が下の写真のようなものになります。スマートフォンの充電に使うケーブルなどとは異なりますので注意しましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/USB_A_B.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/USB_A_B.png" alt="USBコネクタのA・Bタイプ" width="414" height="288" class="alignnone size-full wp-image-12121" srcset="/wp-content/uploads/2015/01/USB_A_B.png 640w, /wp-content/uploads/2015/01/USB_A_B-300x208.png 300w, /wp-content/uploads/2015/01/USB_A_B-207x143.png 207w" sizes="(max-width: 414px) 100vw, 414px" /></a></p>

<p><strong>【Arduinoボードに関する補足】</strong></p>

<p>Arduinoボード上の接続部などについて、一部補足します。
今回のLチカでは、下の写真の上部にある接続部を使います。今の時点では、接続部の横に0〜13番までの番号や GND と記載があることを確認しておいてください。
下側にある接続部は上部にある接続部と異なる役割を持っていますが、詳細は割愛します。
また、写真で示したLEDを見ることで、Arduinoボードに電源供給がされているかを確認できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_exp.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_exp.png" alt="Arduinoボードの接続部などの補足" width="449" height="240" class="alignnone size-full wp-image-12219" srcset="/wp-content/uploads/2015/01/Arduino_exp.png 640w, /wp-content/uploads/2015/01/Arduino_exp-300x160.png 300w, /wp-content/uploads/2015/01/Arduino_exp-207x110.png 207w" sizes="(max-width: 449px) 100vw, 449px" /></a></p>

<h3>部品をつなぐ</h3>

<p>それでは、Lチカ用の部品をつないでみましょう。</p>

<p><strong>手順1）ブレッドボードにLEDと抵抗を差し込む</strong></p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3-300x215.jpg" alt="Lチカ用回路のブレッドボード部分" width="300" height="215" class="alignnone size-medium wp-image-12154" srcset="/wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3-300x215.jpg 300w, /wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3-207x148.jpg 207w, /wp-content/uploads/2015/01/Arduino_Circuit_Arrow_r3.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>上の写真の赤矢印で示した部分のように、LEDと抵抗を、ブレッドボードに差し込んでいきます。</br>
ブレッドボードとは、部品を差し込むための穴がたくさん空いた板状のものです。LEDやセンサーなどの部品のつなぎ替えを、簡単に行うことができるようになり、試行錯誤をする段階では非常に便利です。</p>

<p>まずは、以下の手順でブレッドボードにLEDと抵抗を差し込んでみましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/LED_R_r2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/LED_R_r2.png" alt="LEDと抵抗をブレッドボードに差し込む手順" width="629" height="336" class="alignnone size-full wp-image-12111" srcset="/wp-content/uploads/2015/01/LED_R_r2.png 640w, /wp-content/uploads/2015/01/LED_R_r2-300x160.png 300w, /wp-content/uploads/2015/01/LED_R_r2-207x110.png 207w" sizes="(max-width: 629px) 100vw, 629px" /></a></p>

<p>LEDは電気が流れる方向が決まっています。写真にあるように、方向は足の長さの違いで区別します。つなぐ方向を逆にしないように注意しましょう。なお、抵抗はつなぐ際の方向は関係ありません。</p>

<p><strong>【ブレッドボードに関する補足】</strong></p>

<p>ブレッドボードにLEDと抵抗を差し込みましたが、部品はどのようにつながっているのでしょうか？それを理解するために、ブレッドボードの中身について補足します。</br>
ブレッドボードのそれぞれの穴は、一部が中でつながっています。下の写真で、緑の線を描いた部分が、内部でつながっている穴になります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/borad_line_r2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/borad_line_r2-300x202.png" alt="ブレッドボードの内部でつながっている部分" width="300" height="202" class="alignnone size-medium wp-image-12108" srcset="/wp-content/uploads/2015/01/borad_line_r2-300x202.png 300w, /wp-content/uploads/2015/01/borad_line_r2-207x139.png 207w, /wp-content/uploads/2015/01/borad_line_r2.png 594w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>このため、先ほどつないだ部品は、LEDのマイナス側と抵抗の片側とが接続された状態になっています。</p>

<p><strong>【抵抗に関する補足】</strong></p>

<p>LEDなどの部品には流してもよい電流の大きさが決められており、過剰に電流を流すと部品が壊れてしまします。それを防ぐために使うのが抵抗です。抵抗を組み込むことで、部品に流れる電流を抑えられます。ここで、抵抗の種類などについて少し補足します。</p>

<p>今回、330Ωの抵抗を使いましたが、抵抗には種類があります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/R.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/R-300x174.png" alt="抵抗値と見た目の違い" width="300" height="174" class="alignnone size-medium wp-image-12162" srcset="/wp-content/uploads/2015/01/R-300x174.png 300w, /wp-content/uploads/2015/01/R-207x120.png 207w, /wp-content/uploads/2015/01/R.png 617w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>上の写真にあるように、抵抗についている色の並びが、抵抗の大きさを示しています。計算方法はここでは割愛しますが、最初のうちはよく利用するものはある程度限られます。そのため主なものの「抵抗値と色の並び」をメモしておくとよいでしょう。</p>

<p>抵抗にはいくつか種類があることを説明しましたが、どの抵抗を使えばよいのでしょうか？
それには、オームの法則を使って計算します。学校の授業で習った覚えがあったりするのではないでしょうか？
計算には、部品がどのようにつながっているかも考慮する必要があります。そのため、最初は書籍やインターネットで情報を調べるなどして、自分が試したい内容に関して「どの種類の部品と抵抗を、どのようにつなげばよいか」を参照したほうが楽に行えます。</p>

<p>それでは、今回の Lチカのつなぎ方の場合で、使う抵抗の大きさを計算してみます。計算式は</br>
　<strong>（「電源の電圧」 &#8211; 「LEDの順電圧」）÷ 「LEDに流す電流」 </strong></br>
となります。
LEDの順電圧というのは LEDによって決まっているものです。赤色のLEDの場合 2 V（ボルト）前後であることが多いようです。また、電源の電圧というのは、この場合は Arduinoボードの電圧になりますが、0～13番の接続部でかかる電圧は5Vです。LEDに流す電流は、LEDの順電圧と同様に LEDに決められた流してよい電流の最大値でひとまず計算します。これが10mA（ミリアンペア）の場合、抵抗値の計算は下記になります。</br>
　(5 &#8211; 2) ÷ 0.01 = 300</br>
この場合、利用する抵抗の大きさは300Ω（オーム）となりましたが、同じ大きさの抵抗があるとは限りません。その場合は、計算結果より大きく数字が近いものを選びます。そうすると、流れる電流が少し小さめになり、LEDに流してよい電流の最大値を超えることはありません。</p>

<p><strong>手順2）Arduinoボードとつなぐ</strong></p>

<p>先ほどの部品とArduinoボードをつなぎます。Arduinoボードを使う際、ボードの裏側は金属部分がそのままでているため、金属などの電気を通す素材の上に置くのは避けてください。</br>
では、下の写真にあるように、Arduinoボードとブレッドボードの間を、ジャンバーワイヤーでつないでみましょう。LEDのプラス側のほうが11番の接続部に、マイナス側のほうが抵抗を通じて GNDの接続部につながれる形になります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb.png" alt="Arduinoボードとブレッドボードの接続" width="633" height="480" class="alignnone size-full wp-image-12160" srcset="/wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb.png 633w, /wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb-300x227.png 300w, /wp-content/uploads/2015/01/0ecefdd711832ec385104a0a43440acb-207x156.png 207w" sizes="(max-width: 633px) 100vw, 633px" /></a></p>

<p>ジャンパーワイヤーは、Arduinoボードやブレッドボードへつなぐためのピンが、導線でつながれたものです。抵抗と同じで、つなぐ方向は特に関係ありません。</p>

<h3>プログラム（スケッチ）を書き込む準備</h3>

<p>部品の準備は整いました。次に、PCからArduinoボードへプログラムを書き込むための準備を進めていきましょう。Arduinoでは、プログラムのことを「スケッチ」と言いますが、本記事では「プログラム」と記載しています。</br>
今回は、LEDを点滅させるためのプログラムを書き込みます。</p>

<p><strong>手順3）PCで開発環境「Arduino IDE」を準備する</strong></p>

<p>「<a href="http://arduino.cc/en/main/software#toc1" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino用プログラムを扱う専用ソフトウェアの Arduino IDE</a>」を準備します。お使いのPCに合わせて、最新のWindows用／Mac用などのファイルを「<a href="http://arduino.cc/en/main/software#toc1" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Arduino IDEのページ</a>」からダウンロードしてください（※2015年1月3日時点では、最新バージョンは1.0.6）。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/IDE_Download.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/IDE_Download-300x135.jpg" alt="Arduino IDEのダウンロードページ" width="300" height="135" class="alignnone size-medium wp-image-12067" srcset="/wp-content/uploads/2015/01/IDE_Download-300x135.jpg 300w, /wp-content/uploads/2015/01/IDE_Download-207x93.jpg 207w, /wp-content/uploads/2015/01/IDE_Download.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Windowsの場合はドライバのインストールも必要ですが、インストーラを使えば、Arduino IDE と一緒にドライバもインストールされます。Macの場合は、ZIPファイルを解凍するとArduino.appが展開されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_app.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_app-300x160.png" alt="Arduino IDE アイコン" width="150" height="80" class="alignnone size-medium wp-image-12061" srcset="/wp-content/uploads/2015/01/Arduino_app-300x160.png 300w, /wp-content/uploads/2015/01/Arduino_app-207x110.png 207w, /wp-content/uploads/2015/01/Arduino_app.png 399w" sizes="(max-width: 150px) 100vw, 150px" /></a></p>

<p>これで開発環境の準備ができました。</p>

<p><strong>手順4）PCとArduinoボードをつなぐ</strong></p>

<p>ArduinoボードをPCにUSBケーブルでつないでみましょう。
USBケーブルをつなぐと、PCからArduinoボードに電気が供給されるため、Arduinoボード上の小さなLEDが点灯します。Arduinoボードには電源スイッチがないため、動作を止めたい場合は USBケーブルを抜いて電気の供給を止めることになります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_Circuit_r3.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_Circuit_r3-300x215.jpg" alt="ArduinoのLチカ用回路" width="300" height="215" class="alignnone size-medium wp-image-12152" srcset="/wp-content/uploads/2015/01/Arduino_Circuit_r3-300x215.jpg 300w, /wp-content/uploads/2015/01/Arduino_Circuit_r3-207x148.jpg 207w, /wp-content/uploads/2015/01/Arduino_Circuit_r3.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>そして、手順3）で準備したArduino IDEを起動してください。そうすると、下の写真のようなウィンドウが表示されると思います（※以下、基本的にはMac版の画面で説明を進めます）。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/IDE_mac.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/IDE_mac-257x300.jpg" alt="Mac用の Arduino IDE" width="257" height="300" class="alignnone size-medium wp-image-12064" srcset="/wp-content/uploads/2015/01/IDE_mac-257x300.jpg 257w, /wp-content/uploads/2015/01/IDE_mac-177x207.jpg 177w, /wp-content/uploads/2015/01/IDE_mac.jpg 533w" sizes="(max-width: 257px) 100vw, 257px" /></a></p>

<p>ここで、つないだArduinoボードの設定と、シリアルポートの設定を行います。シリアルポートの詳細の説明は、今の時点では割愛します。ひとまず、ArduinoボードをPCに認識させるために必要な設定、と覚えておきましょう。</p>

<p>メニューの「ツール」⇒「マイコンボード」の中の「Arduino Uno」を選択します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a-300x157.jpg" alt="Arduinoボードの種類の選択" width="300" height="157" class="alignnone size-medium wp-image-12070" srcset="/wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a-300x157.jpg 300w, /wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a-207x108.jpg 207w, /wp-content/uploads/2015/01/828df575c4612e86e996550a6df46e9a.jpg 504w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>次にシリアルポートの設定です。Macに関しては、メニューの「ツール」⇒「シリアルポート」の中の「/dev/tty.usbmodemという名前が含まれる項目」を選択すればOKです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/IDE_mac_serial_port.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/IDE_mac_serial_port-300x184.jpg" alt="Arduino IDEでのシリアルポートの選択" width="300" height="184" class="alignnone size-medium wp-image-12072" srcset="/wp-content/uploads/2015/01/IDE_mac_serial_port-300x184.jpg 300w, /wp-content/uploads/2015/01/IDE_mac_serial_port-207x127.jpg 207w, /wp-content/uploads/2015/01/IDE_mac_serial_port.jpg 506w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Windowsの場合、「COMという名前が含まれる項目」を選択するのですが、それが複数表示されている場合があります。そのため、Arduinoボードに該当するものを確認する方法を記載します。</br>
「スタートメニュー」から、「コントロールパネル」⇒「ハードウェアとサウンド」⇒「デバイスマネージャー」とたどります。そして、デバイスマネージャーの中の「ポート（COMとLTP）」をクリックし、その中で「Arduino Uno を名前に含む項目」を見ます。下の画像の例では「COM6」が Arduinoボードのシリアルポートになります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/win_com_mod.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/win_com_mod-300x102.jpg" alt="デバイスマネージャーでシリアルポートの確認" width="300" height="102" class="alignnone size-medium wp-image-12076" srcset="/wp-content/uploads/2015/01/win_com_mod-300x102.jpg 300w, /wp-content/uploads/2015/01/win_com_mod-207x70.jpg 207w, /wp-content/uploads/2015/01/win_com_mod.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>これで、PCとArduinoボードの接続と設定は完了です。</p>

<p><strong>手順5）Lチカのプログラムを試す</strong></p>

<p>これでLチカの準備が整いました。早速、Lチカを試してみましょう。</br>
Arduino IDEに下記のプログラムを入力してみてください。</p>

<p></p><pre class="crayon-plain-tag">void setup() {                
  pinMode(11, OUTPUT);     
}

void loop() {
  digitalWrite(11, HIGH);
  delay(500);
  digitalWrite(11, LOW);
  delay(500);
}</pre><p></p>

<p>そして、下の画像で示したボタンを押してみましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/IDE_program_r2.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/IDE_program_r2-300x271.jpg" alt="Lチカのプログラムと書き込み用ボタン" width="300" height="271" class="alignnone size-medium wp-image-12141" srcset="/wp-content/uploads/2015/01/IDE_program_r2-300x271.jpg 300w, /wp-content/uploads/2015/01/IDE_program_r2-207x187.jpg 207w, /wp-content/uploads/2015/01/IDE_program_r2.jpg 500w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>この操作で、Arduinoボードにプログラムが書き込まれます。
問題なく書き込みが行われれば、Arduino IDEの下部に「マイコンボードへの書き込みが完了しました」というメッセージが表示され、ブレッドボードにつないだLEDが点滅します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/Arduino_LED_blink.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/Arduino_LED_blink-300x229.jpg" alt="ArduinoでLチカの実行" width="300" height="229" class="alignnone size-medium wp-image-12158" srcset="/wp-content/uploads/2015/01/Arduino_LED_blink-300x229.jpg 300w, /wp-content/uploads/2015/01/Arduino_LED_blink-207x158.jpg 207w, /wp-content/uploads/2015/01/Arduino_LED_blink.jpg 627w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>もし、下の画像のようなエラーが表示された状態になった場合は、プログラムの入力ミスがないかを確認してみてください。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/01/ArduinoIDE_error.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2015/01/ArduinoIDE_error-300x257.jpg" alt="Arduino IDE での文法ミスのエラー画面" width="300" height="257" class="alignnone size-medium wp-image-12215" srcset="/wp-content/uploads/2015/01/ArduinoIDE_error-300x257.jpg 300w, /wp-content/uploads/2015/01/ArduinoIDE_error-207x177.jpg 207w, /wp-content/uploads/2015/01/ArduinoIDE_error.jpg 499w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>プログラムについて補足します。</p>

<p><pre class="crayon-plain-tag">void setup() { ... }</pre>の部分は最初に1度だけ実行される部分です。
今回のプログラムでは<pre class="crayon-plain-tag">pinMode(11, OUTPUT)</pre>と、11番の接続部分を出力用に設定しています。ジャンパーワイヤーが接続された11番から、LEDに電流を流したり止めたりするためのものです。</p>

<p><pre class="crayon-plain-tag">void loop() { ... }</pre>の部分は繰り返し実行される部分です。そして<pre class="crayon-plain-tag">digitalWrite(11, HIGH)</pre>は11番の接続部分から電流を流すためのもので、<pre class="crayon-plain-tag">digitalWrite(11, LOW)</pre>は、11番の電流を止めるものです。その電流を流したり止めたりする部分の間に、500ミリ秒（＝ 0.5秒）待つ <pre class="crayon-plain-tag">delay(500)</pre>という部分があります。このため、LEDが0.5秒ごとに点いたり消えたりすることなります。なお、この数字を1000にすると変化が1秒ごとになりますし、もっと小さな数字にするとより短い時間で点滅を繰り返すことになります。</p>

<p>今回、USBケーブルが Arduinoボードに電気を供給する部分になっているため、USBケーブルを抜くと ArduinoボードやLEDに電流は流れなくなります。Arduinoボードに書き込んだプログラムはそのまま残っているので、再度USBケーブルをつなぐなど電気を供給した際には、今回書き込んだプログラムが実行される状態になっています。</p>

<h2>おわりに</h2>

<p>Arduinoを使った電子工作はいかがだったでしょうか？</br>
LEDを点滅させる以外にも、センサーの情報を取得したり、モーターを制御したりなど、Arduinoを使ってできることはたくさんあります。ぜひ、他の部品を使った電子工作を試してみてください。</p>
]]></content:encoded>
		
		<series:name><![CDATA[IoTxWeb]]></series:name>
	</item>
	</channel>
</rss>
