【ESP-WROOM-02】【電子工作】ATコマンドを使うまで

ESP-WROOM-02を買いまして。

使えるようにセットアップします。

f:id:engetu21:20151108151653j:plain

 

1.そもそもESP-WROOM-02とは?

まぁ、こちらを御覧ください。

親指サイズでWiFi通信を実現し、クライアントとしてはもちろん、Webサーバとして動かすこともできる優れものとのこと。

例えば、人感センサと組み合わせて外に設置し、訪問者があればWiFi通信で部屋の中のサーバを介してツイートできる、とかいろいろできるようになります。

何よりの魅力は1000円以下で購入できるということです。

 

2.準備するもの

  1. ESP-WROOM-02ピッチ変換済みモジュール《フル版》 - スイッチサイエンス

  2. FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) - スイッチサイエンス

  3. ブレッドボード

  4. ジャンパーコード(オスーオス)

  5. 抵抗(10kΩ)

  6. ピンヘッダ
  7. ハンダごて

 

3.接続

※いつもどおりFritzingで作ろうと思ったものの、パーツが見つからず・・・。写真と文章で残します。

 

私が買ったものはスイッチサイエンスさんのESP-WROOM-02ピッチ変換済みモジュール《フル版》 でして、これにはまずピンがついていないため、ピンヘッダのハンダ付けが必要になります。(※初ハンダ付け)

 

ハンダ付けが問題なく終われば、次はブレッドボードによる接続です。

先人たちのものを参考にしたものの、ピン配置には苦戦しました。

それでもポイントとなるものがいくつか有りまして、

  1. ESP-WROOM-02にはファームウェアへの書き込みモード(UART Download Mode)と実行モード(Flash Boot Mode)がある。
  2. モード変更の鍵をにぎるのは「IO15」「IO2」「IO0」の3つ
  3. 2のそれぞれには10kΩの抵抗を挟み、Pull Up、Pull Down接続をさせなければならない
  4. 「EN」もPull Upで接続しなればならない(10kΩの抵抗を挟む)。

ピンアウトについては、ESP-WROOM-02を使ってみる : Eleclog.さんで図で整理されているため、こちらが参考になります。

というわけで、下手くそですが私が設定した配線は以下のとおりです。

なお、USBシリアル変換アダプタは3.3Vでジャンパピンを設定しておきましょう。

f:id:engetu21:20151108160823j:plain

f:id:engetu21:20151108161021j:plain

 

USBシリアル変換アダプタ <-- --> ESP-WROOM-02

---------------------------------------------------------------------------

VCC <-- --> 3.3V

VCC <-- 抵抗(10kΩ) --> EN

GND <--  --> GND

TX <--  --> RXD

RX <--  --> TXD

GND <-- 抵抗(10kΩ) --> IO15

VCC  <-- 抵抗(10kΩ) --> IO2

VCC  <-- 抵抗(10kΩ) --> IO0

※上記のIO0をVCCに繋げれば実行モードGNDに繋げれば書き込みモードになります。写真はVCCに繋げているので実行モードで動きます。

 

なお、Arduinoマイコンとしても使える小型WifiモジュールESP-WROOM-02を使ってみる(準備編) | Device Plus - デバプラで紹介されているように、ジャンパピンで制御できる形のものが販売されていますので、その場合は配線が上記と異なります。

 

USBシリアル変換アダプタは、何もしていないとUSBをWindowsに接続しても認識されないため、ドライバを入れる必要があります。以下を参照。

FTDIのUSBシリアル変換器のドライバのインストール法(1) - しなぷすのハード製作記

 

 3.Arduino IDEの設定

こちらのサイトを参考に。

技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法 - Qiita

 

ボード設定は、「Generic ESP8266 Module」を選択していれば問題ないと思います(たぶん)。

 

4.Arduino IDEのシリアルモニタでATコマンドを実行してみる

シリアルモニタを起動してATコマンドを実行します。

なお、ATコマンドはピン設定が実行モード(Flash Boot Mode)になっていないと実行できません。

f:id:engetu21:20151108170454j:plain

 

AT、AT+GMRとコマンドを打ってみます。

ただし、右下の改行設定とビットレートをそれぞれ「CRおよびLF」、「115200bps」にしないと正常に動きません。

f:id:engetu21:20151108171137j:plain

配線が問題なければ、上記のように応答が返ってきます!

 

