platformioでESP32がwifiに接続まで試してみた!
platformioでESP32がwifiに接続まで試してみた!ESP32を使って、簡単に検証してみたのですが、とても簡単でした!
もうArduinoIDEに戻れないかもしれません!笑
目次
Platformio
platformioはオープンソースのプロジェクトで、IoTの開発環境やそのエコシステムの提供を目指しています。
私も数ヶ月前から聞いていますが、やっと本格的に試すことができました。
今日は、その一部を共有したいと思います。
また、私も使ったばかりで、まだ理解していないところ、把握していないところもたくさんがありますので、もし誤りの箇所があれば、ご指摘いただければ、嬉しいです。
ご連絡はTwitterまでお願いします!
#ESP32 のハローワールド #platformio で、すごく簡単に出来ました!もう #arduino IDEは使わないかも!笑#vscode の拡張だから気軽にインストールできちゃうし
軽くて、慣れているエディタだから処理フローも色々見えていて、#IoT の実験色々加速しそう!(^。^) pic.twitter.com/XRz5wghuJJ— 川島@ソフトウェア、Web、アプリ、IoT作るのが大好き (@kokensha_tech) 2018年9月27日
Platformioのインストール(vscode)
今回は、私がplatformioをvscodeの拡張としてインストールしました。
Atomの拡張としてインストールすることも可能ですが
一部使える機能が多少違って来ますので、詳しくは下記のリンクをご参照ください。
https://platformio.org/platformio-ide
他にもいろんな環境で使えますので、platformioのサイトでご確認ください。
まず、vscodeがインストール済という前提で初めてください。
vscodeはまだインストールしていない方は、こちらからダウンロードして、インストールしてください。
vscodeを開いて、extensionのアイコンをクリックして、検索欄で、platformioを入れます。
候補に、一番上の、PlatformIO IDEを「インストール」してください。
インストール完了したら、一回リロードしてください。
リロード後、platformioの準備が始めますので、しばらくお待ちください。
終わったら、PlatformIOのメイン画面が現れます。
PlatformIO IDE
軽く、見ていきましょう。
Accountタブ
Librariesタブ
様々なセンサーやデバイスのライブラリーが網羅しているので、これは便利ですよね!
Boardsタブ
今回はesp32を使いますが、esp32だけでも様々なボードが作られていますよね。それもここで対応しているボードを見つかるはずです!
検索機能を使えば、すぐ探したいボードを見つかります!
M5StackのFireも対応していますね!
Platformsタブ
ここでいうPlatformはチップ(MCU)のことですね。
Diveicesタブ
接続しているデバイスのリストですね。
今、見えているUSBが接続しているESP32のusbです。
こちらが、見えない場合は、下記の記事を参考にして、esp32のusbドライバーをまずインストールしてください。
あるいはこちらのリンクからドライバーをダウンロードしてインストールしてください。
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
ESP32のHello World
これで、PlatformIO IDEの準備完了です!
早いですよね、ArduinoのIDEのダウンロードだけもこのぐらいの時間がかかる気がします。笑
まず、プロジェクトを作成します。
PlatformIOのホーム画面の 「+ New Project」をクリックします!
次にプロジェクトに必要な情報を入れます。
Name:あなたのプロジェクトの名前(esp32)
Board:検索して、あなたのesp32のボードを選んでください。(私のはDOIT ESP32 DEVKIT v1です。)
Framework:そのままArduino
Location:プロジェクトのソースコードの場所ですね、ご自由にしてしてください。(私はデフォルトのままにします。)
ぜんぶ埋めましたら、Finishボタンをクリックして、新しいプロジェクトを作成してくれます!
プロジェクトのフォルダ構造はこんな感じになります。
main.ccpを開いて編集します!プログラムは下の通りになります。
構成はArduinoのプログラムと同じですね。
#include <Arduino.h> void setup() { Serial.begin(9600); } void loop() { delay(1000); Serial.println("Hello World!"); }
画面の一番左下にあるPlatformioのアイコンをクリックすると、Taskのメニューが出て来ます!
まず、「Build」をします!
次は、Upload and Monitorを押します!
そうすると、Hello World!が出ます!
プログラムがちゃんとコンパイルして、ESP32に書き込んで、実行されて、その結果が出力されています!とても簡単でしょう!
ArduinoIEDの時は、ESP32のライブラリーを自分で配置したりする必要があったと思いますが、Platformioでは、それも自動的にできていて、楽ですね。笑
ESP32からWifiに接続してみよう!
次は、せっかくesp32なので、wifiに接続するのも試してみたいと思います!
今度は、こちらのプログラムを使います。
const char* WIFI_SSID = “wifi-ssid”;
const char* WIFI_PASS = “wifi-password”;
この部分はあなたの環境に合わせて書き直してあげてください
#include <Arduino.h> #include "WiFi.h" // WiFi credentials. const char* WIFI_SSID = "wifi-ssid"; const char* WIFI_PASS = "wifi-password"; void setup() { Serial.begin(9600); // Giving it a little time because the serial monitor doesn't // immediately attach. Want the firmware that's running to // appear on each upload. delay(2000); Serial.println(); Serial.println("Running Firmware."); // Connect to Wifi. Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(WIFI_SSID); // Set WiFi to station mode and disconnect from an AP if it was previously connected WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); WiFi.begin(WIFI_SSID, WIFI_PASS); Serial.println("Connecting..."); while (WiFi.status() != WL_CONNECTED) { // Check to see if connecting failed. // This is due to incorrect credentials if (WiFi.status() == WL_CONNECT_FAILED) { Serial.println("Failed to connect to WIFI. Please verify credentials: "); Serial.println(); Serial.print("SSID: "); Serial.println(WIFI_SSID); Serial.print("Password: "); Serial.println(WIFI_PASS); Serial.println(); } delay(5000); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.println("Hello World, I'm connected to the internets!!"); } void loop() { delay(5000); Serial.println("Hello World"); }
同じように、buildして、Upload and Monitorしましたら、「Hello World, I’m connected to the internets!!」が出れば成功です!
まとめ
まだ、platformioを触れたばかりで、全てを把握している訳ではなく、感想になりますが、ArduinoIDEよりは少し軽い気がします。
また、他のプログラミング作業で、慣れて来たeditorで作業をするのが、少し見通しがよくなった気がします。
これからも少しずつPlatformioIDEを触ってみて、いけているところ、ダメなところ、色々検証してみたいと思います。
また、新たな知見がありましたら、また共有します!
ではまた!
[amazonjs asin=”B0044X2E5S” locale=”JP” title=”【永久保証付き】Arduino Uno”]
[amazonjs asin=”B0718T232Z” locale=”JP” title=”HiLetgo ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード”]
[amazonjs asin=”B074FQS3D1″ locale=”JP” title=”基礎からしっかり学ぶC++の教科書 C++14対応 マイクロソフト関連書”]