Arduinoって色々できるのね

Arduinoって色々できるのね

以前買ったArduino ETHERNETで遊んでいる。

Arduinoって、少々癖があるものの、意外とやるのねと最近は特に思っている。

Arduino ETHERNETにWebサーバーのスケッチ(巷ではArduinoのプログラムをスケッチと呼んでいる)を入れると、本当にWebサーバーになってしまう。
(Arduino+ETHERNETシールドでもOK)
そりゃ、PCのような高度なことはできないけれど、ちょっとしたことならraspberrypiなどの機器の力を借りなくても充分できそう。
そう考えると、FW書き換えに失敗し2個も文鎮にしてしまったArduino YUNはもっともっとできる子なのかも知れなかったね(高価であるのは否めないが)。

Arduino ETHERNETからメールを送れるという芸当もできることも分かり、興奮しきり。
Yahoo!知恵袋に興味深いことが書かれていて、とあるサイトにあるスケッチをもじれば、メールが送れるようになるとある。
色々やったみたが、おいらの環境の場合は、知恵袋に書かれている通りではできなかった。
サーバーによっては、LOGINのお作法があるようだ。

gmailでできないかとぐぐってみたけれど、gmailは簡単にはできないらしい。Arduino YUNだったらTEMBOOという無償のサービスを使うことでできた。
自分のサーバーでできるようになったし、Yahoo!メールは、telnet接続してもうまくいかないので、放置プレイ。

SMTP-AUTHという方法が一般的になっているようで、「ユーザー名\0ユーザー名\0メールパスワード」をBase64形式に変換しなければならない。
Base64にする方法は、アプリからオンライン上まで色々あるので、是非調べてほしい。

知恵袋で紹介しているこのサイトで配布しているスケッチを自分の環境に書き換えてやることが必要。
当該スケッチでは、「AUTH LOGIN」してからBase64形式に直した「ユーザー名」と「パスワード」を送出しているが、「AUTH PLAIN ******(******にBase64形式の[ユーザー名\0ユーザー名\0メールパスワード]」が入る)というように送出しないと認証されない場合もあるようだ。
自分の使っているサーバーがどのようになっているかは、SMTPサーバーにTelnet接続すれば分かる。実験してみておくれ~。

当該スケッチにあるSmtp_Service.hにsend_mail関数が書かれているので、そこが肝となる。

自分の環境に合わせて修正し、Arduino ETHERNETを起動(LAN接続してね)。その際、Arduino ETHERNETは、PCとシリアル接続する。
ターミナルアプリをPCから起動して、Arduino ETHERNETに「S」(半角大文字)+エンターとやってやると、SMTPサーバーに接続を開始する。
ターミナルでSMTPサーバーとのやり取りが監視できるってわけ。

「認証しなさい」とかエラーが出なければ、指定したメールアドレスにメールが送信される。
知恵袋の人は日本語は使えないと書いているが、本文とタイトルは日本語使用OKだった。

●おいらが持っているのはArduino UNOにETHERNETが付いたArduino ETHERNETだけれど、LeonardにETHERNETが付いたLeonard ETHERNETというのも最近出たようだ。

【2021.2.21追記】Leonard ETHERNETは、すでにディスコンになったようですな。(;^o^A

↓これはイーサネットは付いていないArduino MEGA互換基板。US$6.15という驚異的な安さ!流石中国製。ドライバーはネットから仕入れないといけないが、それ以外はArduino MEGAと一緒。
AliExpress.com Product – Mega 2560 R3 Mega2560 REV3 (ATmega2560-16AU CH340G) Board ON USB Cable compatible for arduino [No USB line]