忍者ブログ

設備のマニアどっとこむ

設備、電子工作、DIYのブログ!

10/09

Mon

2017

ネットワーク時計の製作【ラズパイ、arduino、ESP32】

最近急に7セグメントLEDに興味を持ったのでarduinoかラズパイで何か作れないか考えていた。

ラズパイであればpysonでのプログラミングとなる。pysonはネットワークにつながっていればモジュールをインポートするだけで時間を取得することができる。

とりあえず7セグメントひとつだけでGPIOを制御してみた。
#!/usr/bin/python
# coding: utf-8
# モジュールをインポートする
import time
import RPi.GPIO as GPIO
# GPIO指定をGPIO番号で行う
GPIO.setmode(GPIO.BCM)
num = 0
while num < 2:
  t = time.localtime()
  sec = t[5] #取得した時間のうち5が秒となる。
  print(sec)
  
  if sec == 0:
    GPIO.setup(2, GPIO.OUT)
    GPIO.output(2, 1)
    GPIO.setup(22, GPIO.OUT)
    GPIO.output(22, 1)
    GPIO.setup(3, GPIO.OUT)
    GPIO.output(3, 1)
    GPIO.setup(4, GPIO.OUT)
    GPIO.output(4, 1)
    GPIO.setup(27, GPIO.OUT)
    GPIO.output(27, 1)
    GPIO.setup(17, GPIO.OUT)
    GPIO.output(17, 1)
    
  else:
      GPIO.setup(22, GPIO.OUT)
      GPIO.output(22, 0)
      GPIO.setup(2, GPIO.OUT)
      GPIO.output(2, 0)
      GPIO.setup(3, GPIO.OUT)
      GPIO.output(3, 0) 
      GPIO.setup(4, GPIO.OUT)
      GPIO.output(4, 0)
      GPIO.setup(27, GPIO.OUT)
      GPIO.output(27, 0)
      GPIO.setup(17, GPIO.OUT)
      GPIO.output(17, 0) 
  if sec == 1:
    GPIO.setup(22, GPIO.OUT)
    GPIO.output(22, 1)
    GPIO.setup(3, GPIO.OUT)
    GPIO.output(3, 1)
    
  else:
      GPIO.setup(22, GPIO.OUT)
      GPIO.output(22, 0)
      GPIO.setup(3, GPIO.OUT)
      GPIO.output(3, 0) 
  if sec == 2:
    GPIO.setup(2, GPIO.OUT)
    GPIO.output(2, 1)
    GPIO.setup(22, GPIO.OUT)
    GPIO.output(22, 1)
    GPIO.setup(27, GPIO.OUT)
    GPIO.output(27, 1)
    GPIO.setup(17, GPIO.OUT)
    GPIO.output(17, 1)
    GPIO.setup(14, GPIO.OUT)
    GPIO.output(14, 1)
  else:
      GPIO.setup(22, GPIO.OUT)
      GPIO.output(22, 0)
      GPIO.setup(2, GPIO.OUT)
      GPIO.output(2, 0)
      GPIO.setup(14, GPIO.OUT)
      GPIO.output(14, 0)
      GPIO.setup(27, GPIO.OUT)
      GPIO.output(27, 0)
      GPIO.setup(17, GPIO.OUT)
      GPIO.output(17, 0) 
  if sec == 4:
    GPIO.setup(4, GPIO.OUT)
    GPIO.output(4, 1)
    
  else:
      GPIO.setup(4, GPIO.OUT)
      GPIO.output(4, 0)
  if sec == 5:
    GPIO.setup(17, GPIO.OUT)
    GPIO.output(17, 1)
   
  else:
      GPIO.setup(17, GPIO.OUT)
      GPIO.output(17, 0)
  if sec == 6:
    GPIO.setup(27, GPIO.OUT)
    GPIO.output(27, 1)
  else:
      GPIO.setup(27, GPIO.OUT)
      GPIO.output(27, 0)
  if sec == 7:
    GPIO.setup(14, GPIO.OUT)
    GPIO.output(14, 1)
  else:
      GPIO.setup(14, GPIO.OUT)
      GPIO.output(14, 0)
時間のモジュールをとりこみ、秒を0~9までif文で場合分けし、それぞれGPIOにて出力した。
ラズパイではネットワークにつなぐのが楽なので容易に7セグメントに出力できた。

