SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Tessel 2ではじめるセンサー電子工作入門

ブレットボードを使って、Tessel 2とスイッチやLEDを接続してみよう

Tessel 2ではじめるセンサー電子工作入門 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 Web系の知識でかんたんに操作できる初心者向けのマイコンボードTessel 2に、ブレッドボードを使っていろいろなセンサーを接続する電子工作を紹介します。連載の1回目である今回は、LEDとタクトスイッチの接続を取り上げます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

対象読者

 IoTに興味があり、電子工作とJavaScriptの基本的な知識がある方を対象とします。電子工作のごく初歩的な説明は割愛しているので、「ラズベリーパイをつかったセンサープログラミング超入門」の記事なども併せて参照してください。

はじめに

 前回の連載「Tessel 2ではじめるお手軽IoT」では、ワンボードマイコンTessel 2に、専用の気候センサーモジュールやUSBカメラを接続する方法を紹介しました。この連載では、そのような専用のハードウェアモジュールではなく、ブレッドボードと呼ばれる基板を使ってTessel 2にセンサーを接続してみます。第1回は、LEDとタクトスイッチの接続です。

Tessel 2のGPIO

 Tessel 2の本体には、ハードウェアモジュール拡張用に2つのポート(10pin)がついています。実はこのポート、いわゆるGPIO(General Purpose Input/Output、汎用入出力)ポートになっているので、専用のモジュールを接続するだけでなく、汎用的に利用することができます。GPIOはソフトウェアによって信号の入力や出力に利用することができる端子で、Tessel 2でもソフトウェアで制御可能です。

ピンの構成

 ポートAは、次のようなピンの構成になっています。

ポートAのピン構成
ポートAのピン構成

 10ピン端子のうち2つは+3.3Vの電源とGNDで、残りの8つは全てデジタルのIOポートとして利用できます。

 デジタルのIOポートとは、その端子で2つの値(High/Low)の出力、入力の制御ができるという意味です。GPIOの場合、このHigh/Lowは電圧で決まります。ある値以上の電圧ならHigh、それ以下であればLowということです。

 また、電圧のアナログ入力や、割り込み(interrupt)用の入力端子としても利用可能なものがあります。これらの端子については、この連載の中で別途説明します。その他の端子の詳細については、公式のドキュメント内にあるハードウェアAPIの項目を参照してください。

LEDの点灯

 まずは、GPIOの出力を使って、LEDを点灯させてみましょう。

LEDとは

 日常生活においてもおなじみとなったLED(発光ダイオード)は、ダイオードと呼ばれる素子の一種で、電圧を加えると発光する半導体素子です。

 LEDには極性があり、足の長いほうのアノード(プラス)からカソード(マイナス)に対して電圧を加えるようにします。ただし、電圧が規定より低い場合はあまり電流が流れず、発光もしません。LEDは、規定のある電圧を超えると急激に電流が流れるようになり、電流量に応じた強さで光るようになります。この規定の電圧のことを、順方向電圧(VF)と呼びます。

順方向電圧と順方向電流

 順方向電圧はLEDの種類によって変わり、赤や黄色などは2V程度、白や青などは3.5Vぐらいが一般的です。また、順方向電流とはLEDに流れる電流のことで、LEDによって流すことのできる最大の電流値が定められています。規定以上の電流を流し続けるとLEDが破損してしまうため、LEDの回路ではLEDに流れる電流を制限する必要があります。

電流制限抵抗

 Tessel 2のGPIOでは、端子をHighにした場合、3.3Vの電圧が出力されます。これを利用してLEDを点灯させてみましょう。ただし、GPIOの出力を直接LEDに接続すると電流が流れ過ぎるので、何らかの方法で電流を制限する必要があります。今回はLEDに対して直列に抵抗を接続することで、電流を制限するようにしました。この抵抗のことを電流制限抵抗といい、オームの法則を使って次のような式で求められます。

 電流制限抵抗(Ω)=( 電源電圧(V)- 順方向電圧(V))/ 順方向電流(A)

 順方向電流は、LEDの最大許容電流以下になるようにします。ただし、GPIO自体も制限なく電流を流すことはできません。Tessel 2では、どこまで許容されるか不明ですが、10mA以下に制限すればいいでしょう。なお、この10mAは一般的なLEDの最大許容電流よりも小さな値です。そのため、GPIOの出力をそのまま利用した場合は、LEDによってはあまり明るく光りません。

 ここでは、ごく普通の赤色LEDを想定して、順方向電圧を2Vで計算してみます。

 (3.3V - 2V)/ 10mA * 0.001 = 130Ω

 したがって、130Ω程度以上の抵抗を接続すれば良いことになります。

回路図

 手持ちのパーツに130Ωの抵抗がなかったので、今回は次の回路図のように200Ωの抵抗を使いました。この場合は、オームの法則で計算すると、1.3V/200Ω=6.5mA程度の電流が流れることになります。

回路図
回路図

 ポートAの0番ピンを、抵抗とLEDに接続します。実際のブレッドボードとTessel 2との接続は、次のようになります。

ブレッドボードとTessel2との接続
ブレッドボードとTessel2との接続

 Tessel 2のピンとブレッドボード間は、両端がオスのジャンパーコードで接続します。

 ブレッドボードの両端にあるプラスマイナスの穴は、内部で横方向(前述の図の向きで)につながっていて、通常電源に接続します。中央の穴は縦方向につながっていて、ここに電子パーツを配置します。

GPIOを制御する

 次にGPIOを制御するコードを書いてみましょう。最初にt2 initコマンドで、ひな形を作成しておきます。そして作成されたindex.jsを、次のように書き換えます。これは、0.5秒ごとにLEDが点滅するサンプルコードです。

リスト1 index.js
const tessel = require('tessel');

// ポートAの0番ピンのオブジェクト(1)
const pin = tessel.port.A.pin[0];

let v = 0;
pin.output(v); // ポートをoffにする(2)

setInterval(function () {
    v = v ^ 1; // 1と0を交互に求める(3)
    pin.output(v);
}, 500);

 tesselモジュールには、GPIOにアクセスするためのライブラリが含まれているので、コードもシンプルに記述することができます。ピンに対応するオブジェクトは、ピン番号での配列になっていて、ここでは0番ピンを指定しています(1)。ピンのオブジェクトのoutputメソッドで、GPIOの出力値を設定します(2)。outputメソッドの引数に0または1を設定することで、High/Lowが切り替えられます。ここでは初期値0を1とXORすることで、0.5秒ごとに0と1の値を交互に取得し(3)、設定することで、LEDの点灯のON/OFFを行っています。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
タクトスイッチを接続する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Tessel 2ではじめるセンサー電子工作入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10016 2017/03/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング