Archive for the ‘Micon関連’ Category

ESP8266でHTTPS接続

いつかわからない以前はESP8266で特に気にせずにHTTPS接続が出来ていましたが、最近の2.5.0でリビルトすると…接続できなくなってしまいました。
WiFiClientSecure
を使う方法です。

ドキュメントを見ると最近の普通の接続方法は
client.setFingerprint(fingerprint);
の様な Fingerprint を使用する方法です。
Fingerprint はブラウザで取得する方法が容易ですが、そもそも組み込みで焼き込んでしまうESP8266のプログラムに有効期限がある Fingerprint を埋め込む方法は使用できません。

調べた結果以下の方法で以前の様に Fingerprint を使用しない方法が見つかりました。
インクルードは
#include <WiFiClientSecure.h>
を使用。
クライアントの宣言は
BearSSL::WiFiClientSecure client;
としてBearSSLのクライアントを使用。
そして接続前に
client.setInsecure();
としてX509証明書を確認しないようにします。
これで以前と同じ動作をするはずです。

No Comments »

電池の使用温度

一般的な電池の使用温度をまとめました。
電池はメーカによる差異、製品種類による差異もありますので参考程度の情報です。

マンガン電池 5℃~45℃
アルカリ電池 5℃~45℃
ニッケルカドミウム電池 -20℃~60℃
ニッケル水素電池 -10 ℃~65℃
リチウム一次電池  -40℃~60℃

家庭でも良く使われるマンガン電池、アルカリ電池は低温環境には向きません。

屋外で使用する装置にマンガン電池、アルカリ電池を使うのは適切ではなかった様です。
屋外用途にはリチウム一次電池が最適の様です。

No Comments »

Braveridgeの「Tukeru TH」を入手

Braveridgeの「Tukeru TH」を入手しました。

ホームページにある製品概要には

  • NTTドコモ「Linking」サービス対応製品です。
  • 温度・湿度センサーを搭載しており、アプリへ計測値を送ることができます。
  • クリップ形状となっているため、帽子、衣類、カバンに取り付けることができ、熱中症対策にも利用することが可能です。
  • LED点灯パターンは7つ。指定されたLED点灯によりアプリからの通知をお知らせします。お好みの点灯パターンをアプリで選択可能です。

と記載されています。

こちらの製品、リリースは2016年7月の様ですが、2019年1月時点でも製品仕様は準備中となっていて詳細は公表されていないようです。

でも、なぜこの製品を入手したのかというと、 この製品が、Bluetooth
Low Energy Advertisement Packetに温度と湿度のデータを乗せているとの情報を見たからです。
また、Futomiさんが、「node-linkingというLinking Project (NTTドコモ) によって開発された Linking プロファイルをサポートした BLE デバイスにアクセスするための Node.js モジュール」をGitHubに公開してくれています。
この情報を頼りに、実際の「Tukeru TH」を確認してみました。

結論から書くと、期待通りに、Advertisement Packet に温度と湿度の情報が乗せられていました。
送信の間隔は約800msec、温度と湿度は同時に送出されることなく約10秒毎に切り替えて送信されています。
温度、湿度の測定タイミンなのか約20秒毎に通信間隔が2400msecとなります。

「Tukeru TH」で手間のかかる接続することなく温度測定が可能です。

No Comments »

ESP32をバッテリーで使用2

ESP32をバッテリーで使用したその後です。

結局他の方も経験されている様にESP32が不可逆的に破損した様です。
起動時のブートメッセージが

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371 
ets Jun  8 2016 00:22:57

となり、WiFiが正常に動作しなくなりました。
何がどう正常でなくなっているのかは不明です。
このエラーが表示されますが、その後書き込んだプログラムはなぜか起動します。
動作ログからはI2C接続のセンサからは正常にデータが取れていますがその後のWiFi通信で止まる状態の様です。

壊れるまでですが、
1回目の電池は無くなるまで6ヶ月ほど動作しました。
2回目の電池は2ヶ月ほどで今回の症状になりました。

今回使用していた電池はよくある単3アルカリ乾電池×2本です。
ESP32の場合、CR123Aなどのリチウム電池の方が向いているのかもしれません。

No Comments »

ESP32をバッテリーで使用

ESP32をバッテリーで使用してみました。
ESP32にSHT21というI2C接続の温度湿度センサを接続し、10分に一度WiFi接続しサーバーに値を記録するという使い方です。
開発環境は、Arduinoで行いたかったのですが、省電力化したかったので細かい制御ができるESP-IDFで行いました。
DeepSleepModeは非常に省電力です。
WiFi接続を単3電池で行っても3ヶ月以上(まだ電池切れに至っていないので本当の電池切れは後日判明)持ちます。
テストすればわかりますが電池駆動の場合「Brownout Detector」を有効にしてはいけません。リセットループに入りあっという間(1日程度)で電池が無くなります。電池でもうまくいきそうな機能ですが残念ながら使用出来ませんでした。
ESP32を電池駆動する場合、結線をする必要がありますが内蔵ADCで電源電圧を測ることが出来ます。(vdd33を直接測定出来る様な記載がマニュアルにありますがソフト的に使い方がわからず結線をして測定をしました) 電池電圧がわかると電池交換予測に使用出来ます。

