ドップラーセンサー用のケースを設計

以前作ったESP32のテスト用の基板以前買った秋月のドップラーセンサを適当に組みあわせてFusion360でケースを設計、出力してみました。

組み合わせた基板はこんな感じでいきあたりばったりです。

でも、基板に合わせてこんな感じのケースを設計しました。

こんな感じで基板を載せます。

蓋をしてネジ止めするとそれっぽくなるのが3Dプリンタのいいところです(笑)。

ネジ穴はM3x6のネジのネジ部を実測して、2.8mmの穴を開けて、入れやすいようにC1で面取りしただけで、いい感じにネジ止めできるようになります。何度も開け閉めするものでなければインサートナットを挿入しなくてもいいので楽ちんです。

ESP32でマイクロ波近接センサをロギング

ESP32はしばらく放置している間にすごく使いやすくなっていたので、調子に乗って、以前買ったESP32 DevKitCOLEDモジュールをつけて、ドップラーセンサーモジュールで壁越しに動体検知するのにチャレンジしてみました。

開発はArduino環境で行いました。無線LANの初期化やNTPでの時刻同期、OLEDの表示に関する部分、Webサーバーに関する部分はT-Cameraのソースをベースに不要な部分を削除して用意しました。

今回使用したセンサはUARTで通信します。ESP32にはUARTが3つあり、1つはPC(Arduino IDE)との通信用となっていますので、残り2つが利用可能です。今回はUART1の送信を16ピン、受信を17ピンに割り当てて使用しました。

で初期化しました。

受け取ったセンサ情報は接近時、離別時、停止時の3つのパターンがありますが、それぞれ毎分0秒を境界とした1分毎、毎時0分を境界とした1時間毎に発生数を計数して Chart.js を用いてグラフ化してみました。

 

Rock64をWiFi-APとしてもセットアップしてみました

hostapdを使って、WiFi-APとしてセットアップしました。

・・・が、なんのことはない、armbian-configの中に hotspot のメニューがあるので、それに従って設定するだけです。SSIDとパスワードはセットアップ後に /etc/hostapd.conf にて設定すれば完了です。
デフォルトでは AP としてのIPアドレスは172.24.1.1、DHCPで振られるIPは172.24.1.0/24のようです。

NanoPi NEO2のUbuntu CoreでWiFi有効化

NanoPi NEO2 の Ubuntu Core で WiFi を有効化したので、その際のメモです。

使用可能なUSBアダプタは

  • RTL8188CUS 802.11n WLAN Adapter
  • RT2070 Wireless Adapter
  • RT2870/RT3070 Wireless Adapter
  • RTL8192CU Wireless Adapter
  • NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]

ということらしいですが、きっと Raspberry Pi で動作可能なものは動くのでしょう^^;

USBコネクタにWiFiアダプタは挿しておきます。

 

1.使用可能なデバイスのリストアップ

という感じで、wlxに続いてMACアドレスという形でデバイスが表示されました。

2.WiFi起動

$ sudo nmcli r wifi on

3.アクセスポイントのスキャン

という感じでグラフィカルに表示されます。

4.アクセスポイントに接続

5.接続されているか確認

という感じで無事に接続。再起動しても大丈夫です。

WiFi+BT付きのRaspberry Pi Zeroが登場

すでに日本語の記事も出回っていますが Raspberry Pi 5周年にあたって、Raspberry Pi Zero の新モデルが登場しました。

名称はRaspberry Pi Zero W。仕様としてはRaspberry Pi Zeroに802.11nとBluetooth 4.0が追加になっています。価格はRaspberry Pi Zeroが$5だったのに対して、Raspberry Pi Zero Wは$10。設計としては Raspberry Pi Zero に Raspberry Pi 3 model B の無線部分を移植(ただしアンテナはチップアンテナから基板パターンによるアンテナに変更)した感じのようです。

Raspberry Pi Zeroはようやく日本でも入手可能になりそうな感じですが、Raspberry Pi Zero Wは早くもSwitch Scienceさんが「3月下旬に1,296円で発売」としています。(まだ技適の問題がクリアになっていないようですが)

Raspberry Pi Zeroは激安でしたので(原価率に無理があったんじゃないかと思うのですが)入手難に悩むことになりました。しかしながら、今回のRaspberry Pi Zero Wは追加部品がそれほど多くない割に$5アップということで原価率的にはおそらく改善しているのではないかと思います。入手しやすくなることを期待したいものです。

加えて、Raspberry Pi Zero W用の公式ケースも登場するようです。Raspberry Piのロゴ入りのトップカバーは40ピンGPIOが引き出せるようになっているものと、カメラモジュールが取り付けられるようになっているもの、何も穴が開いていないものの3種類が付属するようです。

