google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

0.96インチOLEDのスリープ特性、他

 0.96インチOLEDの話は前の記事でおしまいにしようと思っていたのですが、書き忘れていたことがまだあったのでまとめて記事にしておきます。

1.スリープにする方法と効果
 SSD1306のデーターシートによると、スリープさせるとIccとIddがそれぞれ10μA以下、つまり合計で20μA以下になることになっています。
▼sleep電流の仕様
sleep

 Maxの規格だけ規定されているので、実際にどれくらいの値になるか判りません。また、インターフェイス基板には電源電圧を3.3Vに下げるためのシリーズレギュレーターも入っているので、こちらの電流も加えて考えないといけません。
ということで、sleepさせた時にどれくらいの消費電流になるのか、実測してみました。

▼スリープの実験用プログラム
// 0.96インチOLED(SSD1306)をスリープさせる実験
// 2019/3/15,ラジオペンチ

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32
for (;;); // Don't proceed, loop forever
}
// CPUのプルアップを無効にする(有効にする場合は下記2行を削除)
pinMode(SDA, INPUT); // プルアップを無効化(SDA)
pinMode(SCL, INPUT); // プルアップを無効化(SDA)
display.display(); // OLED表示更新
}

void loop() {
wakeDisplay(); // 表示ON(電源電流:8.6mA)
delay(10000);
sleepDisplay(); // 表示OFF(電源電流:1.08uA/7.66uA
delay(10000);
}

void wakeDisplay() { // OLEDをスリープから復旧
Wire.beginTransmission(0x3C);
Wire.write(0x80);
Wire.write(0xAF); // ONコマンド(SSD1306)
Wire.endTransmission();
}

void sleepDisplay() { // OLEDをスリープさせる(表示消す)
Wire.beginTransmission(0x3C);
Wire.write(0x80);
Wire.write(0xAE); // OFFコマンド(SSD1306)
Wire.endTransmission();
}
 このプログラムを実行すると、Adafluitのロゴを10秒間隔で点滅を繰り返します。

▼動作の様子 (Adafluitのロゴ表示)
Adaflitのロゴ画面

 wireから直接コマンドを送ってON/OFFさせていますが、この方法はネットで見つけたもので、最初に送っている 0x80 (35, 42行)の意味がよく判りません。

 ともかくこれで表示を消すことが出来ます。そこでOLEDモジュールの消費電流を測定してみたのですが、なんだか変です。と言うのは、消費電流が異常に小さくて1μちょっとしか流れていません。なんて優秀なんだ!と最初は思ったのですが、どうも値が小さ過ぎます。よく考えると、CPU内部のプルアップ抵抗からI2Cバスを通じて電源が廻り込んでいそうです。

 そんなことで、プルアップを止めて調べてみることにしました。具体的には、21,22行目の pinMode(SDA, INPUT); とpinMode(SCL, INPUT); を有効にすると、CPU内部のプルアップ抵抗を外すことが出来るので、状態の比較が出来るようになります。

 以下は測定結果で、消灯時のOLEDモジュールの電源ピンに流れる電流の測定結果です。なお、点灯時の消費電流は約8.3mAでした。

▼CPU内部プルアップ有りの場合の消費電流(21,22行をコメントアウト)
1.08μA
 1.08μAと小さな値になっていますが、I2Cバスからの廻り込みがあるので、実質的な消費電流はもっと大きいはずです。

▼CPU内部プルアップ無しの場合の消費電流(21,22行が有効)
OLEDスリープ時の消費電流7.66μA
 7.66μAまで増えていますが、これがスリープさせた時の消費電流と考えて良さそうです。

 ちなみに3端子レギュレーターの XC6206 の自己消費電流は1.0μA(typ.)となっているので、残りの約6.66μAがSSD1306に流れていることになります。これくらいまで電流が減れば、まずまずでは無いかと思います。

2.I2Cバス電圧のリップル
 I2Cバスの波形を見ると大きなリップルが乗っていました。表示がOFFの期間はリップルが止まるので、デバイス駆動用のチャージポンプの影響だと思います。

