2019年4月21日日曜日

ESP32-DevKitCとArduino IDEでIoT開発!~Wifiを経由し、スマホやパソコンからGPIOの操作をする~


こんにちは。
少々お久しぶりです。


皆さん、「IoT」っていう言葉、聞いたことありますか?


おそらく一度はあると思います。


IoTとは「Internet of Things」の略で、モノのインターネットとも呼ばれています。


様々な「モノ」がインターネットに接続され、情報交換することにより互いを制御する仕組みのことを指します。



スマホから家電を操作する、みたいなものがよくあるパターンですね。


現在、このIoTという技術がかなり注目され、実用化に向け発展し続けています。



ということで今回は、ESP32-DevKitC wroom-32開発ボードというものとArduino開発環境を用い、自宅で簡単にIoTを実現してみようと思います。


ESP32-DevKitC wroom-32開発ボードとは



では、そもそも、「ESP32-DevKitC」ってなんでしょうか。



Espressif Systems 社の製品に、「ESP-WROOM-32」というものがあります。

これは、Wi-FiとBluetoothの機能が付いているモジュールです。



これだけで、Wi-FiとBluetoothという無線通信機能を電子工作に取り入れられるのでとても便利です。

しかも格安。


専用のソフトウェアからプログラムを書き込むことで動作しますが、それだけでなく、プラグインを入れることでArduino IDEで開発することもできます。




ただ、半田付けや基板実装などを自分でする必要があるので、特に初心者にとっては抵抗があります。




そんな時に便利なのが、この「ESP32-DevKitC wroom-32開発ボード」です。

モジュール「ESP-WROOM-32」に、「USBシリアル変換機能」や「5V ⇒ 3.3V変換」、「ピン」などが搭載されており、非常に手軽にWi-Fi・Bluetoothを用いた電子工作が楽しめます。


価格は、約1,480円です。


秋月電子で購入できます。

[秋月電子]ESP32-DevKitC ESP-WROOM-32開発ボード


では実際に使用してみましょう。


Arduino IDEにプラグインの導入(開発環境)



Arduino IDEでESP32-DevKitC wroom-32開発ボードにプログラムを書き込んだりできるようになるためには、プラグインを入れる必要があります。


以前は、GitHubからファイルをダウンロードして、コマンドをたたいて...
みたいな面倒な作業が必要だったようですが、現在、その必要はなく、超簡単にプラグインの導入ができます。


1.Arduino IDEの最新版をダウンロード・インストール

Arduino IDEの最新版をこちらからダウンロード・インストールしてください。
インストール版でもポータブル版でも、どちらでもよいです。

https://www.arduino.cc/en/Main/Software


すでにパソコンに入っているという方はそれでも構いませんが、もし、そのIDEのバージョンが低い場合、今回の操作によるプラグイン導入ができないか もしれません。

ですので、素直に最新版を使用することをお勧めします。


2.ボードマネージャ追加

では、Arduino IDEにESP32用のプラグインを追加していきます。


まず、「ファイル」⇒「環境設定」を開いてください。



そうしましたら、「追加のボードマネージャのURL」というところに、以下のURLを追加してください。

https://dl.espressif.com/dl/package_esp32_index.json


できましたら、「OK」で閉じます。


次に、「ツール」⇒「ボード」⇒「ボードマネージャ...」をクリックします。




「ESP32」と検索して出てきたものを、インストールします。



これでプラグインのインストールは完了です。


ではここで、ボードに、「ESP32 Dev Module」を選択しましょう。



3.USBドライバのインストール

Arduino IDEでESP32の開発環境ができましたが、このままでは、PCがESP32-DevKitC wroom-32開発ボードを認識してくれない可能性があります。


きちんと認識されていないと、開発ボードとパソコンをUSBでつないでも、「シリアルポート」で選択できません。


そんな場合は、こちらのドライバをインストールしてみてください。

https://jp.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

自分のOSにあったものを使用してください。


これで開発環境は一通りそろいました。


簡単なWi-Fiプログラム(サンプルの改変)を動かしてみる



準備もできましたし、実際に、Wi-Fi経由でブラウザからLEDを操作するプログラムを動か してみましょう。

