投稿

ラベル(arduino)が付いた投稿を表示しています

メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

Arduino Ethernet Shield2ではまる

イメージ
Arduinoの通信環境テスト OpenHardのArduinoで、Ethernet上の通信を行う開発案件があって、 Switch Science から「Ethernet Shield2」を購入。 自前のArduino MEGA2560に接続。 DHCPからIP取得させるも、取得IPが0.0.0.0のままで、正常にIPが取得できない。 色々とソースコードを変更したり、Hubを変えたりしたものの、うまく行かない…。 いろいろと調べてみると、MEGA2560側に問題がある場合に同様の症状が出ているとの書き込みを発見。 古い上に、Revision2なので、それが問題かもしれない…。 UNOを購入 仕方なく、今度はArduino UNOを入手してテストすることにした。 ちなみにUNOは永久保証になってて少々びびった(笑) 3000円程度の品なので、気にせず購入。 2日ほどで到着したので、早速装着→テスト。 今度は、IPの取得表示までは完了した。 やはりMEGA2560側の問題だったらしい。 さて、本当に通信できるかと、定番のpingを試すと、Unreachableとな…。 むむむ…。 UDPもTCPも正常にパケットが届かない…。 交換依頼 念の為、開発元から実際に使用するArduino DUEが届いたので、こちらでもテスト。 UNOと同様IP取得までは行くのだが、その後一切の通信ができない。 おかしい・・・ ということで、購入元に連絡する。 交換を依頼したけれど、代替品を送るので、動作確認したら古い方を破棄してくれとのこと。まあ、この金額のものに、送料2台分負担したら馬鹿馬鹿しいことになるから、そりゃそうだわなぁと。 で、2日後到着。 早速テストを行う。 Ethernet Shield2 2台目 最初からDUEに接続。 状況は変わらず…。 そもそも、PINGが通らない。 そこで、最低限のDHCPクライアントを書き込んで動作検証からやり直す。 IPは取得できている。 Routerのログで、IPがリースされているのも確認。 MacAddressも一致している。

Sketch の書き込みができた on Ubuntu

イメージ
Arduinoでトラブルが続いていた 現在、Ubuntu(12.04-32bit)+ruby 1.8.7 + Arduino Mega2560という組み合わせで、開発を進めているのだけれども、先の記録にもあるように、予想以上に苦労している。 今回、Arduino IDEからMEGA2560へのsketchの書き込みが、エラーで出来なかったものを、工夫することで書き込みができることが分かったので、まとめておこうと思う。 まずは設定 普通にArduino IDEを起動して、書き込みを行うと図のようにエラーが発生する。 例では、スケッチの例にあるStandardFirmataを読み込んで、Arduino Megaに書き込もうとしている所。 すると、 avrdude: stk500v2_RecieveMessage(): timeout なんてエラーが延々と出て書き込みが終了しない。 こんなエラー情報では、何もわからないので、詳細な情報を得られるようにしておく。 「ファイル」->「環境設定」->「より詳細な情報を表示する」の「書き込み」にチェックを入れておく。 コンパイルの情報を見たければ、チェックを入れればいいのだけれど、今回はコンパイルまで終了し、書き込みに失敗しているので、書き込みだけでOK。 具体的な手順 この状態で、コンパイル&書き込みを行うと、さっきより格段に細かい情報が得られるのが分かるはず。 これが右の図。 すると、どんなデータを書き込もうとした。上手くいったとか失敗したとか…。 この状態が最低限必須。 この状態で先に進んでも良いのだけれど、詳細なLOGを見ているうちに、どんどんエラーが増えていくし、エラーをたくさん見ても意味が無いので、起動方法を変更する。 コンソール(Terminal)から、手動で起動してやると、あとの処理が楽になる。 $ arduino もしくは $ /usr/bin/arduino か、異なるバージョンを入れてたりするなら、そのディレクトリで $ ./arduino で起動するはず。 ここまで来たら、書き込みたいsketchを開いて、書き込みを実行する。 すると当然のことながら、先と同じエラーが発生する。 ここで慌てずに、コンソー