▼I2Cバスのリップル
3.3Vに大きなリップル
 Highレベルが2.6Vくらいまで落ちる量のリップルが乗っています。なお、画面右側の波形はOLEDをOFFにするためのコマンドで、この先はリップルの発生が止まっています。

 これは3.3Vの電源のデカップリングが不足していることが原因なので、簡単に出来る処置として、コンデンサを追加してみました。

▼追加したデカップリングコンデンサ
3.3Vにコンデンサ追加
 C1とC2が元から付いている3.3Vのデカップリングコンですが、その位置には付け難いので3端子レギュレーターの出力に2μのセラコンを直付けしました。なお、このレギュレーターは低ESRセラコンの使用OKの物です。

▼コンデンサ追加後
コンデンサ追加後
 まだリップルが残っていますが、このあたりで諦めることにします。

3.I2Cバスにレベルコンバーターを入れる場合
 前の記事では5Vと3.3VのI2Cバスの間にレベルコンバーターを入れる必要は無さそうと書きました。でも、配線が長かったり、電源入れっ放しで何日も動かし続ける場合は、誤動作の危険が高まります。その場合は以下のような回路で対策すれば良いと思います。

▼レベル変換無しの回路図
OLEDのI2Cインターフェイス
 ちなみに、1.項で取り上げた電源の廻り込みは、+5V→Rarduino(35k)→D3→3.3V の経路で発生します。

▼FETを使ったレベル変換回路
OLEDのI2Cにレベル変換入れた回路
 CPU内の35kΩだけでは足らないので、外にもプルアップ抵抗(Rp)を入れた方が良いでしょう。

◆まとめ
 2ドルもしない部品ですが、いっぱい遊ばせてもらいました。詳しく調べると奥は深いです。

 このOLEDを使って、面白い物をまた作ってみたいと思います。ただ、ブートローダー入りのATmega328が足らなくなったので、書き込もうと思ったら、AVRISP mk2 が動かなくなっています。Windows10のアップデートでやられちゃった気がしますが,、困ったもんです。

ブログのアクセスカウンターが100万を突破

 アクセスカウンターが100万の大台を超えました。これは記事を読みに来て下さる方々のおかげです、ありがとうございます。なお、100万を超えたのは多分昨日ではないかと思いますが、この記事を書いている時点で100435になっています。

