メールサーバお知らせランプ

投稿日:

 今朝の着想、「Arduinoのメールサーバお知らせランプ」というのを実際に作った。

 自分のプロバイダのメールサーバを定期的に監視して、メールがたまっていなければ緑、少し多ければ黄、たまりすぎていれば赤、早急に読み出さなければならないようなら赤の点滅、というふうに、ランプで知らせてくれるのである。

 以前作った「未読メールメータ」とは違って、「ETHERNET SHIELD 2」を使って単独でネットにつながるように作ってあり、パソコンを立ち上げたりサーバを上げたりする必要はないので、使い方も単純だ。電源をつなぎ、そのへんにのたくっているカテ5のケーブルを突っ込めば終わりである。

 まず、100円ショップで買ったアクリルの枠にEHTERNET SHIELD 2を取り付けたArduino UNOをねじ止めする。

 LEDは昨日も使ったアノードコモンのものを、大きく見えるよう、これまた100円ショップで買ってきたピンポン玉の中に封入し、クリップでアクリルの枠にとりつける。

 RGBそれぞれのピンをデジタルの3,4,5番につなぎ、アノードに+5Vを加える。それぞれのピンに330Ωの抵抗を付けておくことを忘れてはならない。

組み付けた様子
IMG_3023

 回路図については、描くほどのものではないが、まあ、描けばこうなる。

回路図
mailLampCircuit

 そうすると、メールの量に応じて、こんな具合に光り方が変わる。

メール10通以下は緑
IMG_3019

メールが50通くらいまでは黄
IMG_3021

メールが100通近くなってくると赤、100通を超えると赤点滅
IMG_3022

 写真の彩度が悪いが、実物はもっと鮮やかな色に見える。

 スケッチはこんな感じだ。

//
//  メールの残りによりランプの色を変える。
//    佐藤俊夫
//    27.06.14(日) 1500~
//
#include <SPI.h>
#include <Ethernet2.h>

byte MAC[] = {
  0x90, 0xA2, 0xDA, 0x0F, 0xF6, 0x74
};
IPAddress IP(192, 168, 1, 129);
IPAddress MY_DNS(192, 168, 1, 1);
EthernetClient CLIENT;
const char MAIL_SERVER[] = "pop.hogehoge.ne.jp", USER[] = "USER hoge@pop.hage.ne.jp", PASS[] = "PASS passpass";
unsigned long LAST_CONNECTION_TIME = 0;
const unsigned long CONNECTION_INTERVAL = 300L * 1000L;
int R = 0, G = 0, B = 0;
const int LEDR = 3, LEDG = 4, LEDB = 5;
unsigned long LAST_LED_BLINK_TIME = 0;
boolean LED_BLINK_RED = true;
const int LED_BLINK_INTERVAL = 1000;
int MAIL_NUM = 0;
String RECEIVE_STR = "";

void setup() {
  pinMode(LEDR, OUTPUT);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDB, OUTPUT);
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDG, HIGH);
  digitalWrite(LEDB, HIGH);
  delay(1000);
  Ethernet.begin(MAC, IP, MY_DNS);
}

