1200円でカメラ、wi-fi、Bluetooth付きの激安マイコンで遊んでみた |じょるブログ

じょるブログ

電子工作やプログラミング関連の情報を発信している技術系ブログ

電子工作 esp32-wifi-module

1200円でカメラ、wi-fi、Bluetooth付きの激安マイコンで遊んでみた

投稿日:2019年10月28日 更新日:

   

最近、研究室の3Dプリンターの稼働状況を監視するためにカメラを設置しようと思いたち、激安のカメラを探していました。

最初は以前こちらの記事で紹介したようにWebカメラとラズパイを用いてストリーミングサーバーを立ち上げるといったような方法で行おうと思いましたが、この方法だと約4000円ほどかかってしまうためなかなか手がでませんでした。

しかし、最近1200円のカメラ付きのマイコンがあることを知ったので、今回はこちらを使用してストリーミングサーバーを立ち上げたいと思います。

   

ESP32-CAMについて

ESP32-CAM は Arduino と同じように Arduino IDE で開発を行うことができます。さらに、カメラ、wi-fi、Bluetoothが搭載されているのに価格が約1200円と Arduino よりも圧倒的に高性能で安く手が出しやすい価格となっています。

また、 Arduino IDE だけでなく、Python(MicroPython)も使用できるため、ラズパイでPythonを使って開発している方は、簡単に開発に取りかかれます!

自分も今回esp32は初めて扱いましたが、特につまずくこともなく開発できました。今度、 Python で開発する方法についての記事も書こうと思います。

  

必要なもの・実行環境

  • ESP32-CAM
    (今回のメインである格安マイコン)
  • パソコン(Windows 10, 64bit)

    

    

 

手順

  1. ESP32-CAMのセットアップ
  2. コードの書き込みと動作確認
  3. ストリーミングサーバーの立ち上げ

   

ESP32-CAMのセットアップ

①USBシリアルコンバータのセットアップ

    

USBシリアルコンバータのドライバー( CP2102 )のインストール

   

※購入したシリアルコンバータによってはUSBをパソコンに挿入時に自動でドライバーのインストールが行われるものもあるため、必要な方のみ行ってください。
ちなみに今回自分が購入したものはドライバーインストールが必要でした。

   

まず、こちらのサイトからドライバーファイルをダウンロードします。

使用しているパソコンのOSがWindows 10の場合は↓の図の”Download”をクリックしてください。
(MACやLinuxの場合は下にスクロールしたところにダウンロードボタンがあります。)

  

ドライバーインストールツールのZipファイルがダウンロードされるので、展開してから実行ファイルを実行します。(注意:展開せずに行うとインストールの途中でエラーとなります。)

64bitパソコンの場合は”CP210xVCPInstaller_x64.exe”をクリックして実行してください。

   

実行すると↓のような画面が現れるので次へをクリックします。

    

すると、一瞬でインストールが完了し以下の画面が現れるので完了をクリックします。

     

以上でドライバーインストールは完了です。

   

②Arduino IDE のインストール

次に、開発システムであるArduino IDEをインストールします。

Arduino IDEのダウンロードページにアクセスし、↓の画像のダウンロードリンクをクリックしてください。

    

クリックすると以下のようなページに飛ぶので、”JUST DOWNLOAD”をクリックしダウンロードしてください。

    

ダウンロードが完了したら実行ファイルをクリックするとインストーラーが起動するので、後は画面に従ってインストールを完了させてください。
(特に迷うところはないのでインストールについては省略します。)

  

③Arduino IDE のセットアップ

続いて、Arduino IDE で ESP32 を扱えるようにするための設定をしていきます。

まず、ボードの追加を行います。
「ファイル」 > 「環境設定」 へと進み、 「追加のボードマネージャのURL」の欄に https://dl.espressif.com/dl/package_esp32_index.json と入力し、OKをクリックします。

    

次に、 「ツール」 >「ボード」 > 「ボードマネージャ」 へと進み、検索欄に”ESP32”と入力し、出てきた項目のインストールボタンをクリックします。

    

最後に↓の図のようにボードの設定を行ってください。

  

   

④パソコンと ESP32-CAM の接続

ESP32-cam と USBシリアルコンバータ を下の表のようにつないでください。

ESP32-cam USBシリアルコンバータ
5V 5V
GND GND
UOR TXD
UOT RXD

    

