takashiskiのブログ

覚書の殴り書き

他のESP32ボードに手を出した

前回のCO2測定に引き続きESP32を使って部屋の環境測定(のはずだった)。Arduino IDE使ってます。

忙しい人のための要点

  • Arduino IDEでやってます。
  • Wemos D1 R32なる怪しい基板使ってます。
  • UploadSpeedを256,000か115,200にしないと書き込めませんでした。
  • I2CピンはSCL=22, SDA=21でした。
  • UARTは問題なし。

takashiski.hatenablog.com

mBaaSにデータあげるのを先にやろうと思ったのだけど、NiftyCloudMobileBackendのデータを上げる際にHMACの計算が必要で、それがArduino向けはあるけどスタンドアローンなpure Cライブラリがなかったので諦めてしばらくはローカルでやります。

前回前々回と、ESP32にOLEDが載った謎基板を使っていましたが、ArduinoUNO配置に拡張されたものを見つけたので購入してみました。Groveシールドとかそういう類のもの使えればちょっと楽だなーという理由による判断です。

なおググるとこんなURLが…

Index of /images/WeMos-fake/D1-R32

トラブル

書き込めなかった

とりあえず動確用に、setup()でシリアル開いてloop()で一秒に一回適当な文字列を吐き続けるコードを書きました。コンパイルして書き込みます。書き込めないです。 色々確認した結果、UploadSpeedを下げれば何故か書き込めることがわかりました。それも、ただ下げるのではなく、特定の2速度のみ。

  • 115200
  • 256000

230400はダメでした。256000より速いのもダメでした。この二つにした場合のみ書き込めました。よくわからないですけど書き込めて、とりあえず動きました。

I2Cピン出してあるけど何番?

ピン配置が、Arduino UNO R3準拠(?)なので、デジタルピン側にSDAピン、SCLピンが出ています。この2ピンがないと、Arduino UNO用GroveシールドのI2Cコネクタが使えません。以前Seeeduino megaで嵌りました。(Seeduino megaは、アナログピンの横に[VCC,GND,SCL,SDA]のよくある順でI2C用ピンが引き出してあるので、これはこれで便利でした。)

前回のOLED付きボードでもそうでしたが、ボードによって割り当てがまちまちです。 とりあえず動けばいいやなのでテスター当ててみてみます。その結果以下のようになりました。

  • SCLピン=22
  • SDAピン=21

これはESP32 Arduino core最下部のdev boardのpin mapと同じですね。

UART(問題なし)

UART自体では特に問題なかったけど処理を雑に書いてたら配列領域外参照してることに気づかず、CPU haltして悩みました。

まとめ

  • とりあえず当初の目的のGroveシールド(でI2CとUART)を使うということは達成。
  • 端々怪しいけどなんとか使えてるよ。

MH-Z14使ってCO2濃度はかった(UART, ESP32)

CO2濃度測定して表示するとこまでやったので書きます。

f:id:takashiski:20170604164700j:plain

使ったのはMH-Z14Aと、例のOLED付ESP32です。

前の記事の続編的部分も一部あります。 takashiski.hatenablog.com

MH-Z14A

さて、今回使用したMH-Z14Aですが、なんとインターフェースが4つあります。

  1. デジタル出力
  2. アナログ出力
  3. PWM
  4. UART

正直オーバースペック感ありますが、相手方のインターフェースに寄らず使えるのでよいことであります。 ちなみに、インターネット上で使用例が多いMH-Z19はPWMとUARTのみです。 動作電圧は4.5-5.5Vなので、5V出力が必要です。UARTレベルは3.3Vです。 ここらへんの要件はMH-Z19とほとんど変わりません。

今回は面倒ESP32のUARTの使い方を見たかったのでUARTを使います。 思いっきりTXRXピンが存在するので楽勝ですね。 MH-Z14A側は、ピンが実装されておらず自分で実装する必要があります。 全部で19ピン(9ピン+10ピン)ありますが、16-19番の4ピンか、13-15,2番の4ピンだけがUARTに必要なピンです。

4線接続するだけなので非常に簡単です。

実装

悩んだ部分はUART接続くらいです。ArduinoMegaではSerial1とかてきとーな名前で使えましたが、ESP32ではどうやらだめなようです。 調べたところ、自動的に宣言されないようなので明示的に以下のように宣言してあげればよいとわかりました。

HardwareSerial Serial1(0);

0番を使えばいいようです。

これで、あとはSerial1に対して濃度を要求するコマンドを発行して、濃度を受け取ればよいです。 MH-Z14Aのコマンドリストが見つからなかったので、代わりに見つかったMH-Z14のコマンドを採用したところ、今のところそれっぽく動いています。 キャリブレーションはなかなか面倒なようなので(400ppmで一定の環境に20分間置き続けるとか)今回は無視します。 今回は「そろそろ換気したほうがいいんじゃない?」程度の使い方想定なので、十分でしょう。

表示は前回同様squix78のesp8266-oled-ssd1306を使いました。

コード

忘れず以下をインストールしてください。 ライブラリマネージャからも見つかります。

github.com

60秒ごとにCO2濃度を測定してOLEDに表示するだけの、特別なことは一切していないコードです。 3分間プレヒートしてねってことでしたので、setup()の最後で3分待ってます。 loop内のCO2値の読み取りの処理がなんか変ですけど気にしないでください(何か意図があって書いた気がしたけど忘れた)

CO2 measurement module MH-Z14A for ESP32 arduino c …

その他

TXRXに接続したままだと、プログラムの書き込みに失敗しますので書き込むときは抜いてください。

組み立てや検証のために、手元で動作させると思いますが、人間の呼気のCO2濃度は非常に高いので、直接息を当てないようにしましょう。非常に高い値が出やすい傾向にあります。

写真とかコードは準備してるうちにこの記事が闇に葬られそうな感じがしたので、後で載せます。

参考文献

MH-Z14 Intelligent Infrared Gas Module User’s Manual

MH-Z14 CO2 Module

MH-Z14A User’s Manual

MH-Z19 User’s Manual

機材

MH-Z14Aにはピンヘッダが付属していませんでした。 必要に応じてピンヘッダもしくはピンソケットを購入してください。

OLED付きESP32の動確だけした

 変わり種を見つけたので購入してみました。比較的安いし。

 何が一番うれしいかというと、リッチなLチカ的なことができるということです。シリアルコンソール開いてなくても結果を表示できます。

 

今回はArduino IDEを使います。というか今回初めてESP32使います。そういえばdev boardもすぐ買ったのに使ってなかったです。

なので、ESP32 arduino coreいれるとこからやります。

開発環境の準備

以下を参考にやります。

github.com

gitって何?って人は1番から3番までのgit導入~git cloneまで全部すっとばしましょう。

代わりに以下の Clone or downloadからZIPで落として ~/Documents/Arduino/hardware/espressif/の下にフォルダごと移動すればよいです。

github.com

解凍後、フォルダ名がarduino-esp32になっていると思いますので、esp32に変更します。変更しなくても動くには動きますけど、毎度「名前違うけど大丈夫?」って聞かれてめんどくさいので変えましょう。

 

その後、esp32>tool>get.exeを実行してください。

これで準備完了です。Arduino IDEを起動すると、ターゲットボードにESP32が選べるようになっています。今回はwemos lolin32がいいんじゃないかと思います(確か)

 

本題

乗っかっているOLEDはSSD1306とのことなので、これは以前使ったことがあります。なので、とりあえずAdafruitのライブラリ突っ込んでみます。

これは、ライブラリの管理からも追加できます。

github.com

ピンなどが間違ってなければ、Adafruitのロゴのあとなんか派手な演出が描画されるはずです。

動きませんでした。何で動かないんだろうなーと思いつつ1月くらい放置してました。