サンプルプログラムをやや改変しています。


もとにしたサンプルプログラムは、「ファイル」>「スケッチ例」>「WiFi」> 「SimpleWiFiServer」です。

ssid及びpasswordは、各自、自宅のWiFiルーターのものに書き換えてください。

#include <WiFi.h>

const char* ssid     = "自宅のWiFiルーターのSSID";
const char* password = "自宅のWiFiルーターのパスワード";

const char html[] = "<!DOCTYPE html><html lang='ja'><head><meta charset='UTF-8'>\
<meta name='viewport' content='width=device-width,initial-scale=1'>\
<style>input{margin:8px;width:240px;height:80px;}</style>\
<title>LEDWiFiSwitch</title></head>\
<body><p style='font-size:16px;'>LEDWiFiSwitch</p>\
<form method='get'>\
<input type='submit' name='on' value='ON'/><br>\
<input type='submit' name='off' value='OFF'/>\
</form></body></html>";

WiFiServer server(80);


void setup()
{
    Serial.begin(115200);
    pinMode(5, OUTPUT);      // set the LED pin mode

    delay(10);

    // We start by connecting to a WiFi network

    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi connected.");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    
    server.begin();

}

int value = 0;

void loop(){
 WiFiClient client = server.available();   // listen for incoming clients

  if (client) {                             // if you get a client,
    Serial.println("New Client.");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        if (c == '\n') {                    // if the byte is a newline character

          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // the content of the HTTP response follows the header:
            client.print(html);

            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          } else {    // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }

        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith("GET /?on")) {
     digitalWrite(5, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /?off")) {
     digitalWrite(5, LOW);                // GET /L turns the LED off
        }
      }
    }
    // close the connection:
    client.stop();
    Serial.println("Client Disconnected.");
  }
}

こんな感じです。


そうしましたら5番ピンにLEDのプラス側、300Ωくらいの抵抗をかましてGNDに接続します。


接続出来たら、プログラムを書き込んでみましょう。



書き込みが終了すると、シリアルモニタにESP32のipアドレスが表示されますので、同じWiFi下のデバイスで、そのアドレスにアクセスしてみて 下さい。

ボタンが2つ表示されていると思います。


このボタンで、LEDのON/OFFが制御できるわけです。


簡単でしょでしょ。


プログラムや回路を工夫すれば、様々なことに応用できます。



みなさんも、家具のIoT化などに挑戦してみてはいかがでしょうか。



以上です。
では、さようなら。
またお会いしましょう。


2019年4月9日火曜日

[電子工作]金属探知キット(AKIT-400B)を組み立ててみた!!~aitendoの電子工作キット~

どうも、こんにちは。


ついに、電子工作の春ですねぇ。


皆さん、電子工作してますか?


僕は最近してなかったです。
ですので半田付けも結構下手になってました。
(もともと下手でしたけれども)


電子工作のいいところっていうのは、自分で何かを作る楽しみを手軽に手軽に味わえるところだと思うんですよ。


ですから、電子工作初心者や、僕みたいにしばらく半田こてを握っていない人などは特に簡単なキットを作ってみることをお勧めします。


できれば、作った後に少し遊べるようなものだと、作り甲斐があって楽しいと思います。



で、今回選んだ電子工作キットはこちらになります。

金属探知キット [AKIT-400B]


金属探知機のキットです。


金属探知機というのはあれですね。
あの、飛行機に乗るときに使用されるやつです。

「金属に反応して音が鳴る」ということを実現できます。

595円でした。
お安いこと。

秋葉原に行けば、aitendoという店がありますので、そちらで購入できます。

もし秋葉原に行けなくても、このaitendoの通販サイトから購入可能なようですね。

金属探知キット [AKIT-400B]

このaitendoというサイト・店には、他にもいろいろな面白い電子工作キットが置いてあり ますので、興味があれば、ぜひ、探してみてください。


では、作っていこうと思います。


開封・部品チェック


開封すると、こんな感じです。