5.ファームウェアのアップデート

4の画像を見ればわかりますが、ATバージョンが0.25、SDKバージョンも1.1.1となっていることから、現行バージョンより若干古いです。

ので、アップデートをします。

アップデートの際には書き込みモード(UART Download Mode)に変更し忘れないように。

 

参考サイト:ねむいさんのぶろぐ | ESP-WROOM-02を使ってみる2 -外付けSPIフラッシュの書き換え-

 

以下のサイトから必要なモノを取得してきます。

FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar:http://bbs.espressif.com/viewtopic.php?f=5&t=433

esp_iot_sdk_v1.4.0_15_09_18.zip:http://bbs.espressif.com/viewtopic.php?f=46&t=1124(ファイルは下の方)

 

 FLASH_DOWNLOAD_TOOLSを実行すると以下の様な画面になるため、参考サイトを見ながら設定を行います。で、実行

 

f:id:engetu21:20151108172633j:plain

bin\boot_v1.4(b1).bin:0x0

bin\at\1024+1024\user1.2048.new.5.bin:0x1000

bin\blank.bin:0xFE000

bin\esp_init_data_default.bin:0x3FC000

bin\blank.bin:0x3FE000

 

書き込み中はコンソールで以下のように表示されます。

Erasing flash...
head: 1 ;total: 1
erase size : 4096
Writing at 0x00000800... (0 %)
Leaving...
Erasing flash...
head: 15 ;total: 69
erase size : 221184
Writing at 0x00045000... (95 %)
Leaving...
Erasing flash...
head: 1 ;total: 1
erase size : 4096
Writing at 0x000fec00... (97 %)
Leaving...
Erasing flash...
head: 1 ;total: 1
erase size : 4096
Writing at 0x003fc000... (97 %)
Leaving...
Erasing flash...
head: 1 ;total: 1
erase size : 4096
Writing at 0x003fec00... (98 %)
Leaving...
com closed 

 正常に書き込みが完了すれば「Finish」と表示されます。

 

再度、ATコマンド実行のため、実行モード(Flash Boot Mode)にピンを変更し、シリアルモニタからコマンドを実行します。

f:id:engetu21:20151108173230j:plain

AT、SDKともにバージョンがアップされました!

【Raspberry Pi】【電子工作】PIRモーションセンサ(人感センサ)の確認

PIRモーションセンサ(人感センサ)にて、人を検知してみます。

 

