読者です 読者をやめる 読者になる 読者になる

takashiskiのブログ

覚書の殴り書き

C91に出ていたという報告

木曜西む03b「メカざざむし」で参加してました。

 

私は「ESP8266のなんか」というタイトルでESP8266でWiFi接続する際のめんどくさい部分をなくすための行為をまとめたコピー本(36ページ)を出しました。ただし後半15ページくらいは付録のソースコードです。あとおまけで怪しいコースター用意してました。おこったぞう完売!

備忘録&後始末を兼ねて「ESP8266のなんか」でやったことをまとめておきます。

「WiFi接続する際のめんどくさい部分」と私が呼称しましたのは「SSIDの設定」です。ESP8266で検索をかけて見つかるコードの大半は、SSID/パスワードをハードコーディングしています。そのためAPが変更される場合は、ソースコードを書き換え、ESP8266にプログラムを書き込み直す必要があります。自宅で常にPCが起動している状態であればさほど手間に感じないかもしれません。しかし、別のAPに接続する必要がある場合(出先や友人宅など)、SSID書き換えるためだけにノートPCとシリアル変換器持ち歩くのは非常に面倒です。

SSID変更問題に関して、ESP8266の機能を確認します。ESP8266にはWiFi子機としてのSTAモードのほかにWiFi親機となるAPモードがあります。APモードにすることで、ほかのWiFiデバイス、例えばスマートフォンなどから接続をすることができるようになります。APモード状態でWEBサーバを立て、ブラウザから操作することでSSIDを書き換えられるようすることで追加の機材がスマートフォンのみでSSIDの変更ができそうです。しかし、WEBサーバから操作にも問題点があります。電源がオフになったときのデータの退避です。通常再度電源がONになるとすべて初期化されてしまいます。再度機能を確認しますと、ESP8266はフラッシュメモリをもっていますので、この問題は解決されます。

やること自体は日本語で数文でかけるのですが、これらを実現するために知らなければならないこと大雑把に分割すると以下のようになります。

  • WiFiに接続する方法
  • WiFiに接続されているかを確認する方法
  • (オプション:SSIDのリストから接続可能なAPを探す方法)
  • WiFIモード(AP/STA)を切り替える方法
  • WEBサーバを立てる方法
  • フラッシュメモリ上のファイルを読み書きする方法
  • ESP8266でPOSTリクエストをする方法
  • deepSleepに入る方法

以上の内容の、単体動作を(たぶんする)サンプルソースコードとその簡単な解説を書きました。

 

まだまだ技術を文書にすることに慣れてなく不手際が多かったので、C92にうかれば、ほかの書きたいことも含め第二段を出すことになると思います。まだ、「ESP8266のなにか」はkindle unlimitedあたりで出すかもしれません。ESP8266に興味がある方はご覧ください。

 

おまけ

コルクコースターに関しては、C90で@sameziさんに委託をした、こはくちゃんずコースターを再度用意する予定でした。しかし、LEDレーザーに故障があったため、急きょCO2レーザーのセットアップを友人の助けを受けながら行いました。そして、@toraneko38さんの書かれた「おこったぞう」とその他非常に怪しいコースターを作成し持ち込みました。LEDレーザーの故障はモーターを支えるアクリル台座の破損ですので、CO2レーザーの調整をして代替パーツを用意する予定です。CO2だと逆にコルクコースターが厳しいことがわかりましたので、次回はちょっと手間かけて作りたいと思います。

 

 

以上です。

 

 

もっと気楽なtwitter連動wifi体重計(wio node)

この記事は以下の記事の内容を、もっと気楽に実現するべく実験した結果を示すものです。


izm-11.hatenablog.com

結果

大成功!

具体的には以下を満たしました。

  • ブレッドボードやユニバーサル基板使って回路組む必要がない
  • 機材調達が容易
  • ソースコード流用できる
  • 技適通ってる(!)

使ったもの

 最低限必要なものは、wio nodeとgroveの赤外線受信機です。
大体1100円くらいと、530円くらいだったと思います。


Wio Node

Wio Node

GROVE - 赤外線受信器

GROVE - 赤外線受信器


 
 また、wio nodeにファーム/プログラムの書き込みを行うためにはUSB-TTL変換器(3.3V)が必要です。持ってない方は適当に買ってください。スイッチサイエンスのものが、5V/3.3V切り替え可能で最安値でしたが、最近秋月から後出しで安いのがでたみたいです。