void loop() {
  if (CLIENT.available()) {
    char c = CLIENT.read();
    RECEIVE_STR += c;
  }
  if (millis() - LAST_CONNECTION_TIME > CONNECTION_INTERVAL) {
    pop3connect();
    if(RECEIVE_STR.indexOf("+OK server ready\r\n+OK ") >= 0){
      RECEIVE_STR = RECEIVE_STR.substring(RECEIVE_STR.indexOf("+OK server ready\r\n+OK ") + 22);
      RECEIVE_STR = RECEIVE_STR.substring(0, RECEIVE_STR.indexOf(" "));
      MAIL_NUM = RECEIVE_STR.toInt();
    }
    RECEIVE_STR = "";
  }
  if(MAIL_NUM <= 10){
    digitalWrite(LEDR, HIGH);
    digitalWrite(LEDG, LOW);
    digitalWrite(LEDB, HIGH);
  }else
  if(MAIL_NUM <= 50){
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, LOW);
    digitalWrite(LEDB, HIGH);
  }else
  if(MAIL_NUM <= 100){
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, HIGH);
    digitalWrite(LEDB, HIGH);
  }else
  if(MAIL_NUM > 100){
    if(millis() - LAST_LED_BLINK_TIME > LED_BLINK_INTERVAL){
      if(LED_BLINK_RED){
        digitalWrite(LEDR, HIGH);
        digitalWrite(LEDG, HIGH);
        digitalWrite(LEDB, HIGH);
        LED_BLINK_RED = false;
      }else{
        digitalWrite(LEDR, LOW);
        digitalWrite(LEDG, HIGH);
        digitalWrite(LEDB, HIGH);
        LED_BLINK_RED = true;
      }
      LAST_LED_BLINK_TIME = millis();
    }
  }
}
void pop3connect() {
  CLIENT.stop();
  if (CLIENT.connect(MAIL_SERVER, 110)) {
    CLIENT.println(USER);
    delay(1000);
    CLIENT.println(PASS);
    delay(1000);
    CLIENT.println("STAT");
    delay(1000);
    CLIENT.println("QUIT");
    delay(1000);
    CLIENT.println();
    LAST_CONNECTION_TIME = millis();
  }
}


ArduinoでPOP3サーバを監視

投稿日:

 この前作った「未読メールメータ」は、次のような仕組みだった。

  •  ArduinoをLinuxサーバのシリアルに接続
  •  Linuxサーバのcronを使い、定期的にプロバイダのメールサーバを監視
  •  未読メールの数をシリアルに出力
  •  Arduinoにつなげたサーボモータを未読メールの数に応じて駆動

 この時には「ETHERNET SHIELD 2」は持っていなかったので、ネットに接続するためにLinuxサーバを使わざるを得なかった。

 しかし、「ETHERNET SHIELD 2」を使えば、直接POP3サーバにアクセスして、例えば昨日やったLEDの色替えで、未読メールの数を色で表示することなどができそうだ。

  •  0通 緑
  •  ~10通 黄
  •  ~50通 赤
  •  100通~ 赤点滅

……みたいなことをやれば、Arduinoで完結できて、なかなか面白いかもしれない。



老人監視器

投稿日:

 ふと思いついたが、Arduinoにチルトスイッチとか超音波センサを適当にくっつけ、ETHERNET SHIELD 2 と一緒に使えば、最近はやりの、独居老人の管理に使えるのではなかろうか。

 リビングのドアの近くに1日以上人影がなかったら、メールで不仲の息子などに通知、とか。

 SMTPクライアントだって、まあ、単に通知するだけなら、簡単に書けるだろう。

サーボコントロールのWeb汎用化

投稿日:

 今日、Arduino + ETHERNET SHIELD 2 で遊んでいて思ったのだが、同じGETの処理をするなら、

http://hogehoge.hoge/?start=10&hold=5000&release=50

……というような、汎用化したGET引数にすれば面白いかも、と思った。まあ、セキュリティ上よろしくないが。

西鋭夫

投稿日:

 ある時、西鋭夫が嫌いなので、一言だけ「西鋭夫嫌い」と書いた

 ボンヤリこのブログの検索キーワードログを見ていたら、「西鋭夫」がトップに来ている(笑)。

 まったく、嫌いな奴の記事でアクセスが増えるとは、皮肉なものだ。意味がわからん。

 いずれにせよ、西鋭夫は嫌いだ。

調える方も真剣なら

投稿日:

 十数年来、妻が作る弁当を持って仕事に通っている。

 私の姑は梅干を拵えるのが上手で、これがなんとも言えず旨い。変な味付けなどしないのがコツらしく、塩と紫蘇だけで純然無垢に漬けてあるのだが、これがかえって複雑な味わいを生み、口に含めば含むほど不可思議の刺激があって旨いのだ。日光に当てた時に、塩分とあいまって、玄妙なる微生物の働きが生じるようだ。

 それをいつもたくさん貰う。そのため、愛妻弁当は、卵焼き程度のおかずをいくつか添えはするものの、私が喜ぶこともこれあり、めしの中心は「日の丸」にしてあることが多いのである。さすがは我が妻だ!俺という男を真髄までよく知り抜いている!日本万歳!!

 さて、この日の丸のめしには食いかたというものがある。

 単純に、梅干をつついてはこれを御菜にして、めしを規則正しく端から食っていくのも整然と筋道が通っていてよいが、これでは単なる及第点だ。なんとなら、この方法による場合、めしを半分まで食った時にちょうど梅干しが半分となり、梅干の下側の、梅酢が程よくしみた飯の処理に迷いを生じて、これを梅肉とともに食ってしまうことにつながり、この部分の味わいを無駄にしてしまうことになるのである(図1)。