現物の画像などは Hack a Day の記事の写真がわかりやすいと思います。

ESP32でNTP Clientを動かしてみた

一昨日のESP-WROOM-32(ESP32)をArduino IDEで動かしてみた続きです。

Arduino IDEにはWiFi関連のサンプルプログラムがあるので、動かしてみました。

「ファイル」⇒「スケッチ例」⇒「あらゆるボードのスケッチ例」⇒「WiFi」の下にいくつかサンプルが有りますが、こちらはESP32環境ではビルドできませんでした。Espressif社提供のライブラリとArduino IDEに初めから付いているWiFiライブラリでは完全に互換ではないようです。(確か、バージョン情報を取得するようなライブラリでコケてたような気がします)

「ファイル」⇒「スケッチ例」⇒「ESP32 Dev Module用のスケッチ例」⇒「WiFi」の下の「WiFiIPv6」というのを開いてみると、NTPクライアントプログラムのように見えますので、これを動かしてみることにします。
スケッチ例を開いて、冒頭にある

の部分にSSIDとパスワードをセットして名前を付けて保存、シリアルポートを /dev/ttyUSB* に設定した後、シリアルモニタを起動して、次に基板上のタクトスイッチを押しながら、「マイコンボードに書き込む」としてやると、ビルドと書き込みが行われます。タクトスイッチは「Writing at 0x00010000… (5 %) 」という表示が出たところで離してもOK。

書き込みが終わると、ESP-WROOM-32モジュールは勝手にリブートして起動します。

 

シリアルモニタ側には IPv6 でのステーションとしての動作、アクセスポイントとしての動作状況の表示、IPv4のステーションとしての動作状況が表示され、IPv4のIPアドレス取得ができると、その後NTPクライアントが動作している状況が表示されました。

また、同時にアクセスポイントとしても動作しているので、スマートフォンのWiFiアナライザなどのツールでみると「esp32-v6」というSSIDでのアクセスポイント動作が確認できました。

ESP32を動かしてみた

ふと秋月のWebサイトをみていたら、ESP-WROOM-32が発売になっていました。早速、秋月へ行ってゲットしてきました。

で、とにかく動かしてみます。すでに先達もいるようなので、参考にさせてもらいながら、なるべく手抜きして動かします。開発環境はESP-WROOM-02の時と同様にArduinoで動かします。

使用した部品

使用した部品は以下の通りです。

  • ESP-WROOM-32
    まずこれがないと、ですね。
  • FT-232RQ USBシリアル変換キット
    最近のお気に入りのUSBシリアル変換基板です。Linuxでも安定して動作するのでGoodです。
  • NJU7223DL1
    3.3Vのレギュレータです。データシートの回路図だと入出力のコンデンサが小さくて済みそうなので、選びました。
  • 0.1uF 1608 チップコンデンサ✕3
    三端子レギュレータの入出力に各1個、USBシリアルのRTS端子とEN端子の間に1個
  • 22uF 1608 チップコンデンサ✕1
    ESP-WROOM-32の資料では電源入力に10uFが付いているので、手持ちの22uFのチップコンを使用
  • 10kΩ 1608 チップ抵抗✕2
    1個はEN端子のプルアップ、もう1個はIO0端子のプルアップ
  • 0.022uF 1608 チップコンデンサ✕1
    EN端子の入力とGND間に接続
  • 適当なタクトSW✕1
    IO0端子をGNDに落としてダウンロードモードに移行させるのに使います
  • ユニバーサルプリント基板
    これを使いました。最近は軽量化を目指して薄めの基板を使ってます。この基板は両面なのですが、内面がスルーホール処理されていないので表裏の接続ができていない箇所があってハマリました。
  • その他
    適当なピンヘッダ・ピンソケット、ポリウレタン被覆線、スズメッキ線

ハードウェアの組み立て

こちらの回路を参考に手抜きして作りました。

  • GND端子はUSBシリアル基板のGNDに接続
  • 3V3端子は三端子レギュレータの出力端子に接続
  • EN端子は10kΩでプルアップ、GNDとの間に0.022uF、USBシリアル基板のRTS端子との間に0.1uFを接続。この0.1uFによりPC側でRTSを制御するとESP-WROOM-32側にリセットがかかります。
  • IO0端子はプルアップ、および、タクトスイッチを接続して、ボタン押下でGNDに落ちるようにします。ボタンを押しながらArduino IDEで書き込み操作をすることで、書き込みモードへ移行できます。
    (注:IO0のプルアップは不要らしい。タクトスイッチによるIO0のコントロールがうまく行かなかった際につけたが、外してOKかは試していない。ちなみに、タクトスイッチでIO0がコントロールできなかった原因はノンスルーホール基板を使ったので基板の表裏で接続ができてなかったため。)
  • TXD0端子はUSBシリアル基板のRXDへ接続
  • RXD0端子はUSBシリアル基板のTXDへ接続

