ELEGOO Arduino用UNO R3スターターキット で始める マイコン+電子工作6

ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付


ELEGOO: Best Consumer Level 3D Printers, STEM Kits & Robots
ELEGOO specializes in the research, development, and production of the most quality & affordable 3D printers, Arduino-based STEM & robotic kits, making technolegy easy-to-access for all the makers around the world.
 

前回の続き
引き続きチュートリアルに沿って電子工作入門していく

超音波センサー

使用する機器

  • (1) x Elegoo Uno R3
  • (1) x Ultrasonic sensor module
  • (4) x F-M wires (Female to Male DuPont wires)

超音波センサー


超音波距離センサ HC-SR04 - スイッチサイエンス
超音波の反射を利用して対象物までの距離を測る測距センサです。最高精度3 mmで、2 cmから400 cmの物体の距離を接触せずに測定できます。
 

超音波センサの概要と特徴 | センサとは.com | キーエンス
超音波センサは超音波の反射を利用して距離を測定するセンサです。ここでは超音波センサの概要、検出原理、透明体の検出が可能などの選定ポイントになる特徴をご紹介。キーエンスは製造業の方向けにセンサ選びに役立つ情報をお届けします。
 

センサヘッドから超音波を発信し、対象物から反射してくる超音波を再度センサヘッドで受信します。超音波式センサは、発信から受信までの「時間」を計測することで対象物までの距離を測定しています。

距離を測るセンサなのね

試験距離=(高レベル時間×音速(340m / s)/ 2

構成

センサーのVCCピンを 5V 電源に
GNDピンをGNDに
Echoピンを 11番PWMに
Trigピンを 12番に センサー基盤側にピンの名称がちゃんと刻印されてるのでわかりやすい

この時点でなんとなく、Echoピント Trgiピンを操作してなんかするんだなとわかる

いつもどおりサンプルプログラムをデプロイし
シリアルモニタを開くと何かしら文字列が流れていく

何かしら検知しているようだ

コードを見てみると

#include "SR04.h"
#define TRIG_PIN 12
#define ECHO_PIN 11
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;

void setup() {
   Serial.begin(9600);
   delay(1000);
}

void loop() {
   a=sr04.Distance();
   Serial.print(a);
   Serial.println("cm");
   delay(1000);
}

ライブラリで完全に簡略化されているが、log asr04.Distance()つまり超音波センサーの値を入れてそれをシリアルログ出力している
delay(1000);間隔で

センサー自体は Trig に HIGH が送られたとき音波を発生させ
Echo ピンに音波の応答時間を返しているだけだが、その両方の値をライブラリ内で制御、計算しているためコードはこのように簡略化されている
便利だが、仕組みや動きの理解という点においては不便だ

センサーを色んな対象物に対して向けることでセンサーからどれくらいの距離にあるかがわかる
正確な距離を知りたいとなった場合、超音波の理解も必要(検知対象に対して並行に配置、凸凹したものは距離精度が下がる等)だし
利用する上では色々メリット、デメリットを把握しておく必要がありそう

温度湿度センサー

使用する機器

  • (1) x Elegoo Uno R3
  • (1) x DHT11 Temperature and Humidity module
  • (3) x F-M wires (Female to Male DuPont wires)

温度湿度センサー

DHT11 デジタル温湿度センサーは、温度と湿度の較正されたデジタル信号出力を含む複合センサー です。専用のデジタルモジュール収集技術と温湿度感知技術を適用し、高い信頼性と優れた長期安定 性を保証します。

  • データシート

DHT11使用温湿度センサモジュール: センサ一般 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,マイコン,電子工作DHT11使用温湿度センサモジュール秋月電子通商 電子部品通信販売
 

温度湿度センサーは超音波センサー同様になんやかんやして温度と湿度を取得してるらしい
正直わからん!


【アルプスアルパイン】湿度センサの原理 | 半導体・電子部品とは | CoreContents
アルプスアルパインの湿度センサについて業界最小サイズのHSHCAL001Bなど、検出原理や特長など詳しく解説していきます。アルプスアルパインの湿度センサは大気中の水蒸気量を検知して電気信号に変換しています。HSHCAL001Bは他社製品と比較しても高湿度、低湿度どちらでも出力電圧が安定していて、高リニアリティが実現可能です。
 

構成

データシートにもある通り、DHT11 は 左から GND、NC、DATA、VDD とピンが設定されていて
それが基盤に取り付けらモジュール化され左から GND、VDD、DATAとなっている
※NCは「non connection」 の意味で接続しないピンとなる

配線し、いつもどおりプログラムとライブラリをデプロイして
シリアルコンソールを開くとセンサーデータを取得できる

T が温度、 H が湿度かな

コードを見てみると

#include <dht_nonblocking.h>
#define DHT_SENSOR_TYPE DHT_TYPE_11

static const int DHT_SENSOR_PIN = 2;
DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE );

/*
 * Initialize the serial port.
 */
void setup( )
{
  Serial.begin( 9600);
}

/*
 * Poll for a measurement, keeping the state machine alive.  Returns
 * true if a measurement is available.
 */
static bool measure_environment( float *temperature, float *humidity )
{
  static unsigned long measurement_timestamp = millis( );

  /* Measure once every four seconds. */
  if( millis( ) - measurement_timestamp > 3000ul )
  {
    if( dht_sensor.measure( temperature, humidity ) == true )
    {
      measurement_timestamp = millis( );
      return( true );
    }
  }

  return( false );
}

/*
 * Main program loop.
 */
void loop( )
{
  float temperature;
  float humidity;

  /* Measure temperature and humidity.  If the functions returns
     true, then a measurement is available. */
  if( measure_environment( &temperature, &humidity ) == true )
  {
    Serial.print( "T = " );
    Serial.print( temperature, 1 );
    Serial.print( " deg. C, H = " );
    Serial.print( humidity, 1 );
    Serial.println( "%" );
  }
}`

ライブラリ側で計算しているためこれまたセンサー制御系のコードは無く
データの定義とデータ取得、表示についてのコードのみ
measure_environment 関数を定義して値を取り続けるようにし、あとは Loopで値の取得確認と表示を繰り返している

実際にセンサーが取得し Arudino 側に送っているデータは 8bit x 5種類となっており
先頭から湿度(High)、湿度(Low)、温度(High)、温度(Low)となっている

チュートリアルの資料だとシリアル出力にビットデータも出してるんだけどコード上はそうなってない
なのでちょっとコード弄ってみたいなと思ってもコードがあんまり理解できてないから触りにくいなー


温湿度センサー(DHT11)の詳しい説明 | そう備忘録
温湿度モジュール(DHT11)のより詳しい説明。データシートとDHT11用のモジュールdht11.pyを見比べて分かったことを記事にしている
 

マイコンボードでよく取り上げられる超音波センサーと温湿度センサーを触ってみた回
Arduino という規格、ライブラリやプログラムの抽象化が進んで
取り付けさえ間違わなければ対して気にせずセンサー自体の値は取得できるし便利なんだけど

仕組みや原理まで知ろうとすると結構大変だし、深い知識が求められる
今の自分だととりあえずさわり程度までしかわかんないけど
そのせいでセンサー繋いだ!値取れた!しか出来てないのがもったいない

とりあえず今回はここまで
多分次回に続く