1.必要なもの

  1. ラズベリーパイ(1のB+)
  2. ブレッドボード(直接センサをラズパイに接続するならいらない)
  3. PIRモーションセンサ(https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4KSX
  4. ジャンパーコード各種

2.配線図、回路図

こんな感じ!

f:id:engetu21:20151101155817j:plain

f:id:engetu21:20151101155832j:plain

PIRセンサは3.3Vあれば動作するため、VDDにラズパイの3.3Vに繋げる。センサで検知すればSIGから信号が送信されるため、適当なGPIOに接続しておく。

 

3.ソースコード

 

検知するだけであれば大して難しくは無いです。

問題はどうやって活用するか、ということ。

【Raspberry Pi】【電子工作】Lチカをやってみる

せっかくラズパイを買ったので、電子工作に挑戦します。

参考にするのは「ラズパイマガジン 2015年秋号」に記載されている内容です。

 

1.必要なもの

  1. ブレッドボード
  2. 抵抗:330Ω
  3. LED(こちらを購入→http://akizukidenshi.com/catalog/g/gI-09451/
  4. ジャンパーコード各種

2.接続させる前に

ブレッドボードを介してLEDを光らせます。

光らせるには電流を通してあげないといけないわけで、抑えておかないと行けないポイントは以下のとおり。

  1. LEDの光らせろとかセンサから情報を取得しろ、というのは、ラズパイのGPIOピンを使う必要がある。
  2. LEDを光らせるときは過電流だとLEDが壊れるため、抵抗が必要になる。必要な電流量はオームの法則で求める。

という点でしょうか。

1については、以下の画像の通りで、GPIOと書かれているピンにジャンパーコードを指す必要がある。

http://data.designspark.info/uploads/images/53bc258dc6c0425cb44870b50ab30621

出展:DESIGNSPARK - Raspberry Pi B+のご紹介(http://data.designspark.info/uploads/images/53bc258dc6c0425cb44870b50ab30621)

 

で、LEDを光らせるにはオームの法則を使って電流を計算する必要がある。

そんなわけで、はい、計算サイトです。

オームの法則(電流) - 高精度計算サイト

 

まず、使用するLEDの仕様として、

・連続最大電流:50mA

とのこと。要は50mA以上を流すと壊れるということ。

 

抵抗は330Ωを買っており、かつラズパイのGPIOピンは3.3V動作ピン、そしてLEDのVf(順電圧)の2.1Vを差し引く必要があるため、

(3.3V-2.1V)/330Ω=3.63mAになります。この電流量ならLEDが壊れることはなく、また、程よく光ります。

 

3.接続図と回路図

fritzingというCADアプリがあるため、これを用います。

2項の内容を踏まえると以下のとおりです。

f:id:engetu21:20151018195512j:plain

f:id:engetu21:20151018195551j:plain

 

4.プログラム

1秒間隔で点灯と消灯を繰り返します。

 これでLEDが点きます!

【Raspberry Pi】DLNAサーバの構築

ちゃんと手順で残していなかったため、書きます。

なお、DLNAの対象になるのはラズパイに繋いだ外付けのHDDです。

 外付けHDDの設定はこちら→http://engetu21.hatenablog.com/entry/2015/02/01/205818

1.minidlnaのインストール

Linuxにおいてはminidlnaというソフトを入れれば結構簡単に実現できます。

というわけでインストール

$ sudo apt-get install minidlna

 

2.minidlnaの設定内容変更

minidlnaの設定内容を変更します。

$ sudo vi /etc/minidlna.conf

media_dir=V,/mnt/hdd1/videos
media_dir=A,/mnt/hdd1/music
media_dir=P,/mnt/hdd1/pictures

V,A,Pはそれぞれvideo,audio,picturesを表す。まぁ、ファイル内にコメントで書いてあるんですが。

 

3.設定の反映と再起動

設定と反映をします。2番めのはやる必要ないかもしれないけど、一応。

$ sudo /etc/init.d/minidlna force-reload
[ ok ] Restarting DLNA/UPnP-AV media server: minidlna.


$ sudo /etc/init.d/minidlna restart
[ ok ] Restarting DLNA/UPnP-AV media server: minidlna.

 あとは、AndroidDLNAに対応したアプリでアクセスできるかを確認。

 

4.システム起動時に自動実行

以下のコマンドを実行しておく。

$ sudo update-rc.d minidlna defaults

 

【悲報】3.0TBのHDDが逝く

久しぶりの更新ですが、特にネタは無く。いや、無くはないけどモチベーションがなかなか。

そういったわけでHDDが逝きました。暑さもあったけど、直前で変なことしちゃったからなぁ・・・。今回死んだのはバックアップ側なので問題無いですが。

問題だったのは某バックアップソフトを使ったからだけど、自分で作って運用したほうがいいかもしれない・・・。

【Raspberry Pi】apt-get updateで失敗する

何故かupdateに失敗する。

結論から言えばDNS解決ができていなかっただけなんですが。

$ sudo apt-get update

エラー http://mirrordirector.raspbian.org wheezy Release.gpg
  'mirrordirector.raspbian.org' を解決できませんでした

(略)

W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視され るか、古いものが代わりに使われます。

 

で、resolv.confを見ると

$ view /etc/resolv.conf

nameserver 8.8.8.8

 確かにOS設定時のDSNサーバを(面倒なので)8.8.8.8にしていた・・・

 

というわけで、上記設定をプロバイダ提供のDNS解決が変更し、リロード。

$ sudo vi /etc/resolv.conf

nameserver xxx.xxx.xxx.xxx

 

$ sudo /etc/init.d/networking reload

[....] Reloading network interfaces configuration...ifup: interface lo already configured

Waiting for br0 to get ready (MAXWAIT is 10 seconds).
done.

 

再度updateで無事実施可能。

 

$ sudo apt-get update
ヒット http://repository.wolfram.com stable Release.gpg

(略)

 

 

 

 

【Android】着信の検知

GitHubを導入してみる。テストも兼ねて投稿。

ネットで公開されているプログラムを元にしてみました。Androidで着信を検知する場合の実現方法は以下のようにすればできるっぽい。

で、これをトリガに別の端末にSMSかメールを飛ばすようにする予定。というか、大体出来たけど、まだまだ公開するレベルにはなっていないので、そのうちには。