昨日時間ができたのでライブラリソースコードを読んだところ、I2Cの場合はピンの指定ができない構造になってます。Wire.begin()をするコンストラクタしか用意されてません。

ESP32のフォーラムとかドキュメント読んだところ、I2Cバスは複数あるよ!とかいろいろ書かれていました。片方がマスタ用、片方がスレーブ用っぽい?

https://espressif.com/sites/default/files/documentation/esp32_chip_pin_list_en.pdf

公式のサンプル見たら25がSDA,26がSCLですね。

github.com

しかし、ググった結果このボードでは5がSDA,4がSCLらしいのです。だめだこりゃ。

と、いうわけでライブラリ書き換えるのも面倒なのでほかのサンプルを探します。ぴったりの物がありました。これも、ライブラリの管理から見つかります。名前が微妙に違います。

github.com

面白そうなので、今回はSSD1306ClockDemoを動かします。

69行目がI2C用のコンストラクタですので、ピン番号を変更します。

ピン番号に接頭辞のDは不要なので以下のようになります。

SSD1306 display(0x3c,5,4); 

 この変更をして別名保存し、コンパイル・書き込みを実行すればアナログ時計・デジタル時計が交互に表示されます。

諸事情により、現在twitterアカウントを非公開設定にしているので動画はありません。

 

その他

なんかこれWEMOSの公式製品じゃないらしくて、いろいろへろへろだそうです。

bootボタン押しっぱなしにしないとだめ、とかいろいろ書かれてますけれど、ロットによるようで、私のボードは特に何もしなくても書き込まれるし、書き込み後リセットされます。

ただし、microUSB端子があまり強くないので、ブレッドボードに刺して力がかからないようにして使うことをおすすめします。(ただしその場合はbootボタンmodeボタンが隠れて押せなくなる)。

私はよそ見しながらケーブルを刺したら端子吹っ飛ばしました。固定用ランドははがれたのでもうダメです。延命はんだづけができたので動確できました。

とりあえず、これに適当に温湿度センサなりぶっ刺して表示するようにすれば暫定温湿度系作れますね。CO2も繋いじゃおうかしら。その辺はまた次回。

 

使用デバイス

 

 

参考サイト

github.com

D-duino-32 and Lolin ESP32 OLED wemosmacsbug.wordpress.com

d.hatena.ne.jp

forum.wemos.cc

ただの日記(スタンプショウ2017)

書くことがなかったので日記書く。

スタンプショウ2017へ行ってきた。切手の展示・販売会であるが、私自身特に切手に興味はなく、ふらっと立ち寄ったのみである。切手に興味が無いのにベルサイユのばらスタンプラリーやって切手をもらった。

非常に面白かったのは、展示全般である。

モチーフを決め、それに関して各々特集を組んで展示するという形だったようで、ご当地ネタから始まり、動物特集、鳥類特集、船舶、航空機、サメ、果てはポケモンまであった。余談だが、ポケモン特集には名鉄パノラマカードが並べられていた。なんかすごいなぁ...という気持ちだった。さらにいうなら展示者はなかなかの高齢と思わしき方であった(すべての展示には展示名の紙が貼り付けられており、その横に顔写真があった)。すべて情報量が非常に多く、興味深いものであった。ふくろう特集やこうもり特集があったのだが、もはや写真資料の代わりに切手を使っているような状態であった。

はっきり言うと、若い人間は皆無であった。ベルサイユのばらに興味がある人を除いて。そのせいか、ブースを回ると強く勧誘を受ける。勧誘というか、楽しさを熱弁される。展示だけでも情報量でパンクしそうだったが、楽しそうにお話を受けることでさらにパンパンになった。消印付き切手の価値の話など非常に面白かった。

 

とは言え、郵便物をオークションなど以外で出すことがないので、切手を買うことはないだろう。

 

