エントリー

2016年03月の記事は以下のとおりです。

温湿度をFSTN液晶モジュールで表示

温湿度センサ(DHT11)の続きで,温湿度データをFSTN液晶モジュールで表示してみた

1

フォントをそこそこのサイズにしないと見え難いためu8glibのソースを見ながら適切なフォントを選択

#include "U8glib.h"
#include "DHT.h"

U8GLIB_MINI12864 u8g(10, 9);
DHT dht(2, DHT11);

void draw(float h, float hic) {
    u8g.setFont(u8g_font_helvR24);
    u8g.setPrintPos(4, 28);
    u8g.print(hic);
    u8g.setPrintPos(94, 28);
    u8g.print("'C");
    u8g.setPrintPos(4, 60);
    u8g.print(h);
    u8g.setPrintPos(94, 60);
    u8g.print("%");
}
void setup(void) {
    dht.begin();
    u8g.setContrast(190);
}
void loop(void) {

    // Wait a few seconds between measurements.
    delay(2000);

    float h = dht.readHumidity();
    float t = dht.readTemperature();
    if(isnan(h) || isnan(t)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }
    float hic = dht.computeHeatIndex(t, h, false);

    // picture loop
    u8g.firstPage();
    do {
        draw(h, hic);
    } while(u8g.nextPage());
}

ところでデータシートを見ると,この温湿度センサ(DHT11)は,やっぱ廉価版のせいか小数点以下のデータはない(上で表示している小数点以下は補正で出てるだけ)

以下抜粋

Data consists of decimal and integral parts.
A complete data transmission is 40bit, and the sensor sends higher data bit first.
Data format: 8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit
decimal T data + 8bit check sum.
If the data transmission is right, the check-sum should be the last 8bit of "8bit integral
RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data".

要約すると,

データは40ビットでMSBから送られてくる

つまり全体は5バイト,最初の2バイトが湿度,次の2バイトが温度でそれぞれ1バイト目が整数部,2バイト目が小数点以下部となる

最後の1バイトはCRC(チェックサム)で1~4バイトを加算した数(オーバーフロー部は捨てる)

そして温湿度センサ(DHT11)の場合は,温湿度の2バイト目の小数点以下が必ず0になっている

湿度は製品で値がまちまちなようなので小数点以下はいらないかなと思うけど,気温はせめて0.5位までは欲しいかなと思うのでちょっと残念(使い場所を考えないといけないな)

 

次は大気圧センサを追加してみる

LPS25H

大気圧だけでなく温度も取得できるようだ

「サギホ」ことガラホに注意

管理人はガラホは悪質な酷い商品だと思っている

で,今更ながら既にこんな記事があるのを見つけて「サギホ」って知った

ネーミングが上手い!

 

どこかのサイトで携帯契約者の半数はスマホに移行しないでガラケーを使用していると見たことがある

そして2015年あたりではスマホとガラケーの契約数の移行は微妙となってることから,今後はこの割合で定着するのではと考えられているそうだ

 

ガラホを出してきたのはガラケー契約者を取り込むための策なのは理解できるがやり方が悪質と言わざるを得ない

いまだにガラホ―を使っているのはスマホの機能が必要でないからであり,そのような人向けの商品を出すべきでしょう

「サギホ」なんぞで取り込もうとしてるところから契約者を横取りできるやり方もあるんでないのかな

 

尚,管理人は「ガラケー」という名詞がとても嫌いです

温湿度センサ(DHT11)を動作させてみた

自宅サーバの外気温をチェックするために購入しておいた温湿度センサを動作させてみた

秋月で購入した「温湿度センサ モジュール DHT11

温湿度センサ

表

裏

どうやって繋いで?データはシリアルで形式は?とデータシートを眺めて簡単ではないなと「DHT11」でググってみたらライブラリがあったので楽勝で動作確認できた(こちらを覚えておくと良さそう)

接続

サンプルプログラム

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2     // what digital pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");

  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}

結果

表示方法を覚えるために,まずはこの出力をFSTN液晶で行ってみようと考えている

(追記)

今後,参考になりそうなサイトなど

arduino温湿度測定ロガー・湿度センサーの比較

aitendoの温度湿度センサー素子

・秋月とaitendoの(製造元が異なるのか)データシートが違い,動作電圧が秋月では3.5-5.5,aitendoでは3-5.5Vなのだが本体(裏)には3.3-5.5と記載されている

・3.3Vで動作させてみた結果

途中で5Vから3.3Vに変更,部屋にある温度計と比べてみると3.3V駆動時の温度のほうが正しいようだ(5Vでは問題あるのか?)

aitendoのFSTN液晶モジュール表示確認

最初atmega168しか3.3V版を用意してなかったので,このままu8glibのサンプルを実行しようとしてらメモリが足りなかった

なのでatmega328の3.3Vを作ることに・・・

atmega328

いつのもように3.3版にしたuncompatinoを使う(初期化方法はこちら

uncompatino

3.3V版にしてブートローダ書き込み後FSTN液晶モジュールを取り付け表示確認

接続

 5    LEDA       +3.3V(バックライト)
 6    VSS        GND
 7    VDD        +3.3V
             (arduino)            (ATMEGA328P)
 8    SCK        13                    19
 9    SDA        11                    17
10    RS          9                    15
11    RST  Reset or +3.3V            +3.3V
12    CS         10                    16

サンプルプログラム

#include "U8glib.h"

U8GLIB_MINI12864 u8g(10, 9);

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr( 0, 22, "Hello World!");
}
void setup(void) {
  u8g.setContrast(190);
}
void loop(void) {
  // picture loop
  u8g.firstPage();
  do {
    draw();
  } while( u8g.nextPage() );
 
  // rebuild the picture after some delay
  delay(50);
}

サンプル

他のu8glibサンプルも試して確認

キーとなるのは以下の2箇所

デバイス指定

U8GLIB_MINI12864 u8g(10, 9);

コントラスト

void setup(void) {
    u8g.setContrast(160);
}

ラジオペンチさんとか参考にさせていただきました

ページ移動

  • ページ
  • 1
  • 2
  • 3

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed