分12はじめに先日,東京のお台場にガンダムの実物大の模型ができました。見に行かれた方も多いのではないでしょうか。CGでどんな映像でも作れる時代ですが,やはり実物というのは迫力が違うものです。ガンダムに対抗するわけではないのですが,本稿では鉄道模型の制御に挑戦してみようと思います。模型であっても,実際に車両が動くというのは格別なものです。普通,制御というとC言語などを使用しますが,ここではPHPからLAN経由で制御するようにしてみました。やって制御しているのか,見ていきましょう。こんなふうに動きますまずは写真のような一直線のレイアウトを動かしてみましょう。普通のNゲージでは電源は1ヵ所だけ供給しますが,今回は5ヵ所に供給しています。これについては,後ほど解説します。直線レイアウトそして,PHPのプログラムはリスト1のようになります。このプログラムをコマンドラインから実行すると,右端に置いた車両が左端まで走行して止まります。"http://192.168.0.100/";file_get_contents($url."?00=C");file_get_contents($url."?01=D");file_get_contents($url."?02=D");file_get_contents($url."?03=C");?>往復運転させるには,リスト2のようにします。{file_get_contents($url."?00=C");file_get_contents($url."?01=D");file_get_contents($url."?02=D");file_get_contents($url."?03=C");sleep(30);file_get_contents($url."?00=A");file_get_contents($url."?01=A");file_get_contents($url."?02=A");file_get_contents($url."?03=A");file_get_contents($url."?04=c");file_get_contents($url."?03=d");file_get_contents($url."?02=d");file_get_contents($url."?01=c");sleep(30);file_get_contents($url."?04=A");file_get_contents($url."?03=A");file_get_contents($url."?02=A");file_get_contents($url."?01=A");}?>見ての通り,複雑なものではありません。これは,PHPから送ったコマンドをコントローラが受けとり,電気の制御を行ってくれているからです。LANから制御する仕掛けNゲージの動く仕組みは,レールにかけた電圧を車輪が受けとり,モーターが回って走行するというものです。電圧を高くすればスピードが速くなり,電圧をマイナスにすれば逆方向に走ります。普通のNゲージのセットでは,電源(パワーパック)からレール全体に電気を供給し,速度と方向を制御するようになっています。駅のところで車両を止めるには,人間が目で見ながら,スピードを落として止めることになります。今回のシステムでは,少し違った方法を採用しました。絶縁レールを用いて,レールを電気的に分割し,部分ごとに異なる電圧を供給できるようにします。駅のところのレールの電気をオフにしておけば,駅のところまで来ると勝手に停止することになります。今回のレイアウトで5箇所に給電しているのは,この方法によるものです。矢印のところで分割されている。このようなシステムには,たくさんの出力があるコントローラが必要です。今回開発したコントローラ(写真)は出力が14組あり,LANからそれぞれの出力を別個に制御できるようになっています。Nゲージではポイントも電気で制御するようになっているので,ポイントとレールを合計で14個までつなげることになります。ちなみに,コントローラにはPICというマイコンを使用しています。コントローラコントローラはHTTPサーバになっており,PHPからHTTPリクエストを送ることで制御します。http://192.168.0.100/?00=Dのリクエストを送ると,00番のレールに電圧が出力されます。Dの部分がコマンドで,表1のようなコマンドが使用できます。車両検出では,これをPHPから呼び出してみましょう。著者プロフィール木元峰之(きもとみねゆき)独立系ソフトハウスに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.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。