このキットのサイトを見ると、内蔵部品はすべてでこのようになります。


  • 1/4W抵抗(R2):22KΩ〜47KΩ(x1)
  • 1/4W抵抗(R1):220KΩ(x1)
  • 半固定抵抗(W):100Ω(x1)
  • セラミックコンデンサ(C2、C3):222(x2)
  • セラミックコンデンサ(C1、C4):104(x2)
  • 電解コンデンサ(C6):100uF(x1)
  • 5MMLED:(x1)
  • トランジスタ(Q3):S9012(x1)
  • トランジスタ(Q2):S9015(x1)
  • トランジスタ(Q1):S9018(x1)
  • ブザー:(x1)
  • 電池ボックス:T3-2(x1)
  • 専用基板(x1)


使用する部品数がとても少ないので、すぐに完成すると思います。


ちなみに、僕が開封したキットの中には、これらの部品の他に100kΩの抵抗が含まれていました。
使用しないはずなんですけどね。
なんかのミスですかね。
よくわかりませんでした。


組み立て

では実際に組み立ててみます。

aitendoの商品ページに、回路図が載っております。
参考にしたい方はどうぞ、ご覧ください。


抵抗の取り付け

まずは、背の低い部品から半田付けしてきましょう。

今回は抵抗器ですね。
2つあります。


簡単ですね。


セラミックコンデンサ・半固定抵抗の取り付け

セラミックコンデンサと半固定抵抗を半田付けしました。


セラミックコンデンサは2種類ありますが、まずは、背の低いほうです。
もう1種類は後で付けます。


トランジスタの取り付け

続きまして、トランジスタの半田付けを行います。


足の向きに気を付けてください。
プリント基板のイラストに合わせれば大丈夫です。


セラミックコンデンサの取り付け

セラミックコンデンサの背の高いほうを取り付けます。


だいぶできてきました。


電解コンデンサ・ブザーの取り付け

最後に背の高い部品を取り付けます。

電解コンデンサとブザーです。


この2つには極性があるので、プリント基板の印刷をよく見て、半田付けしてください。


電解コンデンサは足の短いほう(白い帯のある方)が、マイナスですね。


電池ボックスの取り付け

電子部品の半田付けが終わったからと言って、電池ボックスの存在を忘れないでください。


電池がつながらないと、駆動しませんので。


LEDの取り付け?

この金属探知機ですが、金属に反応すると、音と光で教えてくれる仕様のようで、ブザーの他に LEDが付属しています。


しかし、このLEDを付ける場所がよくわからない(;・∀・)


ということで、僕はLEDはつけませんでした。
(LEDをつけなくても、音は出るので金属探知機としては使えます)


どこにLEDを付けるのかわかる方がいれば、教えてください。
(僕の予想では、ブザーと並列につなぐのかなと)


まあ、以上でキットは完成ですね。


使ってみる(遊んでみる)


では、実際に動かしてみましょう。


電池ボックスがついて、こんな感じになっています。


特に電源スイッチとかはありませんので、単三電池2本を入れれば動きだします。

こんな感じに。


半固定抵抗を、マイナスドライバで回すことにより、感度を調節できます。
ちょうどいいところに合わせてください。


それで、金属に近づけると、ブザーが鳴ります。

離すと、鳴りやみます。


また、非金属では反応しません。


ちょっと遊べたのはよいのですが、正直、今後の使い道が見つかりません(;・∀・)


何か面白い使い道があれば、ぜひ、教えてください。



以上です。
さようなら。
またお会いしましょう。


2019年4月5日金曜日

iPhone・iPad(iOS)やAndroidとPCとの間でファイルの転送を行うなら「Send Anywhere」が超簡単でおすすめ!!


皆さん、こんにちは。


今回は、スマートフォン・タブレットとパソコン間でのファイルのやり取りについて書いていこうと思います。


「スマホで撮った写真をPCに取り込みたい」、「パソコンからスマホに音楽を入れたい」みたいなことありませんか?

そんな時、スマホとパソコンでファイルの送受信ができれば、便利ですよね。



スマホやタブレットとPCなどで、ファイルのやり取りをする方法はいくつもあります。


代表的なものだと、こんな感じですね。


  • メールで送信・受信する
  • オンラインストレージを使用する
  • 専用アプリを使用する


この他にも、iPhoneやMacといったApple製品に限りますが、AirDropを使用 するやり方などもあります。


Androidの場合、USBケーブルでつなげば、ファイルのやり取りが簡単にできますが、iPhone・iPadだとiTunesが必要になってき たりします。

これは、面倒ですね。


メールは一見簡単そうですが、ファイルサイズの上限があったりなどして、ファイルの転送にはあまり向きません。
(そもそもメールとは、テキストのやり取りが基本ですから)


オンラインストレージ(例えば、Google DriveやOne Drive、iCloud、Dropboxなどです)を使用する方法というのも手軽なようで、デメリットも大きいです。

オンラインストレージは、ファイルの保存場所として使用するのが一般的です。

なのに、ファイルの送受信に使用しようとすると、いちいち送受信したファイルを消さなければ、 オンラインストレージ内が様々なファイルでごちゃごちゃになってしまいます。


これは大変ですね。


ということで、今回は「専用のファイル転送アプリ」を使用してみることにします。


このアプリですが、スマホ側はiPhone(iPad)・Android、パソコン側はWindows・Mac OS・Linuxに対応しているので、OSに応じて区別する必要がありません。


では、説明に入ります。


Send Anywhereについて

今回、ファイル転送に使用するのは、「Send Anywhere」というアプリ・サイトです。

こちらのアプリでは、ネット回線を利用して、ファイルの送受信を行っています。

ですので、PCやスマホはWifiなどにつないでおいてください。


iPhoneやAndroidなどのスマートフォン側には、こちらのアプリをインストールしておいてください。


Send Anywhere (ファイル転送・送信)

Send Anywhere (ファイル転送・送信)

ESTmob Inc.無料posted withアプリーチ


続いてパソコン側ですが、こちらは特にソフトウェアをインストールしておく必要はありません。

下記のリンクにブラウザでアクセスしてください。

https://send-anywhere.com/ja/

ブラウザで使用できるからこそ、OSに依存しないのですね。


これで準備は整いました。
実際にファイル転送を行ってみましょう。


Send Anywhereでファイル転送を行う

「スマホからPCにファイルを送信」、「PCからスマホにファイルの送信」に2パターンに分け て説明していきます。

とは言っても、やり方はほぼ同じです。

いや、まったく同じですね。


今回はテストなので、こちらの画像ファイルをスマホ・パソコン間で転送してみようと思います。



ちなみに、僕はスマホ側にiPad(正確にはタブレットですね)、PC側にはWindowsを 使用しております。


PCからスマホにファイルを送信

まずは、パソコンのブラウザで先ほどのサイトを開きます。


送信というところをクリックして、送信したいファイルを追加します。

複数のファイルがあれば、すべて追加しておきましょう。
まとめて送信できます。


一通りのファイルと選択出来たら、送信をクリックします。



するとこのような暗証番号とQRコードが表示されます。
これをスマホ側で入力すると受信できるわけです。



が、これには期限があります
10分以内に作業を済ませてください。


では実際に受信してみます。

スマホで先ほどのアプリを開いてください。



受信待ちの画面を開いてください。


ここで、先ほどの暗唱番号を入力、もしくは、QRコードを読み取る、のどちらかを行うことでファイルの受信ができます。

せっかくスマートフォンにはカメラが付いているわけですから、QRコードを使用した方が簡単でいいと思います。


しばらくすると、ファイルが完全に受信できます。


これで大丈夫ですね。

次は、今のと逆のことをやっていきます。


スマホからPCにファイルを送信

まずは、スマホでSend Anywhereのアプリを開きます。



送信というところから、転送したいファイルを選択します。

同様に、転送したいファイルをすべて追加した後、送信をクリック。



ここで表示されている暗証番号をパソコンのサイト側に入力して、受信してください。



以上です。
簡単でしょ。



非常に手軽にできますので、スマホ・タブレット・PC間でファイルの転送をしたいと考えていた方は、ぜひお試しください。


では、さようなら。
また次回、お会いしましょう。


人気の記事