と思っていたが、風景印というのがあるらしい。52円以上の未使用切手を紙に貼って、風景印がある局にいくと、押してもらえるそうだ。

長野県だとほとんどないようであるが、都内だとうんざりするほどある。これは面白いかな、と思うので、回ってみようと思う。残念な話としては、平日の17時でほとんどのところが閉まることである。

最近買ってよかったなと思うものを書く

一人暮らし初めて引っ越し四回目。ちょっと書くには遅かったように思うけど、四回目の引っ越し後に買ってよかったな、と思ったものを書く。

USB10ポート充電器

USB充電のデバイスがどんどん増えるので買った。

  1. スマートフォン
  2. スマートウォッチ
  3. 読書端末
  4. ヴェポライザ
  5. スマートメジャー
  6. Intel edison
  7. ESP8266
  8. その他USB充電/駆動機器

…10は多いような気もするけど、何かしら使うようになるから便利だよ、ということです。 この機種を選んだのが、本体を直接コンセントに刺すのではなくて、ACケーブルを本体に刺すタイプだったので、机の上とかにおけるから。マグネットとか両面テープで貼っとくといい感じ。

レーザー測距機

安くても4kくらいとちょっといい値段する、対象物までの距離を測る装置。 家具設置するときに天井までの高さ測ったりするのには必須。

水平器

精密特殊ドライバー53本セット

精密特殊ドライバー53本セット

私の家みたいに傾いてないか確認しよう。突っ張り棒系など、水平に設置を要求されることがあるので持っておいて損はないよ。

マジックバンド

いろんなケーブル束ねるときにあると便利。針金や輪ゴムは論外として、結束タイはケーブル束ねるのにはちょっと…

TRUSCO マジックバンド 結束テープ 黒 20mm×3m 1mm厚 MKH2030BK

TRUSCO マジックバンド 結束テープ 黒 20mm×3m 1mm厚 MKH2030BK

除湿器

東京の夏が辛すぎて買った。 すでに最近雨続きでぐんにゃりしてるのでフル稼働。 型落ち中古で1万くらいのやつでいいから手に入れておこう。 参考までに、晴日が2日しかなかったといわれている2016/9はほとんどの日が湿度80%+だったぞ! 個人的には45-50%くらいが適湿!

プログラマブル電球

家賃が安くて広いからといって、下手したら戦時中にできたような家を選んだら、隙間が多すぎてカーテンがあけれないよ! 寝坊しまくったよ!

で、最近ようやく買いなおして朝自動点灯するようにしたら起きれるようになったよ! 逆に夜は段階づけて暗くするようにしてるから、決まった時間に寝やすくなったよ!(定時で帰れている日のみ) 「朝カーテンあけてないと起きれない」とか「夜、布団に入るタイミングがつかめない」な人は導入してみるがいいよ! 卓上照明にするのもよいね!

Philips Hue(ヒュー) スターターセット v2   929001156101

Philips Hue(ヒュー) スターターセット v2 929001156101

パナソニック(Panasonic) 1号新国民ソケット WH1031

パナソニック(Panasonic) 1号新国民ソケット WH1031

ヤザワ 角型引っ掛けランプソケット SF-3410

ヤザワ 角型引っ掛けランプソケット SF-3410

ドライバセット

大き目サイズだと、ベッセルが最高なので一つ買っておくとよいよ。

ベッセル(VESSEL) ドライバーセット ファミドラ8 TD-800

ベッセル(VESSEL) ドライバーセット ファミドラ8 TD-800

特殊形状/精密系だと以下がよかったよ!

精密特殊ドライバー53本セット

精密特殊ドライバー53本セット

その他

あんまりないよ! 2x4+ペグボードで工具ひっかけるやつ作ったくらいかな。机とか棚に置くとなくしちゃうから見つけやすくなって最高! あと抵抗/コンデンサなどが一通りそろってるやつとかあるといざというときにいいよね! よりよい生活を作るために、次はなるべく正確な温湿度測定する機器作ろうかなって考えているよ!

