エントリー

カテゴリー「電子工作」の検索結果は以下のとおりです。

温湿度センサ(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);
}

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

Windows10にarduinoの開発環境をセットアップ

Windows10にarduinoの開発環境をセットアップ

再セットアップとなるが展開セットアップなのでバックアップそのものが利用できる

Arduino IDE

これまで「arduino-1.0.5-r2」を使用し,今後「arduino-1.6.5-r5」を利用しようとセットアップしておいたが,すでに「arduino-1.6.7」があったので結局新しいバージョンをセットアップすることになる

①arduino-1.6.7-windows.zipをサイトからダウンロードし展開

起動してみる

②Uncompatinoと秋月Arduinoマイコンキットをハード定義に追加

モデルとCPUで階層化できるようになったようだ(つまりモデル×CPUタイプ分の全部を記述しなくても良くなった)

以下を「(セットアップフォルダ)\hardware\arduino\avr\boards.txt」に追加

##############################################################

uncompatino.name=Uncompatino

uncompatino.upload.tool=avrdude
uncompatino.upload.protocol=arduino

uncompatino.bootloader.tool=avrdude
uncompatino.bootloader.unlock_bits=0x3f
uncompatino.bootloader.lock_bits=0x0f

uncompatino.build.board=AVR_UNO
uncompatino.build.core=arduino
uncompatino.build.variant=standard

## Uncompatino (5V, 16MHz) /w ATmega328
## ------------------------------------
uncompatino.menu.cpu.16MHzatmega328=ATmega328 (5V, 16 MHz)

uncompatino.menu.cpu.16MHzatmega328.upload.maximum_size=32256
uncompatino.menu.cpu.16MHzatmega328.upload.maximum_data_size=2048
uncompatino.menu.cpu.16MHzatmega328.upload.speed=115200

uncompatino.menu.cpu.16MHzatmega328.bootloader.low_fuses=0xff
uncompatino.menu.cpu.16MHzatmega328.bootloader.high_fuses=0xde
uncompatino.menu.cpu.16MHzatmega328.bootloader.extended_fuses=0x05
uncompatino.menu.cpu.16MHzatmega328.bootloader.file=optiboot/optiboot_atmega328.hex

uncompatino.menu.cpu.16MHzatmega328.build.mcu=atmega328p
uncompatino.menu.cpu.16MHzatmega328.build.f_cpu=16000000L

## Uncompatino (5V, 16MHz) /w ATmega168
## ------------------------------------
uncompatino.menu.cpu.16MHzatmega168=ATmega168 (5V, 16 MHz)

uncompatino.menu.cpu.16MHzatmega168.upload.maximum_size=14336
uncompatino.menu.cpu.16MHzatmega168.upload.maximum_data_size=1024
uncompatino.menu.cpu.16MHzatmega168.upload.speed=19200

uncompatino.menu.cpu.16MHzatmega168.bootloader.low_fuses=0xff
uncompatino.menu.cpu.16MHzatmega168.bootloader.high_fuses=0xdd
uncompatino.menu.cpu.16MHzatmega168.bootloader.extended_fuses=0x00
uncompatino.menu.cpu.16MHzatmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex

uncompatino.menu.cpu.16MHzatmega168.build.mcu=atmega168
uncompatino.menu.cpu.16MHzatmega168.build.f_cpu=16000000L

## Uncompatino (3.3V, 8MHz) /w ATmega328
## -------------------------------------
uncompatino.menu.cpu.8MHzatmega328=ATmega328 (3.3V, 8 MHz)

uncompatino.menu.cpu.8MHzatmega328.upload.maximum_size=32256
uncompatino.menu.cpu.8MHzatmega328.upload.maximum_data_size=2048
uncompatino.menu.cpu.8MHzatmega328.upload.speed=57600

uncompatino.menu.cpu.8MHzatmega328.bootloader.low_fuses=0xe2
uncompatino.menu.cpu.8MHzatmega328.bootloader.high_fuses=0xda
uncompatino.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0x05
uncompatino.menu.cpu.8MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex

uncompatino.menu.cpu.8MHzatmega328.build.mcu=atmega328p
uncompatino.menu.cpu.8MHzatmega328.build.f_cpu=8000000L

## Uncompatino (3.3V, 8MHz) /w ATmega168
## -------------------------------------
uncompatino.menu.cpu.8MHzatmega168=ATmega168 (3.3V, 8 MHz)