スイッチサイエンスのものが1500円ちょっと、秋月のやつか1000円くらい。あと野良でいくつかあると思います。安いのは5Vか3.3V固定ですので、購入する前に必ず確認ください。

FTDI USBシリアル変換アダプター Rev.2

FTDI USBシリアル変換アダプター Rev.2

 
  また、groveはPA端子を使ってます。ピッチがブレッドボードより狭いので、ブレッドボード向けのジャンパメスでは配線できませんでした。うまく配線する術を持っていない人は以下のようなものを買うと便利です(私は買った)。

wio nodeにはgroveポートが二つあるのですが、片方を書き込み用に塞いでしまいます。2ポートとも使いたい場合は抜き差しが頻繁になるのであったほうがいいと思います。
何本かセットで、400円-500円くらいで買えると思います。


 

ここまでで大体高く見て約4000円+送料などでしょうか。
ただし、半分は初期コスト(USB-TTL変換3.3V、PA4pin-ジャンパオス)です。

 

前準備

arduino IDEとESP8266の関連ファイルのダウンロードを先に行ってください。結構時間がかかります。

まずarduino IDEをインストールしてください。
公式からダウンロードしてもいいですが、windowsストアにもあがっているようですので、そちらからインストールするのが最も手間がないです。
それ以降の手順は以下のURLを参照ください。

esp_dev_arduino_ide – スイッチサイエンス


wioの準備

以下のURLを参照ください。全部説明していただいています。


blogs.yahoo.co.jpblogs.yahoo.co.jp

簡単な流れは以下。

  • USB-TTL変換器を3.3Vモードにする
  • UART側とUSB-TTL変換器のGND同士、TXをRX、RXをTXとつなぐ
  • FUNCおす->RSTおす->RSTはなす->FUNCはなす、で書き込みモードに切り替える(書き換え終わると実行モードになるので毎回やる)
  • 書き換える

プログラム

基本的に全部流用できます。

UART/I2C0/D0端子を使う場合はIO3、ANALOG/I2C1/D1端子を使う場合はIO5が赤外線受信機からの入力を受けるピンになります。
UART側は書き込みに使いますので、逆側に赤外線受信機を指すのがよいでしょう。
よって、使うピンは5ピンで、記事のソースコードの

#define PIN D2

#define PIN 5

と書き換えればよいです。

マイコンは同じなので、本来これで動くはずなんですが、このままではうまく動きません。

wioでは15ピンをHIGHにする必要があるそうです。なのでsetup関数の先頭に以下を加えます。

pinMode(15,OUTPUT);
digitalWrite(15,HIGH);

これで期待した通りに動くはずです。

ESP8266向けコードであれば、出力ピンと15ピンの処理の二か所の修正を加えるだけですべて流用できます。

補足

wioアプリでもIR recieverは扱えます。
しかし、信号の方式が違うのか長さの問題なのか、信号をうまく受け取れませんでした。
素直にarduino互換なスケッチを書き込むのがよさそうです。

結び

以上です。手を動かしているだけであっという間に動きます。いろいろ試してみてください。

一例としましては、赤外線発信モジュールを追加することで、Wifi経由で操作できるリモコンが作れます。

GROVE - 赤外線発信器

GROVE - 赤外線発信器

逆側に温湿度計モジュールを差すことで、遠隔リモコンに加えて温度が下がったら自動でエアコンつける、なんてこともできるかもしれません。

おまけ

リモコンはESPr IR向けのコードを流用するのが手軽だと思います。
ESP-IR – スイッチサイエンス

ESPr IR 赤外線リモコン

ESPr IR 赤外線リモコン

ESPr IR, 買ってみました。
一個3000円で、書き換えにUSB-TTL変換器が必要です。
利点はIOピンがほぼフルに使えることだと思います(wioはIOピンが共通になっているのでほとんど死んでる)。
拡張しないのであれば送受信機両方あること以外は変わりないです。
何か複雑なことをしたいのであれば、こちらでもよいかもしれません。

ESPr IRで遊ぶ前準備

噂のWifiモジュールを買ったのでどんな感じか見てみました。