回路図はこんな感じです。15ピンのGNDは手抜きで接続していませんが、動いています。

 

こんな感じになりました。

ESP-WROOM-32は裏返しに両面テープで基板に貼り付けてあります。基板を作りなおす時も多分無事に剥がせると思います。

無計画に作ったので、裏側は汚いですw。左上のレギュレータ周りがどうしようもないですね。

まずはハードウェアの動作確認

Arduinoで書き込みをする前に、ハードウェアの動作確認をしておきます。
といっても、よくよく結線を確認した後、電源を投入(USBケーブルで接続)するだけです。
電源を投入したら、スマートフォンのWiFiアナライザなどアプリケーションで、「ESP-xxxxxx」というSSIDが見えることを確認しておきます。SSIDが見えればとりあえずESP-WROOM-32はアクセスポイントとして動作しているはずです。(注:Arduino環境の構築ができていれば、Arduinoのシリアルモニタで /dev/ttyUSB* を115200bpsでモニタすればブートローダなどの表示も確認できます)

Arduino開発環境の構築

PCはLinux Mint 18の64bit版です。

まず、arduino IDE をインストールします。その前に、古いバージョンをアンインストール。

arduino.cc から最新版の arduino-IDE をダウンロード。今回ダウンロードしたファイルは arduino-1.8.1-linux64.tar.xz です。

次に、arduino-esp32 をインストール。このページのコマンドをコピペ。

いよいよ起動します。デスクトップ上のArduino IDEのアイコンをダブルクリックして、Arduino IDEを起動。
起動したら、「ツール」→「ボード:xxx」→「ESP32 Dev Module」を選択でESP32モジュールを選択します。

サンプルを動かしてみる

次にサンプルを動かしてみます。シリアルに結果が表示されるものが良いと思うので、WiFiScanを動かしてみます。
「ファイル」→「スケッチ例」→ESP32 Dev Module用のスケッチ例の下の「WiFi」→「WiFiScan」選択すると、サンプルプログラムが表示されます。「ツール」⇒「シリアルポート」⇒「/dev/ttyUSB0(環境によって変わります)」でシリアルポートを選択した後、「ツール」⇒「シリアルモニタ」でシリアルモニタを起動しておきます。

準備ができたら「⇒」ボタンをクリックして、書き込んでみます。「⇒」をクリックする際にはIO0に接続したタクトスイッチを押しながらクリックすることでダウンローダを起動します。「Wrting … 」という表示が出たら、タクトスイッチのボタンを離します。

書き込み完了後はこんな感じ。

書き込みが終わると、シリアルモニタの方に表示が始まります。

 

こんな感じでSSIDのリストが表示されれば成功です。

ESP8266でSmartConfigを試してみた

長らく放置していたESP8266基板ですが、やっと動かしました。前回の記事から数えて約1年(ぉぃ)。回路図の定数に不適切な部分があってブートローダから先に進んでなかったのと、秋月のFT234X搭載の超小型UART変換基板だとなぜかLinux側が固まってしまうという事象に悩まされたためです(汗)。

で、まだ最低限の機能しか試してないのですが、回路図はこんな感じです。回路図の電源周りにいろいろわけのわからないFETが入っていますが、これはソフトウェア制御で電源OFFできるようにするのと、電池使用時に電源電圧を自身で測定できるようにするためです。電池を使えば Amazon Dash Button 相当のことができる予定です。

回路図

UART変換基板は結局秋月のAE-TTL-232Rを使いました。

開発環境はArduino IDE 1.6.12を使っています。昔調べた方法でボードマネージャでESP-8266を使えるようにして、ボードはGeneric ESP8266 Module、FlashメモリサイズはESP-WROOM-02に合わせて1M(64K SPIFFS)を選択しました。

2016-11-05-02-29-33

さらに1年間の進化は素晴らしいもので、smartconfigというWiFi周りの設定をAndroidスマートフォンでやる仕組みが登場していました。ArduinoのコードはGitHubのここから持ってきました。少しこの基板にあわせて修正したのが以下のファイルです。

修正したのは起動時のGPIO12のLEDの点灯と、ステータスのGPIOをGPIO16からGPIO13に変更、初期化が完了したら電源OFFする制御を追加したことです。これをコンパイルしてボードに書き込んでやります。

シリアルモニタで動作を確認しながら、スマートフォンで「ESP8266 SmartConfig」というアプリを動作させてESP8266モジュールに接続させる先のSSID(スマートフォンがつながってるSSIDが勝手に表示されます)と、パスワードを入力してCONFIRMを押してしばらく待つとESP8266側の接続設定がされるという便利なものです。