自分が購入した USBシリアルコンバータ は この接続方法ではうまくいきませんでした。Amazonレビューを見てみたところ、どうやら USBシリアルコンバータのTXD と RXD の表記が逆になっているらしく、 TXD を UOT に、 RXD を UOR に接続したところ無事に書き込み出来ました。
正常に動作しない場合は、このように逆に接続するとうまくいくかもしれません。(間違って逆に接続しても壊れることはないようです。)

esp32の裏側
esp32 と USBシリアルコンバータ の接続図

  

ここで一つ注意点ですが、esp32に書き込みを行う際は上の図のように、
IO0 を GND に落とし( IO0 と GND を接続)、書き込みモードにしてから行う必要があります。
逆に、書き込みモードの状態では起動させることができないため、コードを書き込んだ後は、 IO0 と GND との接続を解除してあげる必要があります。

今回はコードの書き込みを行うので、 IO0 を GND に落とした状態で、USBをパソコンにつなぎます。

まず、接続する前に Arduino IDE を開き 「ツール」>「シリアルポート」を確認し、何も選択されていないことを確認します。

    

次に、 esp32結線したUSBシリアルコンバータをパソコンに差し込み、もう一度 「ツール」>「シリアルポート」 を開きます。

すると今度は↓の画像のように何かしらのポートが選択されているはずです。

   

※この時に何も選択されていない場合は、1.1のUSBシリアルコンバータのドライバー( CP2102 )のインストールができていないか、 ESP32-cam と USBシリアルコンバータ の接続が間違っている可能性が高いのでそちらを確認してみてください。

  

   

コードの書き込みと動作確認

コードの書き込み

まずは、動作確認のために “Hello World” を出力するプログラムを書き込み、正常に動作するか確認します。

Arduino IDE のスケッチに以下のコードを書き込み、「➡」ボタンを押してください。

void setup()
{
  Serial.begin(9600); // 通信速度
}


void loop()
{
  Serial.println("Hello, World"); // Hello, Worldを出力
  delay(1000); // 1秒待つ
}

   

書き込みが終了すると、「画面下にボードへの書き込みが完了しました。」と表示されます

もし、

Arduino:1.8.9 (Windows Store 1.8.21.0) (Windows 10), ボード:"ESP32 Wrover Module, Huge APP (3MB No OTA/1MB SPIFFS), QIO, 80MHz, 921600, None"