ERROR: Failed to build gem native extension.

イメージ
arduinoでfirmata とりあえずVirtualBoxのLinux上で、ruby+arduinoの動作は確認できている。 しかし、いちいちarduino側のプログラムを更新していくと、ホストPC上のRubyの更新もあって、管理が煩雑すぎるなぁ…。と思って検討する中にfirmataが良さそうだ。 基本的な通信プログラムと、IO周りを全て面倒見てくれて、Rubyから自分のポートのようにアクセスすれば、arduino上のポートにアクセスできるミドルウェアだ。 じゃあ、Linux上のarduio-IDEでStandardFirmataを書き込んでみようとしたら、なぜかエラーを吐きまくる。 avrdude: stk500v2_ReceiveMessage(): timeout が繰り返し出力されて、上手くいかない。 随分調べたけれども、stk500v2ではなくwiringを使えとか…。書き込みにAVRISP mkIIではなくAVRISPを使えだとか…。ボーレートを変更しろとか…。 どれもダメだった。 ここで、止まっていても埒が明かないので、HOSTのMac側で書き込むことにする。 こちらからの書き込みは問題なく完了した。 arduio_firmataのインストール 動作テストをしなければ、始まらないので、Linux上でテストする。 $ sudo gem install arduino_firmata とこれだけですね。 Fetching: args_parser-0.1.4.gem (100%) Fetching: event_emitter-0.2.2.gem (100%) Fetching: arduino_firmata-0.2.3.gem (100%) Successfully installed args_parser-0.1.4 Successfully installed event_emitter-0.2.2 Successfully installed arduino_firmata-0.2.3 3 gems installed Installing ri documentation for args_parser-0.1.4... Installing ri documentation for

ArduinoIDEのフォントが汚い

イメージ
Ubuntu上でArduino開発していて どうもIDEのフォントが汚い。フォントサイズは変更できるのだけれど、アンチエイリアスが設定できない。 javaで動いているから、設定ファイルを書き換えてやろうと、調べてみた。 コマンドarduinoで起動するので、この中身を書き換えてみる。 java -Dawt.useSystemAAFontSettings=on SampleApp ファイルの最後で実行している部分があるので、上のようにアンチエイリアスをonにしてみる。 う〜む、上手くいかない。 ホームに.arduino/preference.txtという個別の設定ファイルが、生成されているのでこいつを編集。 editor.antialias=true これだけで、うまくいった。 フォントもこの設定ファイルで変更できそうだ。 よく見ると、editor.fontというエントリがあるので、フォントの変更もこれでOK。 サイズはここで設定してもいいが、設定画面から変更可能なので、サイズだけならこのファイルを編集する必要はない。 14ポイント程度にしておくと、見やすい感じ。アンチエイリアスも効いていて読みやすいですな。 ついでにMac版も Mac用のArduinoIDEもフォントが汚いので、直してみる。 あれ? ホームに.arduinoというディレクトリはない。 お作法が違うようだ。 調べてみると$HOME/Library/Arduino/prefference.txtらしい。 中身は一緒なので、同じエントリーを探して書き換えるだけで、アンチエイリアスがきれいに掛かって嬉しい〜。 じゃっかん、使用しているフォントが異なるので、見え方に差はあるものの、これなら疲れずに作業できそうだ。 ちなみにWindowsでは作業しないことにしているので、情報なしです。 知りたい人はググってくださいww

CD-Drive全滅か…