なんでだんだんテンションおかしくなっていってるんだろうね!?

技術書典2出してきたよ

報告だけ。

以前書いた「ESP8266のSPIFFSにSSIDとパスワードのリストおいて、ESP8266をAPモードで起動しサーバ立ててスマートフォンなどからESP8266の接続先APを追加設定する」本出したよ。友人はSmalltalkとPythonの本出したよ。

 たまたま前日にe-paper届いたので急きょ実装して温湿度はかって表示してたよ。

人が増えるにつれて湿度がガンガンあがったのちに温度も上がって最高につらかったよ!!!

 

 

 

 次回はとりあえずこれ使った温湿度+時刻を表示しつつtwitter投稿するやつの解説本出せたらいいなーって思ってるよ。ただ日本語フォント使えないっぽいから難しいかも...。

 物自体はこれです。情報ください。

4.3inch e-Paper, serial interface electronic paper display

?4.3インチ電子ペーパー<br>

?4.3インチ電子ペーパー

 

 

 

 使った温湿度計は以下の白い奴。秋月でモジュールだけ売ってるし、同じやつがaitendoでも売ってる。1250円だった。

青いやつは安いけど精度低い、というか私持ってるやつが不良品なのか湿度50%超えると常に最大値出力しててやばい。

 

 

 次回は簡易強制通風管用意してもうちょっと正確な温湿度測定するよ!(たぶん)

bookwalker用に電子ペーパーandroid端末を買った

過去に記事も書いている程度にはbookwalkerを好んで利用している。現在まで読書用端末としてFireHD6を利用していた。OSがandroidベースの独自OSなので機能制限があり(予約書籍の自動配信機能などが使えないなど)いまいち不便であったので、読書用android端末が欲しかった。どうせなら、ということで電子ペーパー(e-paper, e-ink)の端末を選択した。koboやkindleではそれぞれのサービスを利用することはできるが、ほかのサービスを利用することはできない/不便ということであったので除外をした。

 

 

takashiski.hatenablog.com

 

 

 

今回購入したのは以下のboox onyx c67ml carta2である。6インチで解像度は300dpiとkindle voyage/oasisと同等のディスプレイを持つ。現在市販されている電子ペーパーディスプレイの中では最高の密度のようである。androidバージョンは4.2.2である。前機種のc67mlも並行して販売されていることがあるので、carta2と書かれていることを確認して購入することをお勧めする。多少安いので買ってしまいそうになるが、あらゆるハードウェアスペックが劣るので選択肢から除外することをおすすめする。

 

 

結論から述べると、これは読書端末であって、電子ペーパーディスプレイのandroid端末ではない。「目が疲れないandroid端末」を期待して買うと、非常にがっかりすることになる。

androidに詳しくないので推測でしかないが、特殊なハードウェアと独自ランチャーで読書端末として特化させているようである。

電子ペーパーandroidとして購入を検討される人は以下のことを期待して選択されるだろう。

  • 疲れにくいandroid端末
  • 電池持ちがいいandroid端末
  • 日光下でも視認性がよいandroid端末

目が疲れにくいことは確かであるが、スクロールなど短時間で再描画を繰り返す動作に電子ペーパーは弱い。電子ペーパー端末としてはかなり頑張っているほうであると思うが、それでもカクツキは残るので液晶のようなスムーズさを期待していると不満が残るだろう。

電池持ちは、kindleなどのように特化しているわけではないことと、再描画を繰り返す&演算をさせると当然ながら電力消費が多くなるので期待しているほど持たないだろう。

日光下での視認性は非常に良い。リーダーとしての扱いであれば問題ないであろう。

 

別途時間でき次第書くが、ハードウェアがかなり特殊であるため、通常のandroid端末として扱うことはかなり難しい。

とりあえず私の要望は十分に満たしてくれる端末だったので今後これで読書量が増えると予想される。