第1回では,蓄光テープにLEDで像が描けるのを確認しました。第2回では,センサを使い蓄光テープをエンドレスにたどることができるのを確認しました。今回は,蓄光テープにPCから文字を描画してみます。HTTPでの文字送信さて,ひとつ悩ましいのが通信方法です。ライントレーサですから無線を使いたいというのもありますが,どうせ電源ケーブルがついているのだから有線でもいいという考えもあります。無線ならBluetooth,Zigbee,無線LANなどが考えられます。有線ならUSB,シリアル,LANなどが考えられます。それぞれ一長一短あるのですが,今回はどのプラットフォームでも使え,トータルの開発の手間が少ないという点を評価して,LANを使いました。今回取り付けたネットワーク(LAN)モジュール一昨年,NゲージをPHPから制御するという記事を書きました。このとき使ったLANモジュールを今回も使います。NゲージのときはPCからHTTPリクエストを受け付けていましたが,今回はPCにHTTPリクエストを送って文字イメージを受け取っています。動画を見てみましょう。PC側ではApacheとPHPが動いています。描画するメッセージをWebから受け付けるのと平行して,ライントレーサからのリクエストに応じて文字イメージを生成しています。今回はASCII文字のみ対応としたので,gdライブラリの内蔵フォントを使いました。動画を見ると,文字と文字のあいだが少し空いていますが,これは文字を描き終わってから次の文字をリクエストしているためです。ライントレーサ側を工夫して,文字を描いているあいだに次の文字イメージをリクエストするように改良すれば,文字間を詰めることができます。通信中はモータを止めてしまうという方法も考えられます。HTTPリクエスト+PHPを使ったわけさきほど「トータルの開発の手間が少ない」と書きましたが,もう少し詳しく見てみましょう。今回のシステムは,ライントレーサが蓄光テープをたどりながら,LEDで文字を出力します。すると,たとえば折り返し地点でテープが途切れたところで描画をいったんやめ,次のテープ上まで進んだら描画を再開する,といったことをやりたくなるかも知れません。このためには,ライントレーサがPCにデータを要求し,これにPCが応答するという仕組みが自然です。ライントレーサが自分の進み具合に応じて要求を出せば,その分だけデータが送られてくるからです。反対に,PC側が決まったスピードでデータを送る方法だと,フロー制御のような仕組みが必要になり,複雑化してしまいます。NetWalkerをLANケーブルでつないだだけですもうひとつ,メッセージを受け付けて文字イメージに変換する処理があります。これをどう実装するか決めないといけません。将来的にフォントを変更することを視野にいれると,TrueTypeなどのフォントを扱えるプラットフォームが有利です。今回のシステムではPHPを選択したのですが,前項のLANとも親和性が高く,フォントも扱え,Webベースの入力インターフェースも作れるというおまけまでつきました。実際の処理ですが,あまり面倒なことはしたくなかったので,メッセージが入力されたらテキストファイルに追記するようにしました。ライントレーサ側は,どこまで進んだかをパラメータで渡します。これによって,追記された分だけを描画することができます。最初だけは,ファイルの最後に移動するようにして,毎回全メッセージを描くのを避けています。type=submit></FORM><HR></BODY></HTML>シリアル通信を使うならせっかくですので,LAN以外の方法のヒントも紹介しておきましょう。シリアルを使い,Windows用のGUIアプリも必要だった案件です。ボタンを押すとシリアルにコマンドを出力するだけなのですが,このためだけにわざわざ本格的な開発環境を入れたくはありません。そこで,XULRunnerというプラットフォームを使いました。これはFirefoxの枠組みだけを,独立したアプリケーションとしたもので,XULというHTMLライクな(というと語弊がありますが)GUI記述言語とJavaScriptを使うことで,プログラムを動かすことかできます。Windows,Linux,Macのいずれのプラットフォームにも対応しています。XULRunnerはシリアルの出力はできません。dump()を使用することで,コンソールにデバッグメッセージを出力することができます。これをCOM1などにリダイレクトしてあげれば,GUIのボタンを押したときにコマンドをシリアルに送ることができます。Linuxなどの場合は,標準入力を/dev/tty*に出力してあげる簡単なプログラムを作り,setuidしておけばよいでしょう。残り少ない夏休みですが,みなさんもぜひ面白いものを作ってみてください。LAN著者プロフィール木元峰之(きもとみねゆき)独立系ソフトハウスに8年間勤務,パッケージソフトの開発や記事執筆などを行う。現在はフリーのコンサルタント。SWESTなどのワークショップで分科会のコーディネータを務める。デジタル回路設計歴30年,プログラミング歴27年。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。