uncompatino.menu.cpu.8MHzatmega168.upload.maximum_size=14336
uncompatino.menu.cpu.8MHzatmega168.upload.maximum_data_size=1024
uncompatino.menu.cpu.8MHzatmega168.upload.speed=19200

uncompatino.menu.cpu.8MHzatmega168.bootloader.low_fuses=0xe2
uncompatino.menu.cpu.8MHzatmega168.bootloader.high_fuses=0xdf
uncompatino.menu.cpu.8MHzatmega168.bootloader.extended_fuses=0x00
uncompatino.menu.cpu.8MHzatmega168.bootloader.file=atmega/ATmegaBOOT_168_pro_8MHz.hex

uncompatino.menu.cpu.8MHzatmega168.build.mcu=atmega168
uncompatino.menu.cpu.8MHzatmega168.build.f_cpu=8000000L

##############################################################

akizuki.name=Akizuki ATmega168/328

akizuki.upload.tool=avrdude
akizuki.upload.protocol=arduino

akizuki.bootloader.tool=avrdude
akizuki.bootloader.low_fuses=0xFF
akizuki.bootloader.unlock_bits=0x3F
akizuki.bootloader.lock_bits=0x0F

akizuki.build.f_cpu=16000000L
akizuki.build.board=AVR_DUEMILANOVE
akizuki.build.core=arduino
akizuki.build.variant=standard

## akizuki ATmega328
## ---------------------------------------------
akizuki.menu.cpu.atmega328=ATmega328

akizuki.menu.cpu.atmega328.upload.maximum_size=30720
akizuki.menu.cpu.atmega328.upload.maximum_data_size=2048
akizuki.menu.cpu.atmega328.upload.speed=57600

akizuki.menu.cpu.atmega328.bootloader.high_fuses=0xDA
akizuki.menu.cpu.atmega328.bootloader.extended_fuses=0x05
akizuki.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

akizuki.menu.cpu.atmega328.build.mcu=atmega328p

## akizuki ATmega168
## ---------------------------------------------
akizuki.menu.cpu.atmega168=ATmega168

akizuki.menu.cpu.atmega168.upload.maximum_size=14336
akizuki.menu.cpu.atmega168.upload.maximum_data_size=1024
akizuki.menu.cpu.atmega168.upload.speed=19200

akizuki.menu.cpu.atmega168.bootloader.high_fuses=0xdd
akizuki.menu.cpu.atmega168.bootloader.extended_fuses=0x00
akizuki.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex

akizuki.menu.cpu.atmega168.build.mcu=atmega168

##############################################################

③U8glibを利用可能にする

サイトから「U8glib for Arduino」(u8glib_arduino_v1.18.1.zip)をダウンロードして,「(環境設定のスケッチブックの保存場所)\libraries」下に展開する

他の方法もあるようだが管理人はこの方法でライブラリを登録している

(※)「E:\AVR\workspace\libraries」となる

WinAVR(and avrdude-serjtag)

avrdude.exeをGUIラッパー「avrdude-GUI.exe」で動作させる

これを利用してブートローダー・ヒューズビットの書き込みを行う

aitendoで購入したものを組み立てる

ほったらかしにしてたaitendoで購入したものを確認

FSTN液晶モジュール

まずは表示の仕方を確認しないといけない

FSTN液晶モジュール

袋から取り出して,なかなかコンパクト

サイズ

資料が無いのでピンの配置くらい記録しておく

裏

ピンを付けるのに先日購入したUSB半田ごてを使用してみた

ピン付け

余談だが半田ごてがコンパクトで使い勝手が良い(このサイズで普通の20Wクラスの半田ごてがあれば良いな)

この後3.3V版arduinoでu8glibというライブラリを使って確認なのだがIDEのセットアップが(Windows10で)まだだった

あちゃんでいいの(実装済み)

お試しで購入したため何に使うか考えてない

あちゃんでいいの

袋から出してみて,表側

表

裏側にはRとCが実装されている(回路図

裏

とりあえずブレッドボード上での実験用に制作してみようとあり合わせのパーツを集め

制作

サクッと制作終わり・・・だが基盤に合うタクトスイッチが無いためリセットボタンは未実装

制作

USB-TTL変換キット

USB-TTL変換は他にも持っているので,これは「あちゃんでいいの」専用にしようかと考えてる

USB-TTL

取り出して,中身のパーツ

中身

これもサクッと制作したが・・・実は肝心のCH340Gを取り付ける方向を間違え廃品となる(悲)

完成

こんな感じで接続したのだけど動作しなかった

接続

ページ移動

ユーティリティ

検索

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

過去ログ

Feed