最大3145728バイトのフラッシュメモリのうち、スケッチが259153バイト(8%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が15428バイト(4%)を使っていて、ローカル変数で312252バイト使うことができます。
esptool.py v2.6
Serial port COM3
Connecting........_____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to ESP32: Invalid head of packet (0x00)
A fatal error occurred: Failed to connect to ESP32: Invalid head of packet (0x00)

というようなエラーが出る場合は、esp32が書き込みモードになっているか ( IO0 と GND が接続されているか) 確認してみてください。

それでもダメな場合は、esp32のリセットボタン(小さい黒い丸いボタン)を押してみてください。

   

プログラム実行

書き込みが終わったら、IO0 と GND との接続を解除し、 USBをパソコンに接続したまま、esp32のリセットボタン(小さい黒い丸いボタン)を押してください。

続いて、出力内容を見るためにシリアルモニタを開きます。

下図のように 「ツール」>「シリアルモニタ」 をクリックし、シリアルモニタを表示させたら、シリアルモニタの画面右下の”******bps”と書かれているところをクリックし“9600”を選択します。

    

すると、シリアルモニタに1秒おきに、”Hello, World”と表示されます。

 

以上が、esp32-camのセットアップからプログラム実行までの流れです。
つまずいたとこもあまりなく、すんなりと出来ました!
もし、わからないところなどございましたら気軽に連絡ください!

   

ESP32をIoTデバイスとして使ってみた

google ads




google ads




-電子工作, esp32-wifi-module

執筆者:


  1. 宮田典武 より:

    自作Switch Botを作りたいと思っているのですが、ESP8266を購入してしまいました。ESP32でないと作れませんか?

    • joruji より:

      コメントありがとうございます。
      ESP8266でも作れないことはないと思いますが、ESP8266とESP32とではArduinoの設定などが異なり使用できるモジュールも変わるため、私の記事に書いてある通りにセットアップしてもうまくいかないと思います。
      例えばWi-Fiを使用する場合、ESP32ではWiFi.hというヘッダーファイルを読み込んで使用しますが、ESP8266ではESP8266WiFi.hを読み込んで使用します。このように読み込むファイルが違うので、Wi-Fi関連のプログラム部分はそのままでは動かない可能性が高いです。
      ですので、ESP8266に対応したArduinoのボード設定を行ったうえで、Wi-Fiのプログラム部分をESP8266用の書き方(ESP8266WiFi.hを使用した書き方)に書き変えれば動作すると思います。

      • 宮田典武 より:

        大変有難いご返信ありがとうございます。
        私が持っているEDP32がUOT.UORが無いのですが、色々検索しても代替案が見つかりません。CLKやDOといった文字はあるのですが何か打開策はありませんでしょうか?
        ど素人で分かりづらい質問で申し訳ございません。

        • joruji より:

          EDP32というのはESP8266のことでしょうか?

          ESP8266 ピンアサイン

          と画像検索するとたくさんピン配置図がでてきますので、そちらを参考にしてみてください。
          ただし、使用しているESP8266が開発ボード(開発しやすいようにパッケージ化されたもの)である場合、
          同じESP8266でも開発ボードの型番によってピンアサインは変わってきますので注意してください。
          また、記載方法によってはUOT、UORという書き方ではなくRXD、TXDと記載されている場合もあります。
          この辺も気にしてみてみてください。
          もし、esp-wroom-02という開発ボードを使用しているようでしたら
          こちらのサイトのピン配置画像を参考にしてみてください。

          また分からないことがありましたら、遠慮なくご質問ください(^^)

  2. 宮田典武 より:

    ご返信ありがとうございます。
    度々すみません。
    ESP32も持っておりまして、ご掲載の通りに進めてみたのですが、
    「今回はコードの書き込みを行うので、 IO0 を GND に落とした状態」がよく分からなくて、テスト書き込みでエラーが出てしまいまして、どうやら「書き込みモード」になっていないので上手く書き込めないようなのですが。

    • joruji より:

      いえいえ、お力になれて嬉しいです!

      IO0 を GND に落とした状態、というのはESP32のIO0ピンをESP32のGNDに接続した状態、という意味です。

      また、こちらの記事はESP32-CAMという開発ボードを使用した際のやり方を記載しております。
      もし、ESP-WROOM-32などのほかのESP32の開発ボードを使用されている場合は、こちらの記事に書いてあるようなENピンの操作が必要になる場合があります。ENピンというのは再起動に似た動作を行うピンであり、IO0をGNDに落とした状態でこの再起動をしてあげる必要がある場合があります。(ESP32-camというこちらの記事の開発ボードでは開発がしやすいように、開発ボードに搭載されているボタンを押すことでこの再起動がかかるようになっているため、ユーザーはこの操作を行わなくて済むようになっています。)
      わかりにくくて申し訳ございません。

      使用している開発ボードがESP-WROOM-32やESP32-CAMではない開発ボードを使用している場合、もしくはESP32本体を使用している場合は、IO0をGNDに接続した状態でESP32の再起動を行ってみてください。

宮田典武 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

Alexa,GoogleHomeでPS4を操作する

         前の記事で人生初の電子工作をしてスマートリモコンを作成し、AlexaやGoogle Assistantでテレビやエアコンなどを操作できるようになったのですが、スマートリモコンを利用し …

ラズパイでスマートロック作ってみた② - 扉の開閉状況をGoogleスプレッドシートに記録

以前作成したスマートロックに、扉の開閉状況をGoogleスプレッドシートに記録する、という機能をつけたので、そのやり方について紹介します。   搭載した機能 スイッチで鍵の開閉外部サービス(Googl …

Alexa, Google HomeをRasberryPiと連携する

この記事ではスマートリモコンを作ってみたで作成した、スマートリモコンをAlexaやGoogle Assistantと連携するために利用した外部サービスについて記載します。     Amazon Ech …

ラズパイでスマートロック作ってみた④ – ICカードでドアを開閉する

大学生の電子工作 ラズパイでスマートロック作ってみたの記事の④つ目の記事です。今回はSuicaや学生証、電子マネー(nanacoとか)等のICカードで鍵を開けられるようにしました。 近くのコンビニに買 …

壊れたイヤホンを半田ごてを使って直してみた – 修理方法解説

   長年使用していたイヤホンが壊れてしまったので、半田ごてを使用して直してみました。この記事ではイヤホンの直し方について解説します。 (イヤホンの構造によって多少直し方は異なる場合があります。) 今 …




関連記事