電池でWiFiという使い方は消費電力の観点から難しいと思っていましたが、使い方の頻度が合えば便利に使うことが出来ます。

No Comments »

BMP180とBMP280のI2Cコマンド

BOSCHの温度、湿度センサであるBMP180とBMP280のI2Cコマンドですがお互いに互換性はありません。
センサの置き換えの際はソフトウェアの変更が必要です。
BMP180はBMP085と機能互換性があります。

No Comments »

ESP32を入手

ESP32を入手しました。
ESP8266時代はArduinoで開発をしていました。
ESP32はArduinoでも開発ができますが、本家の開発ツールであるESP-IDFを使うと制限無く開発が行なえます。
Windows環境の場合、ESP-IDFはLinuxのエミュレータをWindows上で動かしその中でESP-IDFを実行することになります。
ほぼブランクのプロジェクトをコンパイルする場合でも圧倒的にArduino環境の方が時間が短いです。
お手軽さはArduino、凝ったものはESP-IDFと使い分けることになりそうです。

No Comments »

ESP8266でタイマー割り込み

ESP8266で使用出来るタイマー割り込みはいくつかあるようですがOS経由のタイマー割り込みを試してみました。
最小のコードは以下の通りです。
注意点はタイマー関数中(このコードではtimerCallback())でシリアルを使用してはいけません。
グローバル変数に痕跡を残し、loop()側でハンドリングする方法を取る必要があります。
WiFiで通信中でもちゃんとタイマー割り込みはかかってくれます。

extern "C" {
#include "user_interface.h"
}

os_timer_t myTimerFunc;

void timerCallback(void *pArg) {
// タイマーで実行
}

void setup() {
os_timer_setfn(&myTimerFunc, timerCallback, NULL);
os_timer_arm(&myTimerFunc, 1000, true); // 1000msec毎実行
}

void loop() {
yield();
}

No Comments »

ESP8266+Arduinoでメール送信

ESP8266+Arduinoでメール送信をするコードを書いたときの覚書です。
メール送信は通常SMTPサーバーに送信を依頼しますが、過去のスパムメール対策の結果SMTP認証(SMTP Authentication/SMTP-AUTH)が必須になりつつあります。
基本的な認証方式として、LOGIN,PLAIN,CRAM-MD5,DIGEST-MD5があるようです。
SMTPサーバーがどの様な認証に対応しているかは、SMTPサーバーに接続すると
250-AUTH PLAIN LOGIN
の様な形で認証対応できる方式を応答してきます。
他の独自認証方式が実装される場合もあるようです。
LOGIN認証はアカウント名、パスワードをBASE64でエンコードして送信します。


C:AUTH LOGIN
S:334 VXNlcm5hbWU6
C:dXNlcm5hbWU=
S:334 UGFzc3dvcmQ6
C:cGFzc3dvcmQ=
S:235 2.0.0 OK Authenticated

PLAIN認証は¥0+アカウント名¥0パスワードをBASE64でエンコードして送信します。


C:AUTH PLAIN
S:334
C:dXNlcm5hbWVwYXNzd29yZA==
S:235 2.0.0 OK Authenticated

PLAIN認証とLOGIN認証は、アカウント名とパスワードを単純にBASE64エンコードした文字列を認証に使用しているため、盗聴されるとアカウント名とパスワードが見られてしまいます。
SMTPサーバー環境に依存しますが、SMTP over TLS/SSL接続で使用することが望ましいです。

エラー処理もせず、英数字だけのメールを送るならば意外と簡単な手順でSMTPサーバー経由でメールを送れます。

No Comments »

MH-Z19 CO2センサ入手

Winsen Electronics Technology製のMH-Z19 CO2センサを入手しました。
MH-Z19
このセンサはNDIR(Non Dispersive InfraRed)方式(非分散型赤外線吸収法)でCO2の濃度を測定します。
精度は±50ppmと相対値は測れそうですが絶対値は測れなさそうな感じです。
電源電圧は3.6V~5.5VDC、インターフェース電圧は3.3Vで、0から0.5%のCO2濃度が測定できます。
マイコンとのインターフェースはUARTとPWMです。2電源電圧があるボードでないと使用出来ません。
通常、外気のCO2濃度は400ppm程度なのでセンサを外気にさらしてこのくらいの値になれば正常動作していると判断出来そうです。
センサに電源を入れるとセンサケースの金属地ではない部分からオレンジ色の光が数秒に一度漏れてきます。このタイミングでCO2濃度を測定をしているのでしょう。

今回はESP8266に接続し記録し続けてみました。
このセンサ固有なのかわかりませんが時々2000ppm超えの値を返してきます。
正しい比較用の測定装置がないので正しいかすらわかりません。

他のセンサも入手して比較してみた方が良い様です。

No Comments »

WP Login