2013年3月発売号に掲載する原稿の執筆が大詰めを迎えています。
中の人1号にとっては20余年ぶりの商業誌での連載。アイデアを形にするため、毎晩悩んでいます。
2013年3月発売号に掲載する原稿の執筆が大詰めを迎えています。
中の人1号にとっては20余年ぶりの商業誌での連載。アイデアを形にするため、毎晩悩んでいます。
Raspberry Pi で Ruby on Rails を動かしてみた。
今回は DB に sqlite を利用したが、もちろん Raspberry Pi 上で MySQL や PostgreSQL も動作する。また、RVM も利用することができる。
ついでに bundler もインストールしておく。
$ sudo apt-get install ruby
$ sudo gem install bundler
バージョンの確認
$ ruby -v
ruby 1.9.3p194
$ gem -v
1.8.23
Ruby で書かれた CUI Twitter クライアントの tw を使って Raspberry Pi の CUI から tweet してみた。
Tw: Twitter client on Ruby.(http://shokai.github.com/tw/)
Tweet はもちろん。自分のTLの表示やリストの表示、DMの送信、複数アカウントも対応している。
$ sudo gem install tw
$ tw
$ tw hello world by tw on Raspberry Pi
hello world by tw on Raspberry Pi
— Taketo Takashimaさん (@taketo1113) 2013年2月19日
$ tw @taketo1113
以下のようにパイプで tweet できるので RPi の GPIO からセンサーの値を読み出して自動でツイートするとかも簡単に実装できそう。
$ echo Hello World > tw –pipe
Raspberry Pi から Crowy を使ってツイート
回路図を描くときにどのツールを使って書くか迷ったことはないだろうか?
今回は、オープンソースの電子回路設計ツール Fritzing を紹介する。
Fritzing は Windows/Mac/Linux で動作し、回路図の設計からシミュレーションまでできる。
ライセンスはツールのソースコードには GPLv3、ドキュメントや図などには CC ライセンスが適用されている。
“Fritzing” というとツール以外にコミュニティーやプリント基板加工サービス(Fritzing Fab)もあるのだが、今回は電子回路設計ツールを紹介する。
Fritzing(http://fritzing.org/)
以下のURLから各自の環境に合わせてファイルをダウンロードする。
ダウンロード(http://fritzing.org/download/)
Mac の場合は dmg ファイルがダウンロードできるので、ダウンロードしたファイルを展開してできた Fritzing ディレクトリをそのまま Application ディレクトリにコピーすればインストールは完了する。
配置したいパーツを右上のパーツから選択してブレッドボードのウィンドウにドラッグ&ドロップするだけで配線できる。
作成した回路図は各種ファイルに書き出すことも可能だ。
使い方については Fritzing のサイトの “Getting Started” や “Tutorials” がとても参考になった。
Learning – Fritzing(http://fritzing.org/learning/)
Adafruit の Fritzing Library を使うことで Raspberry Pi のパーツを利用することができる。
以下の URL からファイルをダウンロードして Fritzing の [ファイル] -> [開く] から必要な .fzpz ファイルを開けばパーツウィンドウにパーツが追加される。
GitHub | adafruit / Fritzing-Library
以下は、ε-ARK printer をどうやって Mac OS X のプリンタ環境に組み込むかをプロジェクトメンバに説明したメールの後半です。いま(2013年2月)から4年間のことになります。末尾「Windows 機では Bonjour for Windows を使えばよいのではないか」と書いています。このメールを書いた時には推測でしたが、後にそのとおりであることは確認しました。でも、その後も今も Windows はほとんど使っていないので、今でもそれがベストなのかどうかはわかりません。
========================================
差出人: Hiroyuki OHNO
件名: [e-ark:652] e-ark printer update (as of 2/24/2009 (part.2))
日時: 2009年2月24日 21:25:09JST
「e-ark printer」開発関連の情報更新の続き (part.2) です.
次回の定例ミーティングの際の参考資料という位置付けです.
0. (本報告執筆時点での MW-260 の利用状況 ) → part.1 で報告
1. (LPD環境を導入した Mac OS X からの MW-260 の利用) → part.1 で報告
2. Mac OS X のプリンタ環境の実体は CUPS ですから,前メールの項番 1 で報告した,「MW-260 に対応した LPD 環境」を生かしつつ CUPS 環境から LPD 環境を経て MW-260 で印刷するには,CUPS 環境上に以下を行う疑似プリンタを用意すればよさそうです.
・PDF あるいは PostScript 形式のファイルを受け取って,XBM形式に変換する.
・XBM 形式にしたファイルを lpr コマンドの標準入力に送り,MW-260 で印刷させる.
上記を実現した疑似プリンタを実現できれば,当該 Macintosh 上の一般的なアプリケーションから MW-260 を利用するのは簡単で,各アプリケーションのプルダウンメニューから「ファイル」→「プリント」と進んで「プリンタ」を当該疑似プリンタに変更してから「プリント」ボタンを押すだけです.
先日も報告しましたが,この部分には CUPS-PDF を用いました.CUPS-PDF は,ports でインストールできます.CUPS-PDF をインストールすると,CUPS-PDF という疑似プリンタが作られ,Mac OS X 上のアプリケーションから CUPS-PDF に印刷するとPDF 形式のファイルで保存されます.さらに,postprocessing 機能を使えば,生成した PDF ファイル を XBM 形式に変換し,さらにそれを lpr コマンドに渡すのも簡単です.
…というわけで,LPD 環境と CUPS-PDF をインストールした,手元の MacBook(Black) と MacBookPro 上では,全てのアプリケーションが MW-260 対応になりました.
3. 次に,手元の Macintosh *以外の* Mac OS X 機からの印刷にも対応しました.これは,Mac OS X のプリンタ共有のしくみを使ったので,とても簡単に実現できました.
まず,CUPS-PDF 疑似プリンタを「共有プリンタ」として登録する必要があります.これは「システム環境設定」→「共有」の「プリンタ共有」で CUPS-PDF にチェックを入れるだけです.
手元の Macintosh *以外の* Mac OS X 機では,以下に記した 3 ステップで,MacBook(Black) か MacBookPro 経由で 共有プリンタとなった MW-260 を利用できます.再起動などのうざい作業は不要です.
# ε-ARK プロジェクト「北陸チーム」(勝手に命名 ^_^;) の方々は,全員 MacBook をお持ちですので,ぜひおためしください.
・「システム環境設定」→「ファックスとプリント」と進み,左下の「+」をクリックしてプリンタ追加画面を開く.
・しばらくすると「CUPS-PDF@hohno-MacBookPro-01」といったプリンタが現れるので,クリックして選択する.
・プリンタドライバとして「Generic PostScript Printer,1.3」(あるいは「一般的な ポストスクリプト プリンタ」) が選択されていることを確認する.もし,選択されていなかったら,手動で選択する.その上で「追加」ボタンを押す.
上記は,Mac OS X で共有プリンタを利用する標準的な手段ですが,以下の特徴があります.
・Boujour プロトコル (ゼロ・コンフィギュレーション・プロトコル) を使っているので,共有プリンタの IP アドレスを入力するといった作業は不要.
・CUPS-PDF 疑似プリンタが,Mac OS X からは PostScript プリンタに見え,Mac OS X は,PostScript プリンタドライバを「Generic PostScript Printer (あるいは「標準的なポストスクリプトプリンタ」) として標準搭載しているので,プリンタドライバをあらたにインストールする作業は不要.
すなわち,各自の Macintosh で,一度だけプリンタを追加する作業を行う必要がありますが,これはただの設定変更で,ソフトウェアやドライバを新規にインストールする必要はありません.再起動も不要です.
# まぁ,何かをしたらすぐ再起動するというのは,できの悪い別の OS が持ち込んだ悪い文化なだけですから,再起動不要なのがむしろ当然なんですけど…
というわけで,目標としていた「インストールフリー」は実現できました.
なお,Bonjour については,大野もそらんじているわけではないので,Wikipedia などでご確認ください. たとえば → http://ja.wikipedia.org/wiki/Bonjour
4. 最後に Windows 機からの印刷なんですが…
う~ん,良く分かりません.^_^;
Bonjour for Windows を入れ,PostScript ドライバを入れれば動くのでしょうが,確かめていません.今週末には例の真っ赤なPC が来ますので,調査しますが,「インストールフリー」にはならないかもしれません.
一連のデモは,次回の定例ミーティングの際に行います.いつでもどこでも目の前に共有プリンタがあり,簡単に印刷できるのは予想以上に便利です.
CUPS に対応している PICNIC PC からも簡単に印刷できるはずです.
今後は,昨年末から作業を続けている QR コード関連の機能を組み込んでゆきます (これこそが ε-ARKプリンタ環境の本丸です).
————————————————————
長くなりましたが,以上です.
大野 浩之 (Hiroyuki Ohno, Ph.D.)
国立大学法人 金沢大学 総合メディア基盤センター 情報基盤部門長・教授
( PGP fingerprint = D9 2A E9 BB D8 62 16 0F 38 AB A8 C4 4F 46 3E A0 )
—
ε-ARK printer についての全体の説明がないままこのエントリを書くのもいまいちですが、今はとにかく過去を掘り起こしてまとめたいと思っています。
以下は、ε-ARK printer をどうやって Mac OS X のプリンタ環境に組み込むかをプロジェクトメンバに説明したメールです。いま(2013年2月)から4年間のことになります。末尾で QRコードを自動挿入するサービスについて言及していますが、これは翌年に完成し、X4iD 対応のデジタル文書管理システムとして情報処理学会のデジタルドキュメント研究会で報告しています。
========================================
差出人: Hiroyuki OHNO
件名: [e-ark:632] MW-260 プリンタの実装について
日時: 2009年2月12日 01:07:23JST
ε-ARK プリンタへ至るプリンタまわりの話です.
# ε-ARKプリンタの開発を促進するための情報共有を目的にメールさせていただきます.
# 前半は,これまでにもメールで説明したかと思いますが,後半は新ネタです.
brother MW-260 (A6モノクロ USB/IrDA/Bluetooth 感熱プリンタ)は,自前のプリンタドライバを作ったことで,Zark (Zaurus SL-C3100) で快適に動いていることはみなさんご存知のとおりです.
このドライバは C で書き,Zaurus 上の GCC でセルフコンパイルした単なるアプリケーションプログラムで,XBM 形式の 1152×1660ドットのビットマップファイルを標準入力から読み込み,これをMW-260 独自のラスター形式に変換した上で,いくつかの制御コードとともに Bluetooth シリアルポートに書き出しているだけです.
# 実際にはもうちょっと仕事をさせてますが,概略は上記のとおりです ^_^;
# 上記の制御コードは brother社独自のものですが,これ以外にも ESC/P 形式の制御コードを受け付けるモードもあります.
# しかし,ghostscript に含まれる ESC/P プリンタドライバではうまく動きませんでした.
こういう事情ですので,このプリンタドライバを Mac OS X に移のも容易で,すでに実現していますが,これをどうやって CUPS や lpd と組み合わせるかについては課題になっていました.で,ここからが新報告ですが,いろいろ調べるうちに CUPS-LPD という疑似プリンタドライバがあることを知りました.port でインストールできます.ちなみに port info cups-pdf を実行すると,以下のような説明が得られます.
————————————————————
This software is designed to produce PDF files in a heterogeneous network by providing a PDF printer on the central fileserver.
Homepage: http://www.cups-pdf.de/
————————————————————
これをインストールすると,CUPS-PDF というプリンタが作られます.
このプリンタは,論理的には存在しますが,物理的には存在せず,任意のアプリケーション上の印刷画面で,このプリンタを指定して印刷すると,あらかじめ config ファイルで指定したディレクトリに PDF ファイルが書き出されます (たしか Windows だとAdobeAcrobat の商用版とかで同じような機能があったように思います).
嬉しいことに,CUPS-PDF は単に PDF ファイルとして書き出すだけでなく,書き出し後に任意のプログラムを起動する機能(postprocessing 機能) があるので「PDF ファイルを XBM 形式に変換した上で,MW-260 プリンタドライバを起動する」スクリプトを書きさえすれば,CUPS 環境に組み込めそうです.
MW-260 が CUPS のプリンタの一つになれば,どのアプリケーションからも MW-260 に印刷できますし,他の Macintosh や Windows 機からの印刷もMac OS X のプリンタ共有の枠組でできますから,一気に使い勝手がよくなります.
本来の使い方に立ち戻り,Zark に接続した MW-260 に対して印刷する場合ですが,残念ながら Zark では CUPS が動いていません.Zaurus SL-C3100/3200 で動いたという報告も見当たりません.
対応方法は以下の 2つです.
(1) Zark 上で CUPS と CUPS-PDF をビルドしてインストールする. あとは MW-260 を Macintosh に接続した場合と同じ.
(2) CUPS-PDF の postprocessing 機能を活用することにし,まずは Macintosh 上の CUPS-PDF で PDF 化し,これを Macintosh から Zark に送りこみ,PDF 形式から XBM 形式を経てプリンタ駆動までを Zaurus 上で行う.Zaurus への送り込みには,独自プロトコルを使う方法と,lpd を使う方法を検討中.ちなみに lpd は,Zark にインストール済み.
上記 (1) は,CUPS と CUPS-PDF をインストールできるかどうかを確認する必要があります.もしインストールできるなら,この方法で決まりです.一方 (2) は,確実に実現できるものの,ネットワーク上に CUPS-PDF をインストールした Macintosh が 最低 1台は必要というあまりスマートでない問題を抱えます.もっとも,当分はZark が動いている環境には大野の Macintosh が必ずあると思うし,大量のデータを送り込まれかねない場合には,Zaurus の手前に流量制限するしかけがどのみち必要でしょうから.(2) という選択は捨てた物じゃないかもしれません.
このあたりを整理して,MW-260 の利用環境の整備を急ぎます.
この環境整備が終われば,昨年末に東京駅のそばのカフェでひろのぶと相談した「QR コードを自動挿入するサービス」もようやく実装できます.
大野 浩之 (Hiroyuki Ohno, Ph.D.)
国立大学法人 金沢大学 総合メディア基盤センター 情報基盤部門長・教授
( PGP fingerprint = D9 2A E9 BB D8 62 16 0F 38 AB A8 C4 4F 46 3E A0 )
—
2011年3月末までのε-ARKプロジェクトの活動を便宜的に「旧活動」と呼んでいます。
2011年3月末は、総務省戦略的情報通信研究開発推進制度(SCOPE)」における平成21年度新規研究開発課題に地域ICT振興型研究開発として採択された「非常時における地域の安全・安心確保のためのε-ARKデバイスを核とした情報通信環境の研究開発」が終了した時期にあたります。
したがって、旧活動をまとめたホームページは、上記研究開発活動の結果のまとめが大きな割合を占めることになり、当該活動を参照したい方には重要なページとなります。
現在、当時の記録は、ネット上からはアクセスできませんが、復活させる作業を急いでいますのでいましばらくお待ちください。
Raspberry Pi は 3.3V 駆動。多くの Arduino は 5V駆動。
おまけに Raspberry Pi は過電圧耐性がありません。なので、入出力ピンに 3.3V以上の電圧をかけると壊れてしまうと考えることになります。正確に何点何ボルトまでが限界なのかは、データシートを読まないといけない(すいません、読んでないです)のですが、とにかく5.0Vに耐えられないのは確かです。
なお、こういう文脈で「耐えられない」といったことをやってしまっても、実際には動いてしまうことがありますが、こういう文脈での「耐えられない」とは、「何が起きてもあなたのせいよ」という意味です。ただちに火を噴くかもしないし、うんともすんとも言わなくなるだけかもしれないし、全然予期しない動作をするかもしれないし、一時的にせよ正常に動いちゃうかもしれない、ってことです。とにかく、定格を越えたことはやってはいけないのです。
というわけで、両者をつなぐには電圧を変換するコンバータが必要で、そうしない限り(すなわち直結は)ダメだよ、というのが、オリジナルの投稿でのやりとりでした。
なので、電圧を変換すればよいのですが、業務用機器(究極的には軍用機器)を作るのか、アマチュアのお楽しみでよいのかで、対応がまるで違ってきます。
ここでは、アマチュアのお楽しみで良い場合の対応を書きます。
今回の場合は、両者をつなぐ線は、GND線以外は、TxD と RxD しかなく、それぞれに流れる信号は単方向です。なので対応は実は意外に簡単です。
まず 3.3V系(RPi)から 5V系(Arduino)に向かう線は、多分何もしなくても大丈夫です。3.3V系の H レベルはほぼ 3.3V 出ると予想されます。これだけの電圧があれば、5V系でも H と認識されます。
逆方向の 5V系から 3.3V系に向かう線には一工夫必要です。速度がそれほど問題にならないので、抵抗2本で分圧してしまうのが簡単そうです。
というわけで、T君には、抵抗2本使って試してもらって、その結果を報告してもらいたいと思います。
抵抗2本?どうつなぐの?何Ω、なんて言ってるようじゃいけません。SparkFun のサイトにゆけばたくさんの回路図がロハで手に入ります。毎日少しずつでもこれらの回路図を読むととても勉強になりますよ。>> T君
「Raspberry Pi と Arduino をシリアル通信でつなぐ」という記事を見つけた。
以下で紹介する Tweet のように、記事のタイトルどおり Raspberry Pi に純正の Arduino をつなげると Raspberry Pi が壊れてしまうので注意が必要だ。
本文中に指摘があるようにオリジナルのarduinoだとRPiを壊すので要注意。RT @taketo1113: Serial communication between Raspberry Pi and Arduino zite.to/XalnK2 via @zite
— Hiroyuki Ohnoさん (@hohno_at_kuimc) 2013年1月31日
.@hohno_at_kuimc 3.3V の Raspberry Pi に Arduino の 5V をつなげると壊れるよってやつですね。 > RT
— Taketo Takashimaさん (@taketo1113) 2013年2月1日
@taketo1113 そうです。seeeduino は I/O 電圧を切り替えられるみたいです。
— Hiroyuki Ohnoさん (@hohno_at_kuimc) 2013年2月1日