So-net無料ブログ作成

ESP32 Simple WiFi Server を試してみた [Arduino]

ESP32なら WiFi の機能を試してみなければということで、ESP32 のライブラリの中になるサンプルプログラムを試してみました。


DSC04856.JPG


場所は "Documents\Arduino\hardware\espressif\esp32\libraries\WiFi\examples にあります。念のため、サンプルプログラムを貼っておきます。自宅の環境にあわせて SSID と Password を変更しておいてください。


/*
 WiFi Web Server LED Blink

 A simple web server that lets you blink an LED via the web.
 This sketch will print the IP address of your WiFi Shield (once connected)
 to the Serial monitor. From there, you can open that address in a web browser
 to turn on and off the LED on pin 5.

 If the IP address of your shield is yourAddress:
 http://yourAddress/H turns the LED on
 http://yourAddress/L turns it off

 This example is written for a network using WPA encryption. For
 WEP or WPA, change the Wifi.begin() call accordingly.

 Circuit:
 * WiFi shield attached
 * LED attached to pin 5

 created for arduino 25 Nov 2012
 by Tom Igoe

ported for sparkfun esp32 
31.01.2017 by Jan Hendrik Berlin
 
 */

#include 

const char* ssid     = "your ssid";
const char* password = "your password";

WiFiServer server(80);

