「電子工作」カテゴリーアーカイブ

【IoT】Wi-Fiモジュール ESP8266 を使ってみた

最近、いろんなところで話題になっているWi-Fiモジュール ESP8266。技適も取得していて、しかも数百円で入手可能。ということで、放置しっぱなしの電子工作のリハビリも兼ねてやってみました。

いくつかある記事の中で、機材的に一番ハードルが低そうなこちらを参考にしました。

プログラミング不要でiPhoneからLEDをオン・オフするIoTを作る(ESP8266使用) – stocker.jp

【テスト環境】
・Arduino IDE 1.6.7
・OSX 10.11.2

基本的な方法は、上の記事を参考にしてもらうとして、異なる点や補足をメモしておきます。

1.FTDI USBシリアル変換アダプター は同じものが手に入らなかったので、同じく5V/3.3Vで使用できるこちらを使いました。
FT232HL ハイスピードUSBシリアル変換モジュール

2. FTDIのチップをPCで使うにはドライバが必要だそうで、こちらを参考にOSX用のドライバを入手、インストールしました。
VCPドライバのインストール(mac編) | スイッチサイエンス マガジン

3.使っているUSBシリアル変換モジュールが違うので、USBシリアル変換アダプターと ESP-WROOM-02接続の仕方がちょっと違います。

・(USBシリアル)GND >> (ESP-WROOM-02)GND
・(USBシリアル)VIO >> (ESP-WROOM-02)3V3
・(USBシリアル)AD1 >> (ESP-WROOM-02)TXD
・(USBシリアル)AD0 >> (ESP-WROOM-02)RXD

USBシリアル変換アダプターと ESP-WROOM-02 を繋いだ様子
USBシリアル変換アダプターと ESP-WROOM-02 を繋いだ様子

4.上記2.でFTDIのドライバをインストールした後、上記1.のUSBシリアル変換モジュールを単体でつなぐと、Arduino IDEにシリアルポートが表示されるのだけれど、ESP8266を繋いだ状態でUSBに繋ぐとシリアルポートが表示されませんでした。

原因はよくわからず・・・。とりあえず上記1.のUSBシリアル変換モジュール側の電源部分(VIOとGND)のジャンパーコードを外すとシリアルポートが認識されるので、その状態で認識後にジャンパーコードを差し込んで、ソースコードを書き込むことで動作しました。

※下記ブログにOSX 10.9 の場合は、apple製のFIDIチップ用ドライバがよくないようなことが書かれていますが、OSX 10.11だし・・。
Arduinoトラブルシューティング アップロード編: 構想100年

またYosemite(Mavericks)だと、AppleFTDIドライバを無効にする方法もあるようです。
MacOSX – Yosemite(Mavericks)でFTDIが動かない件 – Qiita

同じ現象が出た方、解決法などあれば教えてください。

【Arduino】デジタル出力の超音波センサ(PWM波形)

しばらく放置していたArduinoですが、久しぶりに再開しようと「Prototyping Lab」を読みながら、いろいろセンサを買ってきて繋いでみています。

超音波センサ(「Prototyping Lab」p116 / 3 距離を測りたい(超音波センサ))を試そうと買ってきたら、参考書のセンサはアナログ出力で、買ってきたのはデジタル出力のみでアナログ出力がない…。ということで、いろいろ試してみたのでメモ。
・手に入れた超音波センサ(秋月で一番安かった)
このセンサのFAQページを見ると、PWM波形出力というのが(パルス幅=距離値)らしいので、FAQページに書かれている通りに接続して、このページの「Mode 3: PWM passive control mode」に書かれているスケッチをアップロード。要はこのスケッチでモジュール側の設定を書き換えて、設定書き換え用のピンを抜くと書き換えた設定で計測が開始される…ということらしい。
Pin 8 RXD (URM V3.2) -> Pin 1 (Arduino)
Pin 9 TXD (URM V3.2) -> Pin 0 (Arduino)
を引っこ抜くと、計測値が表示されるようになります(Arduino IDEでツール>シリアルモニタを表示すると、Serial.print() で出力されたメッセージが表示される)。
そこにLCDで計測距離を表示しようとプログラムを書き換えてみるが、計測自体がうまくいかない。調べた結果、LCDシールドと超音波センサモジュールで使用しているデジタルピン番号がかち合っていることが判明。LCDシールドは接続が固定なので、プログラムに書かれている超音波センサ側のピン番号を下記に変更。もちろん繋ぐピンも変更する。
//センサのデジタルピン番号
int URPWM = 8; // 上のページのPin 3 (Arduino)
int URTRIG = 9; // 上のページのPin 5 (Arduino)
これで超音波センサでの計測と結果のLCDシールド表示が完成。LCDシールド表示は、下記のような関数を作ってloopの中で呼び出した。
void showResult(){
  //LCD:初期化
  lcd.clear();
  
  //LCD:表示
  lcd.setCursor(0,0);
  lcd.print("Range: ");
  lcd.print(Distance);
  lcd.print(" cm");
}
かなり初歩的な話なんだけど、すぐ忘れそうなので備忘録として。
<参考>