設定したSSIDとパスワードはフラッシュメモリ内に保存されて、次回は勝手にロードしてくれます。(上記のソースでは、起動後2秒たった瞬間にGPIO0がLレベルだと設定をクリアして再度設定待ちになります)

上記は電源投入〜SmartConfigによる設定〜APへの接続〜シャットダウンまでのシリアルコンソールのログです。楽でいいですね!

ESP8285が登場!?

例によってHack a Dayの記事から。

EspressifからESP8266の後継チップが登場しているようです。その名もESP8285。データシートによると、一言で言えば、ESP8266では外付けだったSPI Flash(8Mbit)が内蔵になっていて、より小さなモジュールが作れる、というところでしょう。

公式かどうかわかりませんが、開発用のボードもすでにあるようです。

Hack a Dayの記事には小さな小さなモジュールの写真が載っています。小さいことだけはわかるのですが、1元硬貨との比較ではサイズがよくわかりません。やっぱり比較は25セント硬貨とじゃないと・・・。
で、1元硬貨のサイズは直径25mmで、500円硬貨は直径26.5mmなので、ほぼ500円硬貨くらいのようです。となると、モジュールのサイズは9mm角くらいでしょうか。アンテナがないので、アンテナ付きだともう少し大きくなるでしょうが。

ESP32のβ版がもうすぐリリース!?

Twitterの情報(Espressifの中の人)によると、EspressifからもうすぐESP8266の次の製品が出るようです。

ざっと書いてあることは、こんな感じ。(意訳です。英語力ないので違ってても責任持てませんw)

我々は過去1年間ESP32と呼んでいる新しい製品の開発に全力を傾けてきた。皆さんのコメントを聞いて、細心の注意を払いながらそれらをリストアップし、最新のチップでは大部分を満足できるようベストを尽くした。皆さんの役に立てるよう、こんな機能をこのチップに搭載した。

  1. より速くなったWiFi。ビデオストリーミングができる144.4MBbps。また、新しいRFアーキテクチャを採用し、アプリケーションの回路がよりシンプルになるようにした。
  2. Bluetooth LE対応。レガシーも(もちろん)サポート。
  3. 160MHzで動作するデュアルコアのパワフルなTensilica L108プロセッサ。
  4. 低消費電力。Deep Sleep中でもADC変換などが可能。
  5. 周辺機能盛りだくさん。DMA付きのインタフェースで、タッチセンサ、ADC、DAC、I2C、UART、SPI、SDIO、I2S、RMII、PWM。申し訳ないがUSBはない。
  6. RAMたくさん。現時点で〜400kB。
  7. セキュリティ。AESとSSLのハードウェアアクセラレータ内蔵。
  8. 簡単になったAPI。

我々は開発者のサポートに全力を尽くすことを約束する。その1つとして我々が求めているのは、どのようにしたらツールチェーンを改善できるか、ということだ。我々はどんな意見でも歓迎する。
βテストはまもなく開始する。開発者向けのアプリケーションボードはこの先2週間以内に発送する予定だ。(ただ)限られた数しかチップがないので我慢して欲しい。合計200枚しか送れない。
最後に1つ、我々は情熱と才能のある開発者を探している。Espressifには興奮するような開発がたくさんある(ハードもソフトも)・・・製品に搭載するしないに関わらず。我々は常に応用分野を広げようとしており、我々に加わってくれる才能(ある人)をもっと必要としている。もし興味があるなら連絡して欲しい。我々は世界中から才能ある人が上海の私達に加わってくれることや、世界のどこからでも貢献してくれることを歓迎する。
我々の製品を気に入ってくれることを期待している。応援してくれる全ての人たちに感謝します。

・・・だそうです。

いや、すごいですね。盛りだくさんです。RMIIがあるので、PHYをつければEthernetも付くということですね。(無線LANコンバータやアクセスポイントを構成できるってことですね)
自分が気になるのは、

  1. 技適の取れたモジュールがいつ出てくるか?
  2. Arduino IDE対応はどうなるのだろうか?
    (やっぱりArduino IDEはお手軽ですからね〜)
  3. UbuntuやDebianでのクロスコンパイル環境構築が容易になるといいな。できれば Debパッケージで提供されたりapt-get/aptitude/synapticでインストールできたりすると嬉しいんだけどなぁ。
  4. ツールチェーンも重要ですが、サンプルプログラムもたくさん用意されるといいな。
  5. 電池でどこまで動くかなぁ?
  6. 高速なデータI/Fは何を使うんだろう?SDIOなのかなぁ?
  7. いくら位なんだろうか?

というところでしょうかねぇ。用途はたくさんありそうです。まさしく、「WiFi Everywhere!」「IP Everywhere!」という感じになりそうです。