ESP8266の冒険(3)は一段落。Raspberry Pi 3に手を出す
ESP8266モジュールのWiFi接続のキャンセルには成功(3/20/2016)
安価なWiFiモジュールであるESP8266で色々遊んできた。その結果だが、こいつはブラウザーなどの重いネットワークの仕事はさすがにちょっと無理なことがわかった。深く解析したわけではないが、デフォルトの状態では画像の表示や中継転送速度は話にならないくらい遅い(前記事参照)。
32ビットのCPUなので期待していたのだが、CPUクロックが80Mhz程度ではやはり力不足のようだ。リモートセンサーの数値データの送信や、リモート機器の制御などに使うのが無難だ。ただこちらとして問題なのは、このなかに、作りたいと思うアプリケーションが見つからないことである。
温度・湿度センサーに今のRTC(リアルタイマークロック)のデータを足してサーバーに送る携帯型の温湿度ロガーあたりが、差し当たっての有力候補なのだけれど、これをすぐ作ってみようという気分にどうもならない。
当研究所のモットーは「実用に役に立つものを作る」ことである。なるべく「作りました、動きました、おわり。」というのは避けるようにしている。目的がないときは強引に目的を作る。これはなぜかというと、目的のない機械(しかけ)は制作努力を何にかけるかの焦点がぼけるため、圧倒的に開発効率が悪い。作った後の達成感にも欠ける。
その意味で、温・湿度ロガーは目的ではある。しかし、無理に目的を作った感じなので、どうしてもその気になれない。とはいえ、折角、新しい世界であるESP8266(というかArduino環境)に慣れてきたのだから、もう少し付き合ってやろうと、これまで気になっていた細かい課題を解決することにした。
それは、立ち上がりのときのUARTモニターのゴミ(字化け)と、バックグラウンドで自動的に動きだすWiFi接続のメッセージである。双方ともUARTを使わない限り何の支障もないし、無視してしまえば良いのだが、UARTを出力画面にしているときは何となく目障りだ。
リセット直後のUART開始メッセージのゴミは、ESP8266のROMモニターが出している。ボーレートが74800bpsという中途半端な値なために字が化ける。調べたところでは、ユーザープログラムで、これを制御することは出来ないようだ。
もうひとつのWiFiが勝手に立ち上がる問題である。これは、Arduino IDE環境におけるプログラム開発特有の問題だと思うが、LED点滅のような簡単なプログラムでも、必ず背後でWiFiが動きだし、WiFiの開始メッセージがUARTに出てくる。
ウェブを探すと、WiFiをステーションモードにすれば、これが止められるという情報が見つかった。早速これを試してみた。しかし、ステーションモードにしても( WiFi.mode(WIFI_STA);)、止めることは出来なかった。
出来ないとなると、余計気になるというのが当研究所の所長の性分である。さらにしつこく、あれこれサイトを探索する。すると、開発ライブラリーキット(SDK Sytem Developpment Kit)に、色々なモードを設定するAPIを見つけた。
ここには必ずWiFiを制御するAPI(関数)があるはずだ。しかし一通り調べたが、見つけることは出来なかった。そもそも、このSDKは良くわからないところがある。実ライブラリーの所在がArduino IDEの中で不明である(バイナリーをどこにリンクする?)。サンプルソースには、このincludeステートメント(#include "user_interface.h")が入っているだけである。これだけでSDKのAPIが動くのか。
半信半疑でテストしてみた。なんと、簡単にSDKバージョンを示す関数が動いた。しかし動かない関数もある(os_printfなどは動かない)。何やら問題としては奥深い、キーワードを頼りに、さまざま資料を探し回るが糸口が見えない。オープンソースという割には、情報がネットで不足している。
良い加減飽きてきて、別のことをやっているうち、偶然、SDKの関数群の中に見つけた。何ということはない、その名もずばり、Wifi_station_disconnect()という関数があるではないか。今までの俺の目は節穴だったのか。
早速、これを持ってきてテストしてみた。ビンゴ!であった。見事にWiFiが止まって、無用な接続メッセージが止まった。久しぶりの達成感に幸せになる(安い娯楽だ。この項4/1/2016)。
RTCは恐ろしく正確だった(3/25/2016)
ESP8266につけたRTC(リアルタイマークロック)のテストを続けている。これまでのところ、このI2CでつないだRTC(DS3231)の精度は極めて高い。3日連続で、1秒(0.5秒以下)行かない。このままでいくと月差は数秒と市販のクオーツ時計並みの正確さになる。
遅ればせながらDS3231のスペックで確かめる。スペックによれば、±2 ppm(0~40℃)ということである。月差を調べてみる。1か月は、24 * 365 * 60 * 60 / 12(秒)なので、2,628,000秒。2ppmとはこの50万分の一で5.256秒となる。実機はこれを上回りそうだ。
当初はESP8266の実用的なアプリケーションとして、このI2CのRTCに同じようなI2Cの温湿度センサーを加え、可搬型の温湿度ロガーを作ることを考えていた。好きなところに放り出しておけば、勝手にデータを記録し、蓄積する。定期的にネットに接続して送信する。
どうせならウェブでグラフを出したい。データの蓄積は、ESP8266のフラッシュで十分か、省電力設計をどうするか、ウェブサイトにあるように何かIOT用の中継サーバーを利用するのか。あれこれ迷う。なかなか仕様が決まらない。これを作ってESP8266をそろそろおしまいにしたいのだが、いつまでも決まらない。
そのうち赤外線のコードを記憶して再生するプロジェクトを見つけた。スマホを入力端末にして、赤外線リモコン(エアコン)を簡単に、ネットを通して遠隔操作が出来る。おお、これなら、温湿度ロガーより実用的だ。寝室のエアコンを居間から制御できる。
仕様の決まらない温湿度ロガーは棚上げにして、このスマホを端末にしたリモコンの遠隔操縦をESP8266の卒業制作にすることにした。実は他のプロジェクトが待っている。最近、秋月でも売り出したRaspberry Pi 3である。
無線(WiFi)ルーターにはまる(3/27/2016)
その前に、別の騒ぎを1つ紹介しておこう。ESP8266を本格的に運用するために、我が家のWiFi環境を整備しようと、手頃な無線ルーターを増設することにした。
これが、めたらやたら設定の難しい無線ルーターにあたったのである。恐らくどのメーカーでも同じと思うので公平を期すため、ここではメーカーの名前は出さない。まともにつなぐのに2日以上かかった。
現在、我が家のメインの無線ルーターは地下室と1Fをつなぐオープンスペースに設置され、1F居間と、地下のPCルームをカバーしている。このままでは、2Fが不感地帯となり、ESP8266を実用的に2Fのエアコンのリモコンにすることができない。
従って、無線ルーターを1Fに上げ(こうすると2Fはカバーする)、地下は中継ルーターにすれば全域がカバーできる。ついでに1Fトイレのような難接続地域も解消できる。
どうせ組み込み機器は最新のプロトコルはサポートしていないので高いものを買う必要はない。量販店で在庫切れになる寸前のルーターを探した。大体最大で600Mbps程度のものを選ぶ。値段も定価の半額以下の¥3000台で手に入る。
設定を難しくしたのは、一般的なルーター設定ではなく、アクセスポイントとして使っている無線ルーターの中継(リピーター)機能の設定だったので、余計難しかったのかもしれない。
始めは、単なる中継機能なので、簡単に設定できると思ったのだが、説明が少なく難航した。設定自体も、いくつもの手法があるのが、そもそもの混乱のもとなのだが、その内容が説明書だけでなく、ネット上の解説でも少しづつ違うのが問題だ。
会社のサイトの情報は豊富なのだが、これがことごとくその解説どおりに動かないのである。説明されている画面が実際の画面と少しづつ違う。類推を利かせながら先に進むが、たいていはどの手順でも途中でエラーになってしまう。
メーカーとしては何とかお手伝いしたいという誠意は感じるのだが(情報は多い)、どうしても先に進めない。特にやろうしていることが通常のルーター機能ではなく、中継(リピーター)機能なので余計混乱する。
Netブック(WiFi機能あり)、メインのPC(WiFi機能なし)、スマホの3台を総動員し、だましだまし工場出荷リセットを10回近く繰り返してやっとのことで成功した。
成功したと言ってもリピート機能は確認が難しい。SSIDが同じになってしまうからだ。正常に動いているように見えるが、新設した中継ルーターの電源を切っても通信速度が変わらなかったり、どうもおかしい。
しかも、設定しようとした2.4Ghz帯(802.11/g)の中継がどうしてもうまく行かず、5GHz(802.11/a)にしかつながらない(リピート機能は単一バンド単位しか効かない)。5Ghzは自宅では速度は早いのだが、感度不足で、問題の地下や1F洗面所などの難接続地帯を解消できない。
最後は少し離れた場所からのスマホでの設定で、やっと2.4GHz帯のリピート機能に成功した。偶然、スマホが2.4GHz帯のSSIDを発見した。何故、スマホでの接続に成功したのはわからない。まあ、動いたのだから、そっとしておこう。
RaspberryPi 3を衝動買い。OSのダウンロードに2時間以上かかる(4/1/2016)
RaspberryPi 3である(以降RasPi3)。このブログを振り返るとRaspberryPiにはまっていたのは、もう3年前のことである。こいつにウェブカメラをつけたときの記事は今でもアクセス上位を占める当ブログの人気ページでもある。
あれからRaspi 2というのが出たが、これは導入せず、IntelEdisonにした。今度のRaspi3は、飛躍的に性能の上がったRaspi2に較べれば、1.5倍の性能比だが、初代からは10倍もあるという。何しろクロック1.2GHzのQuad CPUなのだ。
それに、WiFiやBlueToothも実装済みである。WiFiは技適が心配だが、ウェブ情報によれば、これもクリアし、先ほど秋月電子でも販売を開始したというニュースが飛び込んだ(即、売り切れたそうで、現在も在庫切れ)。
ESP8266の冒険も一段落したので、目的もないのだが急に欲しくなった。どれだけ性能が上がったのが自分の目で確かめたい。売り切れと聞くとなおのこと物欲を刺激する。大所の店は売り切れのようだが、最近は、アマゾンなどの通販でも電子部品を手に入れることができる。
「Raspi3 販売」で検索すると、沢山ヒットした。秋月より少し高いがいくつものショップが売り出している。WiFiの技適が通っているのか一抹の心配はあったが、アマゾンが一番安かった(¥6458)ので、早速ポチッとしてしまった。
数日後アマゾンからRaspi3が早くも届いた。心配していたが、技適マークがちゃんとついた正規品だった。
Raspiのインストールの案内はウェブサイトに山のようにあるが、意外にRaspi3のものは少ない。でもソフト的には2と全く同じだというので、サイトの情報を頼りに、手始めにOS(Raspbian)のイメージのダウンロードを気楽に始めた。しかし、これがえらい時間がかかったのである。
総量は1.5GBだから大したことはないのだが、先方のサーバーが遅い。午前0時ごろから気楽に始めて終われなくなってしまった。次の日は出勤日なので、早く寝ないといけないのだが、こういう時に限って止められない。せまい道で電信柱とすれ違うときに何故か対抗車が来る感じである。
結局、2時間以上かかって、やっとのことでイメージファイルのzipがとれた。これを解凍すると4GB近いイメージファイルが出来る。メインPCで、マイクロSDカードにコピーする。
Raspi3の描画能力は素晴らしい(4/8/2016)
SDカードへの書き込みは、次の日だったが、4G近いサイズのイメージのコピーは結構時間がかかった。といってもダウンロードに較べればあっと言う間に終わる。ソフトの準備はあっけない。これだけである。次はハードだ。
初代のRaspiで使ったHDMIケーブルや、ワイヤレスキーボードをつなぎ、電源は手製のUSB AタイプコネクターとDCジャックの変換基板に秋月の5V 3AのACアダプターをつなぐ。
メインPCのディスプレイを借りてスタートする。立ち上げる。おおお、出た!いやあ、早い早い。ブートメッセージが矢のように流れる。4CPUなのでラズベリーのアイコンが4つでるところがご愛嬌である。 何事もなくデスクトップが立ち上がった。色々な整備を始める。日本語を設定して、立ち上げ直したら、デスクトップが豆腐のような盛大な文字化けで先に進めない。いけない日本語フォントが入っていないではないか。localeを戻そうとするが、どうもうまくいかない。
誰もがやる失敗のようで、ウェブ上には回避策が沢山出ている。いずれも面倒なので、SDカードにイメージファイルを焼き直し、最初からやり直した。これが一番楽だ。raspi-configで初期設定をしたら再起動する前に、必ずapt-getで日本語フォントをインストールする。フォントのインストール方法もウェブサイトにちゃんと出ている。
ブラウザーは特別な軽いもの(Epiphany)が入っているようだ。日本語フォントが少し気に入らないが、ブラウザーも問題なくスムーズに動く。いやあ、初代のRaspiに較べれば雲泥の差だ。そりゃ、CPUの数が4倍、クロックもほぼ倍近くになっている。早いのは当たり前だ。下手をすると今のNetブックより早いかも。
殆どストレスなしに大きな画面(1920X1080)を制御できている。FireFoxもいれてみる(RaspbianではIceWeaselという名になっている)。これはさすがに心持ち遅い感じだ。しかし、これはサブマシンとして十分使える早さだ。音もすんなり出る。進歩の激しさに眩暈がする。
ワイヤレスキーボードでは前回同様、又少し手こずった。電池が完全に抜けていた。そりゃそうだ3年も放置しておけば待機電流だけで抜けるのは当たり前か。頭に来たので、久しぶりの基板工作とばかり、このキーボードにスライドスイッチを取り付けることにした。結果は、こんなもの。あまり褒められる品質ではないが、まあ、工作欲を満たすことはできた。
さて、これで何をするのか。やれやれ、何か、前にもこんなことがあったような。誰かが言っていたが、結局電子工作って、作ることが楽しみなのだろうな。
| 固定リンク
「電子工作」カテゴリの記事
- 生存証明2(2022.10.19)
- 生存証明(2022.01.23)
- パソコン連動テーブルタップの修理を諦めて自作(2021.02.16)
- 半年ぶりのブログ更新に漕ぎつけた(2019.09.19)
- 研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)
「Raspberry」カテゴリの記事
- 脱線が止まらない。RaspiでPythonに熱中(2018.03.12)
- CNCマシン(2) 切削を始めるも、Raspi Zero Wへ思わぬ脱線(2018.02.21)
- RaspberryPi3の電源問題はOSの不具合だった(2017.06.12)
- RaspberryPi 3の電源事情好転せず。ESP32に手を出す(2017.05.19)
- motionの動体検知はRaspi3の電源が安定しない(2017.04.16)
「esp8266」カテゴリの記事
- 半年ぶりのブログ更新に漕ぎつけた(2019.09.19)
- ESP8266のJJY電波時計のスケッチ公開(2018.10.02)
- ESP8266による電波時計リピーターの完成(2018.09.09)
- また脱線。今度は電波時計リピーターでさらに迷走(2018.08.03)
- ESP8266の赤外線リモコンウェブサーバー実装にはまる(2018.06.23)
コメント