図1 梅肉とともに梅干の下の飯を喫食した場合
梅干の下の飯がムダ

 梅干の下のめしは旨いから、これは決して無駄にしてはならぬ。

 したがって、弁当を食い始めるときに、この部分については単独で味わうべく、あらかじめ梅干を取り外すというやりかたがある(図2)

図2 あらかじめ梅干を退避する場合
梅干をよける

 だが、図中に示す如く、この喫食方法では、梅干本体の喫食経過配分を、梅干の下の飯の部分の量だけとりのけて食い進める必要があり、計算量がやや多く、快適に進捗することは困難である。

 そこで、次善の策として、梅干本体を解体し、あらかじめ飯にまぶしてしまうという方法が考えられる(図3)。

図3 梅干をあらかじめ解体して配分する要領
まぶした梅干

 しかし、図でもわかる通り、この食い方は汚らしい。子供がカレーを食うとき、あらかじめ全部混ぜてしまうようなもので、これでは大人とは言えず、姑が文字通り手塩にかけて熟成させた梅干に相対する姿勢として、果たして正しいやり方なのかどうかと思わず自省してしまわざるを得ない。

 そこで、私が採用しているのが、梅干本体をあらかじめ退避させる方法にアレンジを加えた、「対角配分喫食技法」である(図4)。

図4 対角配分喫食技法
幾何配分

 この方法は、まず、梅干を弁当箱の手前直下に退避させて梅干の下の味の染みためしの保全を図る。次いで、梅干を図に示す如く8つの対角領域に区切る。そうしておいてから、その区域をそれぞれ、弁当箱の左右の領域に対角線を想定し、梅肉の分量をめしに割り当て、規則正しく喫食する方法である。

 この方法は非常に優れており、きわめて美しく弁当を食うことができるが、唯一難点があり、それは「種」の処理である。

 だが、この欠点さえ補えば、現在のところはもっともすぐれた喫食技法と言えよう。

 何?「めんどくさいこと考えて弁当食ってるなあ」だって!?

 何を言う。妻が毎朝早起きして真剣に拵える弁当なのだ!調える方も真剣なら、食う方も真剣そのものなのである。また、姑がこの梅干にかける手間暇を思うと、とてものことにおろそかにはできないのだ!

 毎昼、日の丸弁当を前に悩み抜くことこそ、私と妻との昼ごとの、遠隔での魂の真剣勝負なのである。ああ、日の丸弁当万歳!

ブレボー

投稿日:

 ブレッドボード、略して「ブレボー」というのはこういうもののことである。

IMG_3004

……この右側の、輝いているLEDが取り付けられている、小穴が無数にあいたもののことだ。この小穴の中は縦横に接続されており、この小穴に部品やリード線を差し込むことによって電子回路が仮組みできるのである。

 これを「ブレッドボード Bread board」という理由が、なにやら面白いのでメモしておく。

 Bread board というのは、本当はコレのことだそうな。

 これすなわち、「打ち台」、パンを打つときに使うアレのことなのだそうな。

 昔の電子回路は真空管で、多少の漏電はかまわなかったので、この「まな板」状のものを買ってきて、釘を適当に打ち付け、そこに銅線を巻き付けて回路のテストをしたから、そういう仮組み板のことをブレッドボードと呼んでいたのが定着したのだそうである。

 

迷いと俺

投稿日:

 い、いかん、日本酒を飲もうかウィスキーを飲もうか迷ってしまい、悩ましくてどちらも飲めないではないか。

 年来果断が私の長所であるのだが、これを失った私など、私ではないような気がする。