実はこの前にほかの基板買って動かなくて泣いたのですがそれはまた後日。

 該当製品は以下。ちょっとやりたいことがあったので赤外線受信機と発信機が乗ったモデルを買いました。3000円くらい。

ESPr IR 赤外線リモコン

ESPr IR 赤外線リモコン

 

 以下のUSBシリアル変換アダプタも併せて買わないと書き込みできないので箸置きにしかなりません。たしか1500円くらい。

ほかのメーカーのやつの値段も見てみましたけど、なんだかんだこれが最安値でした。あと、ピンヘッダの並び順が一緒なのでオスメスジャンパ使わなくてよくて楽。

 

FTDI USBシリアル変換アダプター Rev.2

FTDI USBシリアル変換アダプター Rev.2

 

また、それぞれUSB-USB microのケーブルが必要です。2本用意してください。

あ、あとジャンパピンがないと書き込みできないんですけど、私のESPrIRにはついていませんでした。

書き込みのときにさして、実行時は引き抜く必要があるのでこういうのがあると便利です。初回は見つからなかったので、適当なメスオスのジャンパを用意してブレッドボードにさして導通させてましたが、どう考えても面倒だったので今日買ってきました。

 

オウルテック ジャンパースイッチ大2.54mmタイプ OWL-JPSW02

オウルテック ジャンパースイッチ大2.54mmタイプ OWL-JPSW02

 

 

合計で5000円くらいになっちゃうので結構高いですね...二個目以降は3kだけで済むので、各部屋にエアコンあったり、テレビとか赤外線で操作する機器がいっぱいあれば安く済むかもしれないです(最近2.4GHzリモコン増えてきてるからいまいちかも...)。あ、角度がシビアで反応しにくいエアコン/テレビのリモコンの代替としてはよいかもですね。

 

とりあえず動作見るべく以下の記事の追試を自宅エアコンでやりました。

mag.switch-science.com

 

大した内容でないのであっさり終わると思いきや、「信号の記録」のリポジトリのソースコードが紹介されてる出力を吐いてくれない。

 

github.com

 

68-70行目が問題です。

 

68行目を

Serial.print(dataList[i].sampledTime - dataList[i-1].sampledTime);

69行目を

Serial.print(",");

70行目を削除

 

以上の変更をすることでほぼ適切な出力になります。

最後","が一個余分についてしまいますのでコピペするときに削除してください。

これで、自宅のエアコンのオンオフ信号が拾えました。

 

覚えてたらあとで修正してプルリク投げます。

 

本題はまたそのうち。

転居したらカーテンレールがなかったので色々調べた

最近転勤があって、引っ越しをした。現在住環境整備中(9/1現在)。

この家、カーテンレールがない。曇りガラスの類なのでまぁよいかな、と思っていたのだけど、木枠だからなのか隙間があるからなのか、湿度も熱もやばい。

とりあえずカーテンを付けて空気層作ればまだましかな、と試行錯誤してる。

 

うちの窓枠の大きさは大体2.7m x 1.3mなので規格外。大体は1m x 1.35mとか1m x 1.7mとか。

まずカーテンレール、意外と高い。静穏など求めると5kくらい?できればカーテンこみで5kくらいで抑えたかったので色々調べた。

 

どうやらプラ製のレールがあるようで、それが非常に安い。以下のを購入した。二本以上購入する場合は楽天などから買ったほうが送料分若干安くなる。

 

 

次にカーテン。

うちの場合は最悪既製品1m x 1.35m x 2枚のものを1.5倍買えば解決。安いカーテンならレースカーテンも一組ついて3kとかそれくらい。

しかしそれらのカーテンはペラい。光がめちゃくちゃ透ける。そんなんで空気も遮れる気がしない。

ということで遮光性が高いものを探した。

 

ニトリいってみた。どうやら遮光性!=遮熱性らしい。

ついでに防音カーテンというのもあるらしい。

とりあえず適当にぐぐったらアウトレットで防音一組3kがあったのでそれを4組購入。これで南向き窓2組+西向き窓一組分。あとは北向き窓一組だけど、これはもうめんどうなのでプチプチでいいかな...というきもち。

 

まだ届いてないけど手配終わったのでとりあえず解決ということにする。

 

 

追記:20160903

天付けできるかは確認してないですけどダブルレールはニトリのほうが安かったです。選択肢も多いし、ニトリ最強なのかしら...