イメージ
Ubuntuマシンを準備しようとしたら Arduinoのテストをするのに、これまでMac上で試験を行なってきた。おかげでこの1週間は、ブログもツイもあんまり出来なかったのだけれど…。 でもって本日、計測環境での動作テストに出向いたのだけれど…。Windowsノートマシンが渡され…。仕方なく、環境整備から行った。Arduino-IDEを入れ、Ruby+gems+serialportなどなど。 でもって、何とか動かせる環境を整えて、いざ動かし始めたらOSが死ぬという情けない落ち。仕方なく再起動をかけようとしたら、Updateによる更新を止む無くかける事態となり、マシンスペックの低さ故、1時間以上かかって、壊滅。 現場の作業は、センサーの動作確認と、リレーの動作確認しかできなかったorz。 再度打ち合わせて、マシンを別途用意することに。 自分のLinuxノートを使ってもいいのだけれど、これを献上するのは嫌なので新たに用意するしかない。 自宅に戻って、引き取ってあった古いマシンにLinuxでも入れて環境整備することに。 しばらく放置してあったけど、問題なかろうとセッティング。 さて、電源をいれると…。 1台目…メモリエラーをBIOSが報告。まあ、そんなこともあるわ…。次だ。 2台目…XPの起動を確認。ubuntuのインストール用Diskを入れようと…。Disk DriveがEjectされない。ピンを挿して強制排出するも、CDを認識しない。くそっ! 3台目…XPの起動を確認。CDを食わせるも認識しない。 寒さのせいだろうか、ドライブが逝ってしまっている。 あと3台あるけど、これ以上作業したくない。 他のマシンから、CD Driveを抜いて、差し込むのも手間が掛かり過ぎる。 ネットワークインストールするか…と思って、しばしGoogle先生と格闘。 USBからインストール可能かも BIOSでUSBからのブート可能なマシンを選定。 Ubuntu Japanese Team Wikiに「 UNetbootinの使用方法 」というのを見つけた。早速 UNetbootinをダウンロード して作業開始。 ubuntu12.04LTSの 日本語 Remixのisoイメージを

arduinoとruby

イメージ
湿度センサのテスト 今度は湿度センサを注文しておいたのが届いたので、早速テスト。 複数センサからのデータ取り込みと、出力を確認。 今後、リレーとかを動作させることを考えると、PC->arduinoへコマンド送信。 arduino->PC結果ステータス送信という流れで組むことに。 ボードからの受信をしながらコマンド送信となると、threadが使いたい。 迷った挙句、ここはperlではなくrubyを使うことに変更。 gemでシリアル関係のライブラリを入れたら、サクっと動作した。 threadで受信ルーチンと、送信ルーチンを分けて動作テスト完了。 回路側には本当はコンデンサ挟まないと、測定データにノイズ乗りまくりだけど、とりあえず動作テストなのでOKでしょ。 という無茶なテストも簡単にできるのがいいところ。 しかし、arduinoって面白いなあ。

arduinoの開発環境

イメージ
どうやって開発するか とりあえず、仕組みや動かし方はわかった。 で、開発環境をどれにするかだけど、今のところLinuxを最終ホストマシンにするつもり。ただし、開発はMacで。 このあたり、WindowsもMacもLinuxでもIDEが用意されているのが嬉しい。 注文した部品も届いたことだし、早速テスト。 温度センサをブレッドボードに接続。 アナログポートから読み取り出力させることにしてテスト。 USB経由のシリアル通信で行くことに。 arduino自体はコンパイルしてアップロードすればOKだけど、ホスト側の言語をperlでテストすることにした。 使用するマシンが決まっていないし、仕様の変更にも対処できるように、できるだけ高水準な言語が使いたかったけど、機種依存はOS依存は極力排除したいし・・・。悩ましいところ。   とりあえず、動作させるところまでは完了。 arduino側のシリアル通信用のルーチンはこれでOKということにしておこう。

arduinoが面白い

気まぐれから手伝う事に 先輩が開発でマイコンのプログラミングがよく分からず苦労しているので、手伝ってくれと…。 PICなら経験があるけど、聞くとAVRを使う予定とのこと。 そこで、少々調べてみるとAVRを直接でもいけるのだけど、 arduino という開発キットがオープンハードで出ているらしい。 オープンソースのハードウェア版という感じ。 そこで、何冊か書籍を買い漁って調べてみると、アセンブラでなくともOKらしい。 これなら、開発工数も小さくできるし、テストもしやすい。 C言語ライクな言語が使えるIDEも無料で手に入るし、面白そう。 ちゅうことで、しばらく遊んでみようと思う。