緑の中に

緑の中に
国立天文台

7/20/2023

机が大変! 

机がブレッドボードで一杯です!! 


 RTCおよびワンショット・マルチバイブレーター さらに音源1・音源2と順調に動作します

RTCの威力がすごいです。私の指定した時刻、例えば夜中でも正確に動作し、機器を起動します。私が寝ずに夜中に手動でスイッチを操作する作業を自動で行ってくれます。

このRTCは「RTC-10」というもので、10年以上前に購入したものです。
マイクロテクニカさんからの購入でした。
非同期のRTCです。現在、このRTCは手に入りません。残念です。バックアップとしてほしかったのですが。

今後、RTCは同期式のタイプの使用になります。この場合、プログラムを一から考える必要がまたあり、一苦労強いられます。


机上のブレッドボードの回路を、基板に組む必要があります。これがまた大変です。
ブレッドボードで済ませることが可能ならその部分はブレドボードで済まそうと思います。






7/01/2023

獣害対策装置 電子警報音

 獣害対策装置 電子警報音



電子警報音の作成



6/23/2023

Power MOS FET をインターフェースとして使用する

 Power MOS FET をインターフェースとして使用する




書きかけ途中です

6/21/2023

ワンショット・マルチバイブレータ(単安定回路)

ワンショット・マルチバイブレータ(単安定回路)

回路はトリガーパルスを受けると一定時間幅のパルスを出します。
トリガパルスのパルス幅はmsec単位です。この時間幅はある程度短いことが要求されます。

T=1.1xCR  [sec]の計算式で出力パルス幅の理論値が求まります。
CRの値が大きくなるに従い、実際の時間は理論値より長くなります。




コンデンサ容量 抵抗器の値を変えてストップウオッチで実測しました。
33μF 10MΩ のとき8分を実測しました。

この回路を使用するメリットとは
・マイコン側(Arduino)の動作としてmsecのパルスを出すだけで、マイコンは以降の作業に関してタッチしなくって良いことになります。マイコン側で8分について判定する必要はありません。

・マイコンの負荷の軽減が行えます。CRのハードで時間幅を変更できる。

*ワンショットを使用せずとも同種の事がプログラムだけでも実現できます。
[xx:x0] [xx:x8] の種類で現在時刻を検索するプログラムで、8分間パルスを出力できます。
具体的な例で示します。
00:00 を検出 ON信号出力 00:08を検出 OFF信号を出力 --> 8分間のパルス幅
00:10 を検出 ON信号出力 00:18を検出 OFF信号を出力 --> 8分間のパルス幅

00:20 を検出 ON信号出力 00:28を検出 OFF信号を出力 --> 8分間のパルス幅
マイコンはすでに時計を内蔵(RTC)しましたので、現在時刻検出で同種のことが実現できました。






 

6/18/2023

現在時刻の時間帯を識別(朝 午前 午後 昼 夕方 夜 真夜中)

 現在時刻の時間帯を識別(朝 午前 午後 昼 夕方 夜 真夜中)

現在時刻がどの時間帯であるか識別・判別するプログラムです。例えば「朝」と識別させる
には、朝とは時刻が~から~でると定義しておく必要があります。
プログラムの一部を載せます。


真夜中にある動作を予定している場合、自分が考える真夜中の時間帯をif文にセットします。
時刻範囲の指定のif文は間違いやすいので、事前にシミュレーションすると良いです。


 char *hour_str = strtok(p_Ntime, ":");

    char *minute_str = strtok(NULL, ":");


    Serial.println(hour_str);

    Serial.println(minute_str);


    int hour = atoi(hour_str);

    int minute = atoi(minute_str);


   if ((hour >= 18 && minute >= 00) || (hour <= 4 && minute >= 00)) { 

      // 04時00分は真 04時01分は真 04時59分は真  05時00分は偽  05時01分は偽

      // (注意)04時代は真となる. 00時代~04時代は真となる。18時以降は真となる。

    

    //if ((hour >= 17 && minute >= 30)) { 

         // 17時30分 以降 真  00時00分 偽


                        

        // 夜間の時間帯にある場合の処理を想定

   

        digitalWrite(led4, HIGH);  // LEDを点灯させる

         delay(1000);

        digitalWrite(led4, LOW);

                                  

        Serial.println("●◎A [真 true] 動作です●");

                  

    } else {

        // Bの動作を行います

        digitalWrite(led5, HIGH);  // LEDを点灯させる

        delay(1000);

        digitalWrite(led5, LOW);

        

        Serial.println("△B [偽 false] else動作です.");

        

    }

次回はプログラムの全体を載せる予定です。

*獣害動物が夜の何時に出没するのか? 人間の活動時間外に出没している事は確かです。
獣害動物が出没した時の時刻を知りたくなりました。

もしその時刻に集中して出現しているようなら、その時間帯で威嚇すれば効果があるかもしれません。

より高度な対策装置を考えるなら、画像認識により獣害動物を識別して警報を発する方法が一番です。(ハイレベルです)

獣害動物の出現をどのようにして検知するか!!

6/16/2023

RTC実験風景

 RTC実験風景

LEDを6本取り付けました。プログラムを点検するためです。どの動作に入っているか確認する必要に迫られました。

特に、loopの最後に達したのか確認のためLEDを1秒間隔の点滅動作にしています。よって、プログラムが走行中はこの点滅を繰り返します。

必要に応じてプログラム途中にLED点灯プログラムを設けました。if文に多く設けました。これらのLEDの点灯・消灯でプログラム開発が確実にできました。

自分の予定・想定と実際のプログラムの動作のギャップは何回もありました。都度プログラムを修正しました。

ここまで完成しました。先がまだ長いです。例えば、OUT PUTをどうするか? <書きかけ途中>




RTC 時刻範囲での動作

 RTC 時刻範囲での動作

例えば、「マイコンに夜間帯においてある動作をさせたい」この事の実験です。

良好に動作しました。



  //if ((hour >= 18 && minute >= 00) || (hour <= 4 && minute >= 00)) { 
      // 04時00分は真  04時59分は真  05時00分は偽  05時01分は偽
      // (注意)04時代は真となる. 00時代~04時代は真となる。18時以降は真となる。
    
    if ((hour >= 17 && minute >= 30)) { 
              
        // 夜間の時間帯にある場合の処理を想定                                    
        Serial.println("◎A [真 true] 動作です.");
                  
    } else {
        // Bの動作を行います
        Serial.println("△B [偽 false] else動作です.");
        
    }

if文の条件式はOR論理です(||の記号が)。このプログラムでは17時30分以降であれば条件を満たし、動作Aを行うはずです。
17:30から23:59 (24時00分=00時00分) の論理を満たすはずです。

やはり、この時間帯までプログラムを走らせ確認をしないことには不安です。
後日、これについて述べます。実験について述べます。