« April 2019 | Main | June 2019 »

May 2019

05/26/2019

TM1637を使ってGPS時計を作ってみた

GPS時計は、3つの構成部品とジャンパーケーブルで実現できた。
Img_20190524_164610  Img_20190525_074504
 
構成部品
①GPSユニット:太陽誘電製の小型高感度GPSモジュールGYSFDMAXB
②表示ユニット:4桁7セグメントモジュール TM1637
③Arduino : NANO


Fritzing を使って回路を描いてみた。
 Gpsfritzing2 木造家屋の、窓から約4mの壁に取り付けてみたが、本題なく表示できた。



Sketch

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include "SevenSegmentTM1637.h"
#include "SevenSegmentExtended.h"
static const int RXPin = 4, TXPin = 3;  // TX -> D4, RX -> D3
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
const byte PIN_CLK = 6;   // define CLK pin (any digital pin)
const byte PIN_DIO = 7;   // define DIO pin (any digital pin)
SevenSegmentExtended      display(PIN_CLK, PIN_DIO);
int Satellites = 12;
int hours = 0;
int minutes = 0;
int wasMinute = 99; // used for blanking leading zero
int DSTEST = 9;
int TwelveTwentyFour = 24;
void setup() {
 Serial.begin(115200);
 ss.begin(GPSBaud);
 display.begin();            // initializes the display
 display.setBacklight(100);  // set the brightness to 100 %
 delay(1000);                // wait 1000 ms
 hours = 99;
 minutes = 99;
 display.printTime(hours, minutes, true);  // display time
 pinMode(Satellites, INPUT_PULLUP);
 delay(1000);
}
void loop() {
 while (ss.available() > 0)
   if (gps.encode(ss.read()))
     displayInfo();
 if (millis() > 5000 && gps.charsProcessed() < 10)   {
   Serial.println(F("No GPS detected: check wiring."));
   while (true);
 }
}
void displayInfo() {
 int SW5 = digitalRead(Satellites);
 if (SW5 == LOW) {
   display.print("Sat=");
   delay(500);
   display.clear();
   int temp = gps.satellites.value();
   Serial.print("temp = ");
   Serial.println(temp);
   display.print(gps.satellites.value());
   Serial.print("Satellites Seen = ");
   Serial.println(gps.satellites.value());
   delay(1000);
 }
 Serial.print(F("Location: "));
 if (gps.location.isValid())  {
   Serial.print(gps.location.lat(), 6);
   Serial.print(F(","));
   Serial.print(gps.location.lng(), 6);
 }
 else
 {
   Serial.print(F("INVALID"));
 }
 Serial.print(F("  Date/Time: "));
 if (gps.date.isValid())   {
   Serial.print(gps.date.month());
   Serial.print(F("/"));
   Serial.print(gps.date.day());
   Serial.print(F("/"));
   Serial.print(gps.date.year());
 }
 else
 {
   Serial.print(F("INVALID"));
 }
 Serial.print(F(" "));
 if (gps.time.isValid())   {
   if (gps.time.hour() < 10) Serial.print(F("0"));
   Serial.print(gps.time.hour() + 9 ); // time ZONE mod
   Serial.print(F(":"));
   if (gps.time.minute() < 10) Serial.print(F("0"));
   Serial.print(gps.time.minute());
   Serial.print(F(":"));
   if (gps.time.second() < 10) Serial.print(F("0"));
   Serial.print(gps.time.second());
   Serial.print(F("."));
   if (gps.time.centisecond() < 10) Serial.print(F("0"));
   Serial.print(gps.time.centisecond());
/////////////////To Clock LED Display/////////////////////////////
   int hours = gps.time.hour(); 
   Serial.print(" DST = ");    Serial.print(DSTEST);    int timezonehr = DSTEST;    hours = hours + timezonehr;    if (hours > TwelveTwentyFour - 1) {      hours = hours - TwelveTwentyFour;      if (hours == 0) hours = 12; // make sure shows 12 at noon    }    else {      if (hours < 0) {        hours = hours + TwelveTwentyFour;      }    } /////////////////To Clock LED Display/////////////////////////////    int minutes = gps.time.minute();    if (minutes  != wasMinute) {      Serial.print("Hours just before sent to LED ");      Serial.println(hours);      display.printTime(hours, minutes, false);  // display time      if (   hours <= 9) {        display.print(" ");      }      wasMinute = minutes;    }  }  else  {    Serial.print(F("INVALID"));  }  Serial.println(); }


参考にしたブログ
7セグLED表示 その7 4文字-TM1637
GPS Set Clock ・・・ Sketchは、このブログを引用して作成させて貰った。

05/09/2019

Linux Mint 19.1 に Virus 対応ソフト ClamAV を Install

Linux Mint 19.1 MATE の再 Install 後、Internet Security ソフト「COMODO」のインストールがうまく進まず、途中で止まってしまう。原因はまだ良くわかっていないが、セキュリティを放置しておく訳にはいかないので、別のVirus 対応ソフト ClamAV を Install した。
参考にしたのは、Narrow Escape 「 2018/7/30 LinuxMint 19: Virus scan with ClamAV 」の中の記事である。

コマンドライン端末を開いて、上記のURLの中に書かれている設定手順通りに Install 作業を行った。
1.clamav package のInstall
  $ sudo apt install -y clamav

 Install したら、次のclamscanコマンドで、ファイルまたはディレクトリをスキャンする。
   -r オプションは、ディレクトリを再帰的にスキャンし、
   -i オプションは、検出されたファイルのみを表示する。
  $ mkdir ~/virus
  $ clamscan -r -i --move=$HOME/virus .

2.次に virus database を freshclam を使って手動でアップデートする
  $ sudo freshclam

  しかし、clamavパッケージと一緒に clamav-freshclam pakcageをインストールしたので、次のようなエラーが発生する。
   ERROR: /var/log/clamav/freshclam.log is locked by another process
   ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

3.clamav-freshclamパッケージを使ってウイルスデータベースを自動的に更新する
  clamav-freshclamパッケージはウイルスデータベースを自動的に更新します。freshclamコマンドを実行する必要はありません。しかし、clamav-freshclamによる初回更新時には、下記の警告が表示されうまくいかない。

  初めてアップデートする場合は、clamav-freshclamを停止し、freshclamコマンドを手動で実行してclamav-freshclamを起動します。
  $ sudo systemctl stop clamav-freshclam
  $ sudo freshclam
  $ sudo systemctl start clamav-freshclam

  デフォルトの更新間隔は1日に24回です。

4.clamav-daemonパッケージを使ったウイルススキャン
  clamav-daemonパッケージにはclamdデーモンとclamdscanコマンドがあります。clamdデーモンはデータベースを1回ロードしてデーモンとして待機します。データベースをロードせずにclamdscanコマンドからの要求によってウイルススキャンを実行します。
  clamdデーモンは常にデータベース用のメモリを消費しますが、clamdscanはclamscanよりも高速です。そしてclamdscanの動作はclamdに依存し、clamscanの動作はclamscanのオプションに依存します。

5.clamtkパッケージを使ったウイルススキャン
  clamtkパッケージはGUIウィンドウを提供します。
  $ sudo apt install -y clamtk

  スキャン後のダイアログメッセージに問題があります。LC_TIME = Cが設定されていないと、スキャン後のダイアログメッセージは表示されません。これは、スキャン後に検出されたファイルを削除するのを防ぎます。
  そのため、この記事ではデスクトップファイルでLC_TIME = Cを設定します。デスクトップファイルなしでclamtkを実行するにはLC_TIME = Cを設定する必要があります。

« April 2019 | Main | June 2019 »

August 2019
Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Recent Trackbacks

無料ブログはココログ