しかしながら、この調子でケタを増やすとなるとコネクタもコードも煩雑になり困難を極める。

ということで、GPIO出力が多くネットワークにつなげるのが可能なESP32を使うことにした。
arduinoでもほぼ同じコードでできるが、イーサネットシールドが必要になる。
#include <WiFi.h>
#include <time.h>
#define JST     3600* -9
const char* ssid = "SSIDを入れて下さい";
const char* password = "パスワードを入れて下さい";
void setup() {
  
  Serial.begin(115200);
  delay(100);
  Serial.print("\n\nStart\n");
  WiFi.begin(ssid, password);
  while(WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(500);
  }
  Serial.println();
  Serial.printf("Connected, IP address: ");
  Serial.println(WiFi.localIP());
  configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
   pinMode(13,OUTPUT);
   pinMode(25,OUTPUT);
  pinMode(16,OUTPUT);
   pinMode(17,OUTPUT);
   pinMode(18,OUTPUT);
   pinMode(19,OUTPUT);
    pinMode(22,OUTPUT);
     pinMode(23,OUTPUT);
     pinMode(26,OUTPUT);
     pinMode(27,OUTPUT);
      pinMode(21,OUTPUT);
}
void loop() {
  time_t t;
  struct tm *tm;
  static const char *wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};
  t = time(NULL);
  tm = localtime(&t);
  Serial.printf(" %04d/%02d/%02d(%s) %02d:%02d:%02d\n",
        tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
        wd[tm->tm_wday],
        tm->tm_hour, tm->tm_min, tm->tm_sec);
//時
        
       if("%02d",tm->tm_hour ==1  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 1
        digitalWrite(25,LOW);//右下 1
        digitalWrite(16,LOW);//右上 1
        digitalWrite(22,HIGH);//中段 1
        digitalWrite(23,HIGH);//上段 1
        digitalWrite(27,HIGH);//下段 1
        digitalWrite(26,HIGH);//左下 1
        digitalWrite(21,HIGH);//左上 1
        delay(5);
         ;}
         
        if("%02d",tm->tm_hour ==2  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 2
        digitalWrite(25,HIGH);//右下 2
        digitalWrite(16,LOW);//右上 2
        digitalWrite(22,LOW);//中段 2
        digitalWrite(23,LOW);//上段 2
        digitalWrite(27,LOW);//下段 2
        digitalWrite(26,LOW);//左下 2
        digitalWrite(21,HIGH);//左上 2
        delay(5);
         ;} 
         
          if("%02d",tm->tm_hour ==3  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 3
        digitalWrite(25,LOW);//右下 3
        digitalWrite(16,LOW);//右上 3
        digitalWrite(22,LOW);//中段 3
        digitalWrite(23,LOW);//上段 3
        digitalWrite(27,LOW);//下段 3
        digitalWrite(26,HIGH);//左下 3
        digitalWrite(21,HIGH);//左上 3
        delay(5);
         ;} 
        if("%02d",tm->tm_hour ==4  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 4
        digitalWrite(25,LOW);//右下 4
        digitalWrite(16,LOW);//右上 4
        digitalWrite(22,LOW);//中段 4
        digitalWrite(23,HIGH);//上段 4
        digitalWrite(27,HIGH);//下段 4
        digitalWrite(26,HIGH);//左下 4
        digitalWrite(21,LOW);//左上 4
        delay(5);
         ;} 
         if("%02d",tm->tm_hour ==5  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 5
        digitalWrite(25,LOW);//右下 5
        digitalWrite(16,HIGH);//右上 5
        digitalWrite(22,LOW);//中段 5
        digitalWrite(23,LOW);//上段 5
        digitalWrite(27,LOW);//下段 5
        digitalWrite(26,HIGH);//左下 5
        digitalWrite(21,LOW);//左上 5
        delay(5);
         ;} 
       if("%02d",tm->tm_hour ==6  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 6
        digitalWrite(25,LOW);//右下 6
        digitalWrite(16,HIGH);//右上 6
        digitalWrite(22,LOW);//中段 6
        digitalWrite(23,LOW);//上段 6
        digitalWrite(27,LOW);//下段 6
        digitalWrite(26,LOW);//左下 6
        digitalWrite(21,LOW);//左上 6
        delay(5);
         ;} 
        if("%02d",tm->tm_hour ==7  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 7
        digitalWrite(16,LOW);//右上 7
        digitalWrite(22,HIGH);//中段 7
        digitalWrite(23,LOW);//上段 7
        digitalWrite(27,HIGH);//下段 7
        digitalWrite(26,HIGH);//左下 7
        digitalWrite(21,HIGH);//左上 7
        delay(5);
         ;} 
        if("%02d",tm->tm_hour ==8  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 8
        digitalWrite(16,LOW);//右上 8
        digitalWrite(22,LOW);//中段 8
        digitalWrite(23,LOW);//上段 8
        digitalWrite(27,LOW);//下段 8
        digitalWrite(26,LOW);//左下 8
        digitalWrite(21,LOW);//左上 8
        delay(5);
         ;} 
       if("%02d",tm->tm_hour ==9  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 9
        digitalWrite(16,LOW);//右上 9
        digitalWrite(22,LOW);//中段 9
        digitalWrite(23,LOW);//上段 9
        digitalWrite(27,LOW);//下段 9
        digitalWrite(26,HIGH);//左下 9
        digitalWrite(21,LOW);//左上 9
        delay(5);
         ;} 
       if("%02d",tm->tm_hour ==10  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
         digitalWrite(25,LOW);//右下 1
        digitalWrite(16,LOW);//右上 1
        digitalWrite(22,HIGH);//中段 1
        digitalWrite(23,HIGH);//上段 1
        digitalWrite(27,HIGH);//下段 1
        digitalWrite(26,HIGH);//左下 1
        digitalWrite(21,HIGH);//左上 1
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 0
        digitalWrite(16,LOW);//右上 0
        digitalWrite(22,HIGH);//中段 0
        digitalWrite(23,LOW);//上段 0
        digitalWrite(27,LOW);//下段 0
        digitalWrite(26,LOW);//左下 0
        digitalWrite(21,LOW);//左下 0
        delay(5);
         ;} 
     if("%02d",tm->tm_hour ==11  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
         digitalWrite(25,LOW);//右下 1
        digitalWrite(16,LOW);//右上 1
        digitalWrite(22,HIGH);//中段 1
        digitalWrite(23,HIGH);//上段 1
        digitalWrite(27,HIGH);//下段 1
        digitalWrite(26,HIGH);//左下 1
        digitalWrite(21,HIGH);//左上 1
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
       digitalWrite(25,LOW);//右下 1
        digitalWrite(16,LOW);//右上 1
        digitalWrite(22,HIGH);//中段 1
        digitalWrite(23,HIGH);//上段 1
        digitalWrite(27,HIGH);//下段 1
        digitalWrite(26,HIGH);//左下 1
        digitalWrite(21,HIGH);//左上 1
        delay(5);
         ;} 
       if("%02d",tm->tm_hour ==12  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
         digitalWrite(25,LOW);//右下 1
        digitalWrite(16,LOW);//右上 1
        digitalWrite(22,HIGH);//中段 1
        digitalWrite(23,HIGH);//上段 1
        digitalWrite(27,HIGH);//下段 1
        digitalWrite(26,HIGH);//左下 1
        digitalWrite(21,HIGH);//左上 1
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
       digitalWrite(25,HIGH);//右下 2
        digitalWrite(16,LOW);//右上 2
        digitalWrite(22,LOW);//中段 2
        digitalWrite(23,LOW);//上段 2
        digitalWrite(27,LOW);//下段 2
        digitalWrite(26,LOW);//左下 2
        digitalWrite(21,HIGH);//左上 2
        delay(5);
         ;} 
         if("%02d",tm->tm_hour ==13  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
         digitalWrite(25,LOW);//右下 1
        digitalWrite(16,LOW);//右上 1
        digitalWrite(22,HIGH);//中段 1
        digitalWrite(23,HIGH);//上段 1
        digitalWrite(27,HIGH);//下段 1
        digitalWrite(26,HIGH);//左下 1
        digitalWrite(21,HIGH);//左上 1
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 3
        digitalWrite(16,LOW);//右上 3
        digitalWrite(22,LOW);//中段 3
        digitalWrite(23,LOW);//上段 3
        digitalWrite(27,LOW);//下段 3
        digitalWrite(26,HIGH);//左下 3
        digitalWrite(21,HIGH);//左上 3
        delay(5);
         ;} 
         if("%02d",tm->tm_hour ==14  ){
        digitalWrite(13,HIGH);//1桁目 1
        digitalWrite(17,LOW);//2桁目 0
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
         digitalWrite(25,LOW);//右下 1
        digitalWrite(16,LOW);//右上 1
        digitalWrite(22,HIGH);//中段 1
        digitalWrite(23,HIGH);//上段 1
        digitalWrite(27,HIGH);//下段 1
        digitalWrite(26,HIGH);//左下 1
        digitalWrite(21,HIGH);//左上 1
        delay(5);
        digitalWrite(13,LOW);//1桁目 0
        digitalWrite(17,HIGH);//2桁目 1
        digitalWrite(18,LOW);//3桁目 0
        digitalWrite(19,LOW);//4桁目 0
        digitalWrite(25,LOW);//右下 4
        digitalWrite(16,LOW);//右上 4
        digitalWrite(22,LOW);//中段 4
        digitalWrite(23,HIGH);//上段 4
        digitalWrite(27,HIGH);//下段 4
        digitalWrite(26,HIGH);//左下 4
        digitalWrite(21,LOW);//左上 4
        delay(5);
         ;} 
      以下略

こんな調子で1,2桁目を時間、3、4桁目を分にすれば一般的なデジタル時計ができる。
同時に1~4桁表示できないので5ミリ秒ずつ表示をずらして残像で表示するダイナミック点灯方式の7セグメントを使用した。



これで指定のWi-Fi環境にあればズレるとなく時間を刻み続ける。 現在屋外照明のタイマーなどは何年もすればすぐずれてしまうが、IoT機器がどんどん増えていけば、正確にON、OFFができる様になるかもしれない。







拍手[0回]

PR

09/30

Sat

2017

技術士補登録の仕方

技術士一次試験を受けた人はご存じかもしれないが、合格してもそれだけでは”技術士補”とは名乗ることはできない。なぜなら同じ分野で指導技術士がいなければ補佐することができないため登録ができないからだ。そして間違っても1次試験合格のみで”技術士補”と名刺にでも書こうものなら技術士法違反になってしまうので注意してほしい。(アルティメットは受かってから知ったが・・)

この資格はおよそ大多数の人が実務経験を積み2次試験にチャレンジするか、一次試験合格というステータスのままにしているかどちらかという印象が強い。今回運よくアルティメットは指導技術士が見つかり技術士補登録をすることになったのでやり方を簡単にまとめたい。


【必要なもの】
①技術士補登録申請書
 住所や技術士一次試験合格証番号など申請する本人の情報を記入するのだが、指導技術士の登録番号、事務所名称などが必要になってくる。また指導技術士と会社が違う場合はその会社の同意書が必要。ちなみにJABEE(ジャビー?)卒業の人はフォーマットが違ったりするので注意すること。

②登記されていない事の証明書
 法務局で発行される。郵送で取り寄せる場合特殊なケースを除き、身分証明書のコピーと収入印紙を貼った申請書と返信用封筒を同封すれば1週間もしないうちに発送される。

③身分証明書
 本籍のある市区町村で発行される。こちらも郵送であれば身分証明書のコピーと申請書と返信封筒で発行されるが、収入印紙ではなく定額小為替という郵便局でしか手に入らないものが必要なので注意が必要(残念ながら郵便局窓口へいかなければならない)

④補助しようとする技術士の証明書
 指導技術士のサインと私印

⑤印紙と振込受領書(ATMの明細書でも可)
 印紙は15,000円、振込は6,500円とあわせて2万超えでとってもリーズナブル。

詳しくはこちらのページ参照してもらいたいが、欠格事項等もあり登録できないケースもあるので、できれば技術士一次試験を受ける前に確認することをおススメしたい。

とりあえずこれで申請しているのだが、登録書がきたら技術士補(電気・電子)と名刺にいれようかと・・。なかなか”補”をいれている人はいないのでレアな名刺になる予感!!!








拍手[0回]

08/28

Mon

2017

arduinoでターンテーブルの連続再生を行う

十数年前、社会人になってすぐの頃、テクニクスのターンテーブルとヌマークのミキサーのセットを大枚をはたいて買ったのだが、今では全然使わなくなって箱にしまいっぱなしになっている。
30枚くらいはレコードも買っていたが、あまり聴く事もなかった。ちょっともったいないが、こういう人は結構いるんじゃないかな?と思ってる。


使わなくなる原因をよくよく考えてみるとターンテーブルにはいくつか弱点があることがわかる。

1.再生中は次の曲をかけるのにターンテーブルの前にいなければならない。
2.設置状況によるが多くの場合、立ちっぱなしになる。
3.音楽をかけてなにもしないと最後の曲が終わり、無音になる。
4.次の曲はどうしようか、どうつなぐか、悩む。
5.音楽を聴きながら何か別の作業(勉強など)をすることができない。

まあ当然といえば当然なのだが、なんとか連続再生をして放置できないか考えてみた。
今回音センサーとサーボモーターをaruduinoで制御してみた。

とりあえず出来は微妙だが、なんとか針を巻き戻すことに成功した。



音センサーをスピーカ前に設置して無音になったら、巻き戻るようにする。

ミキサーのボリュームにもサーボモーターをつけて、針の移動中は音が出ないようにした。


スケッチはかなり苦労したが以下の様になります。
#include<Servo.h>
int val=0; 
int ledVal = 0; 
Servo servo1;
Servo servo2;
void setup() {
  servo1.attach(4);
servo2.attach(5);
Serial.begin(9800); 
}
void loop() {
val=analogRead(5);
ledVal = val
Serial.println(ledVal); 
if(ledVal < 80){
servo1.write(120);
delay(500);
servo2.write(60);
    delay(1000);
    servo2.write(70);
    delay(1000);
    servo2.write(80);
    delay(1000);
    servo2.write(90);
    delay(1000);
    servo2.write(100);
    delay(1000);
    servo2.write(102);
    delay(1000);
    
    servo2.write(104);
    delay(1000);
    servo2.write(106);
    delay(1000);
    servo2.write(108);
    delay(1000);
    servo2.write(110);
    delay(1000);
         servo1.write(111);
    delay(1000);
    servo2.write(112);
    delay(1000);
    servo2.write(113);
    delay(1000);
    servo1.write(114);
    delay(1000);
    servo2.write(115);
    delay(1000);
    servo1.write(116);
    delay(1000);
    servo2.write(117);
    delay(1000);
    servo2.write(118);
    delay(1000);
    servo2.write(119);
    delay(1000);
       servo2.write(120);
    delay(1000);
}
else{
servo1.write(60);
delay(500);
servo2.write(0);
}
delay(5000);
}
要約すると音センサーの値を読み取って、音の信号がなくなると、ミキサーのサーボモーター1を動かしボリュームをゼロにしてもう一つのサーボモーター2でターンテーブルの針を移動させる。一気に動かすと針が飛ぶので段階的に動かすスケッチになっている。
音センサーは無音になると反応するので、曲の最中で無音になると曲の終わりでなくてもまきもどってしまうのはご愛敬。

これでとりあえず放置しても曲を連続再生する事ができた。もう少し頑張ればジュークボックスみたいにできるかもしれないが、このクオリティでもかなり苦労したのでここで終わりにしたい笑。とりあえずターンテーブルを箱から出すのに成功したので良しとすることにした。
※針をかなり痛めるのでマネするのであれば覚悟してください。





拍手[0回]

08/20

Sun

2017

自作UPSでラズパイを動かす

ラズパイは型落ちのPCぐらいの性能があって使い勝手もいいので様々な用途に応用できます。なかでも、ネットワークの知識があればサーバーにしたり、Twitterのbotにして勝手につぶやいたりと、ラズパイを24時間起動するというハードな使い方をしている例も多々あるみたいです。

24時間起動するにあたって少し気になるのが電源で、ラズパイはデスクトップPCのような電源ユニットもないしノートPCのようなバッテリーも搭載されてません。USBから直接5V電圧をとる方式ですこしでも電源の状態が悪いと起動不良を起こしたりしてしまいます。(特にラズパイ3)

そこで簡易的なUPS(無停電電源装置)を作って瞬低と少しの停電に対応できるようにしてみました。



・・・非常にわかりにくいのですが、コンセント100Vをトランスで12Vにして、整流回路に突っ込んでいます。直流になった12Vをチャージコントローラーに通し、バッテリーに充電しつつインバータで100Vを使用できる様にしています。

構成図はこちら↓


簡単な整流回路ですが、波形をみたらそうでもない気がします。
一応直流12Vが作れてそうです。
 
ブレーカがON状態であればバッテリーを充電しながらAC100Vが使えます。
※太陽光パネル用のチャージコントローラーなのでSUNのところが点灯してると充電中ということです。

ここでブレーカーをOFFにすると・・。

/パチッ\



大丈夫でした!ラズパイとモニターもしばらく使えます。
(ただしみるみるうちにバッテリー電圧が下がってきます。)


これでちょっとぐらい電源に異常があってもラズパイを起動し続ける事が可能になりました!
でもチャージコントローラも本来の使い方じゃないし、ラズパイを起動中に停電させると壊れる可能性大なのでかなりリスキーです。マネはしないでください。
(オシロスコープを提供してくださったSさんありがとうございました。)







拍手[0回]

08/11

Fri

2017

富良野メロン農家除草剤事件について

先日とあるメロン農家の方のブログを読んで衝撃を受けた。なんとビニールハウスに除草剤がまかれて6600玉ものメロンが被害にあってしまったらしい。

http://furano-melon.jp/official-blog/post-4962/



世の中ひどい人がいるもんだなぁと残念な気持ちになっていたのだが、今後こういう事件が起こらない様にする為、どうすれば防げるのかアルティメットなりに考えてみた。

まずメロン農家の守るべきものとしては以下の3つとなると思われる。
・メロン
・水
・電源


メロンを守る

ブログやグーグルマップから推測すると、メロンはビニールハウス内にあり監視カメラおよび光センサーライトをすでに設置している。この状態であれば入口からビニールハウスに入ろうとすると明るい状態でカメラに映り犯人のアシが着く事になるはずである。(画像を録画していれば)

しかし残念ながらビニールハウスは入口以外からも破って入れる為、入口での監視カメラはでは防げない。というよりそもそも監視カメラでは”防犯カメラ作動中”看板などによる心理的な抑制にはなるが物理的な防犯にはならない。そこでビニールハウスへ近づけない措置が必要となってくる。

とりあえず4パターン考えてみた
①フェンス+振動センサー
②フェンス+赤外線センサー
③自立型赤外線センサーのみ
④人感センサー

一般の施設ならば、①~②がセオリーだが、3万5,000平方メートルの農地では費用がかからすぎてフェンスの設置は現実的ではないだろう。

↓赤外線センサー 人が遮ると感知する。

③の赤外線センサーでは電源の埋設が容易(地面が土だから)なので自立型ならば導入できるかもしれない。それにしてもビニールハウスごとに設置すると相当の費用になる。
もし本当に安く設置するなら④の人感センサーを敷地内にランダムに取り付けビニールハウスに近づくと検知するようにする方法もある。①~④いずれにせよ大事なのは

現地にブザーをつけること

現地で爆音が鳴れば犯人もおどろいて逃げる。さらに同時に警報接点をエムシステム技研のてれまるくんなどを使えばメールや電話もできるので現地にすぐ駆けつけることもできる。さらにブザーと同時にパトランプを点灯させる手もある。とにかくその場で犯人を逃走させ、ビニールハウスから遠ざけることが大事である。

水を守る

メロン栽培については完全に素人なのだが、今回給水バルブをいじられたそうで、ほかにも断水や、薬品を混入させるケースもあるかもしれない。これを予防するにはタンク蓋などの施錠、バルブへのボックスの取り付け、給水周りのフェンス設置しかない。あとは設置後はどうしようもないが、水道配管を埋設か高い位置で敷設するくらいしかないだろう。

電源を守る

メロン農家の方のブログではブレーカが落とされていたり、ビニールハウスの設定が変えられていたりとなんとも恐ろしい事件だが、これらはおそらく施錠できるような盤に収められていない可能性が高い。外箱だけであればそこまで費用はかからない場合が多いので更新を推奨したい。


まとめ

セキュリティは費用さえあればいくらでもやり様がある。極端な話、プレハブ小屋を建てて24時間交代で警備員を常駐させるということもできる。ただ、農家の方に負担にならないかつ、効果的でなければならない。今回は誰でも入れる広大な土地に設備工事をするのは非常に難しいと感じた。そして最後に今回の事件の早期解決と来年の豊作を祈るばかりである。









拍手[0回]

AD

シェアしてね

プロフィール

HN:
アルティメット雅史
性別:
男性
自己紹介:
製油所、データセンター、化学工場を渡り歩いた設備のマニア
最近はarduinoあたりの電子工作にハマる。
取得資格は電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士一次試験合格(電気・電子)、エネ電合格、フォークリフトほか

カウンター

お問い合わせ

忍者アクセスランキング

Copyright © 設備のマニアどっとこむ : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]