void setup()
{
    Serial.begin(115200);
    pinMode(4, 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("Click here to turn the LED on pin 4 on.
"); client.print("Click here to turn the LED on pin 4 off.
"); // 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 /H")) { digitalWrite(4, HIGH); // GET /H turns the LED on } if (currentLine.endsWith("GET /L")) { digitalWrite(4, LOW); // GET /L turns the LED off } } } // close the connection: client.stop(); Serial.println("Client Disconnected."); } }


LEDはサンプルでは LED は 5番ピンでしたが、私は4番ピンに変更しています。Arduino のシリアルモニタを立ち上げておくと、取得したIPアドレスが分かります。

Connecting to xxxxxxxx
.........
WiFi connected.
IP address: 
192.168.2.118



それでは実際の動きをみてみましょう。




今回はビデオ作成用に新しいツールを導入したので、ちょっと凝って Picture In Picture +音楽を試してみました。なんとこれフリーなんですよね。こちらの記事もそのうち。
(^_^)/~





waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: エレクトロニクス



ESP-WROOM-32 WiFi + Bluetooth 無線モジュール お得な2個セット

ESP-WROOM-32 WiFi + Bluetooth 無線モジュール お得な2個セット

  • 出版社/メーカー: マイクロテクニカ
  • メディア: エレクトロニクス



SparkFun ESP32 Thing Development Workshop (English Edition)

SparkFun ESP32 Thing Development Workshop (English Edition)

  • 出版社/メーカー: PE Press
  • 発売日: 2017/04/09
  • メディア: Kindle版




タグ:WiFi Arduino ESP32
nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

ESP32 でLチカをやってみた! [Arduino]

ESP32をついに動かしてみましたー。とは言ってもLチカだけですけども。環境のセットアップはちょっと想定外のことがありましたが、比較的すんなりいきました。


DSC04446.JPG


最初に ESP32 のGitHubから Arduino の開発環境がまとまったZIPをダウンロードしてきます。

ESP32_ArduinoCore.png
https://github.com/espressif/arduino-esp32


右端にある緑の「Clone or download」ボタンをクリックして「Download ZIP」を選択しダウンロードします。解凍をしたら、Documentディレクトリの Arduino\hardware 以下に "espressif\esp32"というディレクトリを作って、そこにまるっと中身を置きます。


ESP32_Install.png


次に、"Arduino\hardware\espressif/esep32/tools/get.exe" をクリックして起動します。


ESP32_Install2.png


するとDOS窓が開いて、コンパイラをダウンロードしはじめます。


ESP32_Install3.png


処理が終わると、自動的にDOS窓が閉じます。これでセットアップは終わりです。Arduinoを開くと、ESP32 のボード設定が見えていますね。

ESP32_Arduino.png


で、ESP32 をつないで見たのですが、シリアルポートを認識しません。


DSC04856.JPG


少し調べてみたら、このブレイクアウトボードは、SiliconLabs の USB-UART チップを使っている模様。なので、ドライバをダウンロードしてきました。


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


さて、これで準備完了なので、スケッチを書き込んでみました。

void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(2, LOW);
  delay(500);
}


コンパイルは無事済んでで、書き込みをしようとしたところで、なんとエラーが出てしまいました。フラッシュ書き込み用のプログラムがないと怒られてしまいました。

error: "C:\USERS\Documents\Arduino\hardware\epsressif\esp32/tools/gen_esp32part.exe": file does not exist
ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました。



で、いろいろ調べたらノートンさんがプログラムを削除してしまった模様。どうも世界中で、利用者が数百人しかいない実績ないプログラムと認識してしまったようです。ESP32って、まだそんなマイナーなんだっけ???


norton.png


対策を講じてようやく動いた様子がこちらです。





これでようやくスタート地点にたちました。(^_^)/~






waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: エレクトロニクス



ESP-WROOM-32 WiFi + Bluetooth 無線モジュール お得な2個セット

ESP-WROOM-32 WiFi + Bluetooth 無線モジュール お得な2個セット

  • 出版社/メーカー: マイクロテクニカ
  • メディア: エレクトロニクス



SparkFun ESP32 Thing Development Workshop (English Edition)

SparkFun ESP32 Thing Development Workshop (English Edition)

  • 出版社/メーカー: PE Press
  • 発売日: 2017/04/09
  • メディア: Kindle版




タグ:Arduino ESP32
nice!(25)  コメント(2) 
共通テーマ:趣味・カルチャー

ESP-WROOM-32、ESP-WROOM-02、RTL8710を比較してみた(1) [Arduino]

手元にESP-WROOM-32、ESP-WROOM-02、RTL8710が揃ったので、比較をしてみました。


DSC04493-2.jpg


まず外形から比較します。

 縦 横 ピン数 重量 価格
 ESP-WROOM-32  25.5mm  18.0mm  38pin  1.96g  700円 
 ESP-WROOM-02  20.0mm  18.0mm  18pin  1.29g  500円 
 RTL8710  24.0mm  16.0mm  22pin  1.35g  500円 


この表を見ると、外形はESP-WROOM-02がバランスが良さそうです。

裏面を見てみましょう。ピンのピッチがよく分かります。


DSC04494-2.jpg


ピンのピッチを見ると、ピン数が多くて半田しやすいRTL8710も選択肢の中に入ってきますね。ESP-WROOM-02はピン数が少ないのがネックになることが多いので、RTL8710も悪くなさそうです。

そのうち(仕事がひと段落ついたら)、機能面やソフト面でも比較してみたいと思いますー。
(^_^)/~





waves 2個 ESP-WROOM-32 WiFi + Bluetooth 無線モジュール ESP32 技適取得済 国内発送

waves 2個 ESP-WROOM-32 WiFi + Bluetooth 無線モジュール ESP32 技適取得済 国内発送

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: エレクトロニクス



waves ESP8266 WiFiモジュール(技適取得済み) ESP-WROOM-02

waves ESP8266 WiFiモジュール(技適取得済み) ESP-WROOM-02

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: おもちゃ&ホビー







MOSFETでロジックレベル変換を実現する [Arduino]

最近はマイコンの駆動電圧が3.3Vや1.8Vのものが多くなってきて、周辺デバイスとの電圧レベル変換をすることが多くなってきました。

私のようなソフト屋が回路を組むと何も考えずにレベルシフター置いてしまい、レベルシフターだらけの回路になってしまいます。

レベルシフターは便利なんですが、面積食うし、お財布にも優しくないという話をしていたら、会社の同僚の電気屋さんからMOSFETでレベル変換回路を簡単につくれるよ!と教えてもらいました。

その回路がこちら。


LevelShiftbyFET.png


NチャンネルMOSFETとプルアップ用の抵抗2つで実現しています。すばらしい!

メカニズムはこうです。



(1) 初期状態ではMPUのGPIOは”H"、すなわち3.3V。このときにFETの"G"と”S"に電位差はないので、FETはオフ。Deviceとは絶縁状態ですので、DeviceのIOも"H"、すなわち5Vになります。


(2) MPUのGPIOを”L"にすると、FETの"G"と"S"に電位差が発生します。FETはオンになりますので、MPUとDeviceが通電状態になり、MPUのGPIOもDeviceのIOも"L"になります。


(3) 一方、Deviceが”L"になると、MOSFET内蔵のダイオードに”S"から"D"に電流が流れ、FETの"S"が電圧降下します。その結果、"G"と"S"に電位差が生まれ、FETがオンになりMPUとDeviceが通電状態となり両方"L"になります。



よく出来てますねぇ。目からウロコです。とっても勉強になりました。色んな場面で使ってみたいと思います。
(^_^)/~






Beautyforall 20 Pcs 2N7000 N-Channel Transistor Fast Switch MOSFET TO-92 by Beautyforall [並行輸入品]

Beautyforall 20 Pcs 2N7000 N-Channel Transistor Fast Switch MOSFET TO-92 by Beautyforall [並行輸入品]

  • 出版社/メーカー: Beautyforall
  • メディア: おもちゃ&ホビー



Grove - MOSFET

Grove - MOSFET

  • 出版社/メーカー: seeedstudio
  • メディア:







ESP32(ESP-WROOM-32)の環境設定がめんどくさそう [Arduino]

会社の同僚から借りてきた ESP-WROOM-32 ことESP32。仕事が忙しくてなかなか手をつけられませんが、せめて環境くらいは揃えておこうかなと思い、少し調べてみました。


DSC04446.JPG


まだ日本では発売されていないので、あまり記事がないかなと思ったのですが、いつの世にも切り込み隊長はいるものですね。


Arduino IDEでESP32(ESP-WROOM-32)を使用する方法・途中版
http://blogs.yahoo.co.jp/bokunimowakaru/55621949.html


で、環境設定はESP-WROOM-02 のようにURLを入力してボタン一発かと思いきや、、、 


やりたくねー.png


め、面倒くさすぎる。もうちょっと時間が出来てからにしようかなぁ。。。
σ(^_^;





ESPr Developer(ESP-WROOM-02開発ボード)

ESPr Developer(ESP-WROOM-02開発ボード)

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス



ArduinoとESP8266ではじめる IoTプログラミング

ArduinoとESP8266ではじめる IoTプログラミング

  • 出版社/メーカー:
  • 発売日: 2016/04/22
  • メディア: Kindle版



ESP8266で始めるWi-Fi IoTプロジェクト

ESP8266で始めるWi-Fi IoTプロジェクト

  • 出版社/メーカー:
  • 発売日: 2016/08/10
  • メディア: Kindle版




噂のESP3212 (ESP-WROOM-32) を入手! [Arduino]

今日は会社の同僚から嬉しいプレゼントをいただきました!なんと ESP-WROOM-32 をまとめて入手したので、一台評価してみる?と貸してもらっちゃいました!eBay から入手したそうです。


DSC04446.JPG


このブレイクアウトボードはUSB端子もついていて、PCにつなげてすぐ使えるようになっています。WiFiだけでなくBLEも内蔵しているので楽しみです。おいおい評価レポートを上げたいと思います。
(´∀`)ノ





waves ESP8266 WiFiモジュール(技適取得済み) ESP-WROOM-02 キット 赤基盤

waves ESP8266 WiFiモジュール(技適取得済み) ESP-WROOM-02 キット 赤基盤

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: おもちゃ&ホビー



ArduinoとESP8266ではじめる IoTプログラミング

ArduinoとESP8266ではじめる IoTプログラミング

  • 出版社/メーカー:
  • 発売日: 2016/04/22
  • メディア: Kindle版



ESP8266 Weather Station: Getting Started Guide (English Edition)

ESP8266 Weather Station: Getting Started Guide (English Edition)

  • 出版社/メーカー: Daniel Eichhorn
  • 発売日: 2016/09/01
  • メディア: Kindle版




ESP8266(ESP-WROOM-02)でコアレスモーターを直接駆動してみた [Arduino]

ESP-WROOM-02 のPWMでコアレスモーターを直接つないで試しに動かしてみることにしました。


DSC04439.JPG


モータードライバーがないと回らないだろうなぁと思いつつ、下記のようなスケッチを試してみました。


static unsigned int motor = 13;
static unsigned int led   = 12;

void OTA_setup()
{
  analogWriteFreq(2000);
  analogWriteRange(1000);
}

unsigned int duty=0;
bool inc = true;
void OTA_loop()
{
  analogWrite(motor, duty);
  analogWrite(led, duty);
  if (inc) {
    if (duty++ == 1000) inc = false; 
  } else {
    if (duty-- == 0) inc = true;
  }
  delay(1);
}



OTA_setup()、OTA_loop() はなんぞやという方はこちらの記事を参照ください。

さて、意外や意外の結果はこちら。





なんと、GPIO でコアレスモーター動かせちゃいました。

ただモーターが発生させる逆起電力がIOにダメージを与えそうで怖いですし、四つのモーターを動かすドライブ能力はないので、ドローン用回路ではモータードライバーを追加します。

しかし、このモーターの音、近未来的でかっこいい。
・:*:・( ̄∀ ̄ )。・:*:・





ESP-WROOM-02ピッチ変換済みモジュール《フル版》

ESP-WROOM-02ピッチ変換済みモジュール《フル版》

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス






PXYNANOプロペラセット(8枚入)

PXYNANOプロペラセット(8枚入)

  • 出版社/メーカー: G-FORCE(ジーフォース)
  • メディア: おもちゃ&ホビー





ESP8266のPWMを試してみる [Arduino]

今回はモーターコントロールをするためのESP8266のPWM機能を試してみます。


DSC04434.JPG


ESP8266でPWMを使うには、他のArduinoボードと同じように analogWrite を用います。その他に、ESP8266独自のAPIとして、PWMの周波数を設定する analogWriteFreq()、 制御のレンジを決める analogWriteRange() Iが用意されています。


下記のようなスケッチをOTAで書き込んでみました。OTA_setup()、OTA_loop() なんぞやという方は、こちらの記事を参照してください。


static unsigned int led = 13;

void OTA_setup()
{
  Serial.begin(115200);
  analogWriteFreq(2000);
  analogWriteRange(1000);
}

unsigned int duty=0;
bool inc = true;
void OTA_loop()
{
  analogWrite(led, duty);
  if (inc) {
    if (duty++ == 1000) inc = false; 
  } else {
    if (duty-- == 0) inc = true;
  }
  delay(1);
}



実際に動かしてみました。




しかし、下の記事によると、ESP8266のPWMは実はソフトPWMなので多少の誤差がある上に、Duty比も90%までという制約があるようです。


ESP8266 PWM revisited (and reimplemented
https://lurchi.wordpress.com/2016/06/29/esp8266-pwm-revisited-and-reimplemented/


その対策もこちらの記事にあったので試してみたのですが、どうもうまく動かないんだよなぁ。
σ( ̄ε  ̄;)





HiLetgo OTA WeMos D1 CH340 WiFi 開発ボード ESP8266 ESP-12F For Arduino IDE UNO R3

HiLetgo OTA WeMos D1 CH340 WiFi 開発ボード ESP8266 ESP-12F For Arduino IDE UNO R3

  • 出版社/メーカー: HiLetgo
  • メディア: エレクトロニクス






ArduinoとESP8266ではじめる IoTプログラミング

ArduinoとESP8266ではじめる IoTプログラミング

  • 出版社/メーカー:
  • 発売日: 2016/04/22
  • メディア: Kindle版




今更ながら ESP8266 (ESP-WROOM-02) のOTAを試す [Arduino]

世の中はESP8266からESP3212へ移行しつつありますが、今更ながらESP8266のOTAを試してみました。


DSC04428.JPG


ドローンのマイコンにESP-WROOM-02を考えているのですが、ソフトウェアアップデートをOTAで出来れば便利かなと思った次第です。

OTAを行うには、OTA用のスケッチを書き込む必要があります。「スケッチの例」から「BasicOTA」を選択します。

BasicOTA.png

BasicOTAの"ssid" と"password" を変更します。


BasicOTA2.png


BasicOTAをESP-WROOM-02へ書き込み、ブートモードで起動します。ここで、コンソールにIPアドレスが出てくれば準備完了です。


BasicOTAConsole.png


ここで、一度 Arduino IDE を閉じて再起動します。(←ここ重要)

すると、メニューのシリアルポートにネットワークポートが追加されています。

BasicOTAPort.png


このポートで、ソフトをアップデートをしますが、OTAをするソフトウェアは常にBasicOTAのルーチンが必要になります。省いてしまうと、一度OTAをしたら二度目からOTAが出来なくなります。(ここも重要)

BasicOTAの中に処理を追加するのは見通しが悪いので、BasicOTAにAPIを追加します。追加するのは、OTA_setup()、OTA_loop() の二つです。

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "your ssid";
const char* password = "your password";

void setup() {
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 8266
  // ArduinoOTA.setPort(8266);

  // Hostname defaults to esp8266-[ChipID]
  // ArduinoOTA.setHostname("myesp8266");

  // No authentication by default
  // ArduinoOTA.setPassword((const char *)"123");

  ArduinoOTA.onStart([]() {
    Serial.println("Start");
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nEnd");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
    else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
    else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
    else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
    else if (error == OTA_END_ERROR) Serial.println("End Failed");
  });
  ArduinoOTA.begin();
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  OTA_setup(); // ←追加
}

void loop() {
  ArduinoOTA.handle();
  OTA_loop(); // ←追加
}


新規にタブ「MainOTA」を追加し、処理を記述します。試しにボードに書き込んでみました。


BasicOTANewTab.png


WiFiで動作していることを確認するためにバッテリーで駆動してみます。


DSC04434.JPG


動画でアップロードの様子を映してみました。最初は BasicOTA の状態なのでLED点灯はありません。LEDを1秒間隔で点灯するソフトをOTAし、その後、0.5秒間隔の点灯のソフトに変更してみました。





これは便利ですね。どんどん活用していきたいと思います!
(^_^)/~





HiLetgo OTA WeMos D1 CH340 WiFi 開発ボード ESP8266 ESP-12F For Arduino IDE UNO R3

HiLetgo OTA WeMos D1 CH340 WiFi 開発ボード ESP8266 ESP-12F For Arduino IDE UNO R3

  • 出版社/メーカー: HiLetgo
  • メディア: エレクトロニクス



ESPr Developer(ESP-WROOM-02開発ボード)

ESPr Developer(ESP-WROOM-02開発ボード)

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス



ESP8266ではじめるIoTプログラミング

ESP8266ではじめるIoTプログラミング

  • 出版社/メーカー:
  • 発売日: 2016/06/05
  • メディア: Kindle版




0.5インチのOLEDディスプレイって売ってるんだ… [Arduino]

ここ数日、咳こみながらも会社に行き、早めに帰って10時間以上寝るという生活を続け、ようやく体調が復活してきました。やれやれ・・・。


glico.png


そんな寝こんでいる合間に、マイコンで駆動できる極小ディスプレイが欲しいなと思いネットを漁っていたら、0.5インチのOLEDディスプレイってあるんですねぇ。


0-5-inch-oled-display.jpg
https://www.dfrobot.com/wiki/index.php/0.5_Inch_OLED_Display_SKU:DFR0376#Specification


SPIなのでArduinoにもつながります。これで何か面白いウェアラブルガジェットを考えられないかな・・・。
σ(^_^)?





1.27インチ 16ビット色のOLEDディスプレイ(microSDスロット付き)

1.27インチ 16ビット色のOLEDディスプレイ(microSDスロット付き)

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス






Gikfun 0.91

Gikfun 0.91" 128x32 OLED White LCD Display Module IIC I2C for Arduino EK1826

  • 出版社/メーカー: Esooho
  • メディア: エレクトロニクス




タグ:OLED Arduino 0.5inch