▼100万突破の記念スクリーンショット
アクセスカウンタが100万超え

 これはアクセスカウンターの位置にカーソルを当てて過去1週間分のアクセス数も表示させた状態です。アクセスカウンターの値が7桁になると、表示フォーマットが破綻するかも、と思っていたのですが、特に何もしなくても大丈夫でした。というか、どこをどう直せばよいか判らないままx-dayを迎えました。

 ちなみにこのカウンターはPV(ページビュー)ではなく、訪問者数をカウントしているようです。まあ訪問者と言ってもIPアドレスで判断するしか無いでしょうから、ユニークIPアドレス数ということになるはずですが、この精度は怪しいでしょう。

 良い機会なので、このブログのアクセス数について振り返ってみます。アクセス数の記録を取っていないので細かいところまでは判らないのですが、中間点の50万アクセスの時点で書いた記事があって、その日付は下記の通りでした。
 ・2009年11月13日:ブログ開始
 ・2015年7月24日:50万アクセス (ベランダ太陽光発電の累積発電量が50kWh突破
 ・2019年3月7日:100万アクセス

 最初の50万に5年と8ケ月かかり、次の50万は3年と8ケ月で突破しているので後半は少し加速しています。

 上の写真のアクセスカウンターはFC2が用意したものですが、ブログオーナーにはもう少し詳しい情報が判るようになっているのでその一部を紹介します。

▼日別アクセス数
日別アクセス数

 3月というか直近7日分のデーターです。ユニークアクセスと書いてあるのが、先の訪問者数(ユニークIPアドレスの数)だと思うのですが、なぜか値が一致していません。
 ちなみに、トータルアクセスはPV(ページビュー)だと思いますが、PVは訪問者数の倍くらいあります。

 どこのサイトから来たかを見ると、

▼先月(2月)のリンク元
2月のリンク元

 1位のリンク元無しは、ブラウザのブックマークから直接来たものと、refererを返さないブラウザから来たものの合計だと思われますが、その比率を知る術はありません。たぶん、多くの方がブックマークに登録して下さっているのだと想像していますが、有難いことです。2位はこのサイトのトップアドレスなので、これを踏み台に中のコンテンツにアクセスしているのだと思います。

 3から5位は検索サイトからのアクセスですが、想像していたより少ないです。昔はもっと比率が高かったと思います。ちなみに、このリストは80位くらいまであります。また、2月のトータルアクセスは約32000、ユニークアクセスは約18000でしたが、これ個人のブログとしては多い方だと思います。

◆まとめ
 このブログを始めた頃は地域の用水路や写真の話題なども書いていて、ポイントが絞り切れていませんでした。そんなことで、ブログのアクセス数も少なかったのだと思います。そういう中で、自分のやりたいことを記事を書いてみよう、ということで電子工作を中心に記事を書いていったことが、アクセス数の増加に繋がったのだと思います。

 ところで、アクセス数についての情報を探すために、自分の記事を検索したのですが、自分で作ったことを忘れてしまっている作品が結構あることに驚きました。実はOLEDを使ったデーターロガーを作りたいと思っているのですが、OLEDはともかく、データーロガーもどきは既にいくつか作っていました。そろそろArduinoから脱却して、新しいデバイスに目を向けた方が良い時期かも知れません。そうは言っても、Arduinoいじりは楽しいんですよね。

Anero (アネロ) のドライブレコーダー(ボタン操作編)

 アネロ(Anero)のドライブレコーダーの設定メニューの解説を前回の記事で行いましたが、操作ボタンの解説が抜けていたのでこの記事にまとめておきます。

◆Anero(アネロ)のドライブレコーダー
Aneroのドライブレコーダー

◆操作ボタン
操作ボタン
 液晶画面の右側側面に操作ボタンがあります。

 以下、ボタン操作の説明です。なお表中の / (スラッシュ)は操作毎に交互に実行します。

◆録画中のボタン操作
 ボタン  押す  長押し 
 MODE  動画プロテクト ON/OFF  -  
  UP  表示カメラの切り替え 
 前後、前後ミックスを切り替え 
 ー
  OK  録画 開始/停止  電源OFF 
 DOWN   -   照明LED ON/OFF 
 MENU   -   動画プロテクト ON/OFF    

 緊急を要する動画プロテクトのONは、押しやすいように一番上と下のボタンに割り付けられているようです。

◆録画停止中のボタン操作
 ボタン  押す  長押し 
 MODE  録画/写真/再生モードの切り替え  設定変更メニューへ切り替え
  UP  -  - 
  OK  録画 開始/停止 電源OFF
 DOWN  マイク ON/OFF 照明LED ON/OFF
 MENU  設定変更メニューへ切り替え 録画/写真/再生モードの切り替え  

◆設定メニュー内のボタン操作
 前回の記事に書いておけばよかったのですが、書き忘れたのでここに書いておきます。まあ当たり前の無いようですが、

 UP/DOWNで項目選択、OKで確定、MENUで上の階層へ上がる。

◆スクリーンセーバー動作中のボタン操作
・液晶がスクリーンセーバーで消灯している時は、どのボタンを押しても画面が再表示されるようです。なお、そのまま押し続けた場合は長押し機能が発動。

◆まとめ
・以上が操作スイッチの説明です。細かい部分まで全部書き切れていないところがあるので、添付取説と合わせて読むと判り易いと思います。

・上の操作メニューの表を見ると判り易いですが、MODEとMENUのボタンを、押した時と長押しした時の動作が対称に割り付けられています。こういう実装って、おしゃれで覚え易いので好きです。

・右ハンドルの車では、ドラレコは左手で操作することになりますが、操作ボタンが本体の右側面に付いているので、押しづらいです。これ、左ハンドルの車なら右手の指で自然に操作出来るんでしょうね。というか、中国での使用を想定して作られているので、こういう設計になるのでしょう。

・手探りでもボタンの操作できるように、中央のOKのボタンに突起でも付けておいてくれたら親切でした(自分で細工しようかと、、)。まあ、使い始めたらドラレコに触る必要はめったに無いので大した問題ではありません。

 ということでドラレコの話は(たぶん)これでおしまいです。
カレンダー
03 | 2019/04 | 05
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード