Androidのメモとか

ポキオの日記です。今日も遅延してない。

百均で売ってるグッズで鉄道模型のジオラマを作り始めた

だんだんIoTとか関係なくなってきましたね。

View this post on Instagram

横浜駅ができました。

A post shared by pokio (@pokiiiiio) on

リーズナブルにやっていき

鉄道模型とか、そのジオラマって、作るのにお金がかかりそうなイメージがあったんですが、意外と百均グッズで揃えられるんじゃない?みたいな淡い期待とともに、ジオラマ作成を始めてみました。

すごいな百均

A4サイズのOSB合板、100円で売ってるんですねぇ。そして、芝生調シートというシールタイプの起毛シートも100円。

ポキオ 鉄道模型 ジオラマ 百均

合板に芝生調シートを貼り付けて、レールを釘で打ち付ければ、なんかそれっぽくなりますよね。持ち運びのことも考えて、分割できるようにしてみました。

ポキオ 鉄道模型 ジオラマ 百均

合板の裏側は、机を傷つけないようにフェルトを貼ってみました。これも100円。

ポキオ 鉄道模型 ジオラマ 百均

これで、なんとなくそれっぽくなりました。

ごめんなさい案件

駅舎は、京急バージョンのカプセルプラレールのものを使います。400円相当、百均グッズじゃないです。

ポキオ 鉄道模型 ジオラマ 百均

レールもトミックスさんのレールを使います。

釘はカトーさんのやつ。(何でも良かった)

KATO Nゲージ 釘 13mm 24-015 鉄道模型用品

KATO Nゲージ 釘 13mm 24-015 鉄道模型用品

  • メディア: おもちゃ&ホビー

今後どうするか

今回、駅舎がカプセルプラレールのものを使いましたが、駅だけだと寂しいので、なにかストラクチャーを追加したいですねぇ。ただ、Nゲージ用はちょっと高いので、どうにかしてリーズナブルに追加していきたいところです。

リーズナブルなストラクチャーとかってあるんですかね・・・?

京急の鉄道模型をESP8266で動かそうと思った話②

今度は動いたよ!

ポキオ 京急 鉄道模型 Arduino ESP8266 DRV8830

前回まであらすじ

マイコンボードで鉄道模型を走らせるべく、いろいろ試していました。

relativelayout.hatenablog.com

マイコンボードのピンからの出力でも走るかな?と思ったんですが、これを見た方からいろいろなアドバイスやお叱り・マサカリを頂き、今回の第2話で再度チャレンジという流れです。

やっぱりモータードライバー

結論から言うと、DRV8830というモータードライバーを使いました。

ポキオ 京急 鉄道模型 Arduino ESP8266 DRV8830

akizukidenshi.com

秋月で230円。お手頃な価格の一方で、このモータードライバーはマイコンボードとI2C接続できるので、モータードライバーへ与える電圧の生成やanalogWrite()といった関数がもともと用意されていないような某ボードでも簡単に扱えるものとなっています。

とりあえず逝っとけダイヤ的なアレ

いやー、結線も楽だし、ちゃんと動くし、I2C楽だわぁ・・・。ヘタレなので、これで十分でございます。一方で、スペックシートにかかれている通りに、バイト列を送信しなければいけないので、それだけはちゃんと実装する必要があります。

実装例

だんだん速くなって、急に止まって、逆方向にだんだん速くなって、また急に止まるような動作確認用のコードです。

#include <Wire.h>
#define SDA 13
#define SCL 12
#define ADDR 0x60

void setup() {
  Wire.begin(SDA, SCL);
}

void loop() {
  writeData(0x00, 0x00, 0x00);
  delay(1000);

  for (int i = 0x06; i < 0x3F; i++) {
    writeData(0x00, i, 0x01);
    delay(1000);
  }

  writeData(0x00, 0x00, 0x00);
  delay(1000);

  for (int i = 0x06; i < 0x3F; i++) {
    writeData(0x00, i, 0x02);
    delay(1000);
  }
}

void writeData(byte reg, byte vset, byte data) {
  int vdata = vset << 2 | data;
  Wire.beginTransmission(ADDR);
  Wire.write(reg);
  Wire.write(vdata);
  Wire.endTransmission(true);
}

これも、当たり前と言えば当たり前なんですが、ちょっと電圧をかけたぐらいでは鉄道模型は走らず、ある程度電圧をかけないと動いてくれません。例えば低速走行をやりたいときは、実際の挙動を見つつ、適切な電圧を見つけてあげる必要がありそうです。

ちなみに、嫁氏が京急のカプセルプラレールで横浜駅を引き当ててきたので、今後使わせていただきます・・・(笑)

参考文献

京急がなかなか遅延しないので enebular と Firebase で仮想の鉄道会社運行情報ページを作る

今はなき1000形。

ポキオ 京急 enebular Firebase

京急を合法的に遅延させる

今まで、いろいろな京急ガジェットを作ってきて、遅延の可視化をしてきましたが、如何せん京急はなかなか遅延しません。

遅延しないので、作ったガジェットたちのテストがなかなかできず、未評価のまま運用せざるを得ない状態でしてた。いっぽうで、京急を力づくで遅延させたり運転見合わせに追い込んだりするのは神への冒涜であり、あわせて諸々の法律法令に基づいて処罰されてしまいます。そんなことは絶対にしてはいけません。

線路立ち入りとか絶対に駄目です。

開発環境を整えればいいのでは

京急開発環境、略してKDEですよ。

KDE第一弾として、仮想の運行情報ページを enebular とFirebase を使って作ってみようと思います。

  • 運行情報は Firebase のリアルタイムデータベースで管理
  • Webサーバー(運行情報ページ)を enebular で構築
  • 運行情報ページがGETされたら、 Firebase に問い合わせて運行情報を取得し、それを埋め込んだHTMLを返す
  • 運行情報の変更は、面倒なので enebular の Node-RED フロー上から行う

こんな感じで、ゆるーく作ってみようと思います。

enebularのNode-REDフローでメインの処理を設計

結論から言うと、こんな感じ。

ポキオ 京急 enebular Firebase

いやー、ノードが豊富なので、ほとんどプログラミング不要です。素晴らしい。GETをトリガーにFirebaseに情報を問い合わせ、テンプレートノードでその情報をResで返すHTML内に埋め込みます。HTMLはBootstrapのリファレンス実装をほぼパクって作成。

<!doctype html>
<html lang="ja">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
        crossorigin="anonymous">

    <title>ポキオ急行</title>
</head>

<body>
    <div class="jumbotron">
        <div class="container">
            <h1 class="display-4">ポキオ急行</h1>
            <p class="lead">ポキオ急行線では全線にわたり10分以上の遅れ・運転見合わせが発生または見込まれる場合に運行情報をお知らせしております。運転再開見込み等の時間については、あくまで目安であり状況により変更になる場合がありますのでご了承ください。</p>
        </div>
    </div>

    <div class="container">
        <div class="card bg-light">
            <h5 class="card-header">鉄道運行情報</h5>
            <div class="card-body">
                <div class=unko-panel>
                    {{{payload.message}}}
                </div>
            </div>
        </div>
    </div>



    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
        crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
        crossorigin="anonymous"></script>
</body>

</html>

{{{payload.message}}}という形で、payloadの中身を埋め込みます。また、本家京急のHPを参考に、運行情報はunko-panelのdivでくくっています。

Firebaseの構成はシンプルに

ポキオ 京急 enebular Firebase

運行情報の文字列と、適当に定めた運行情報コード(Integer)をストアできるようにしておきます。

いざ動作確認

enebular上で発行されるテンポラリのURLを使って、ブラウザからアクセスしてみました。

ポキオ 京急 enebular Firebase

ページのルックアンドフィールは別として、ちゃんと運行情報を表示できていますね。ここで、フロー上から運行情報を変えて、再度URLにアクセスしてみると・・・

ポキオ 京急 enebular Firebase

ちゃんと、反映できてますね。これで運行情報のモックができそうです。

京急の鉄道模型をESP8266で動かそうと思った話①

出発進行。

ポキオ 京急 鉄道模型 ESP8266 Arduino

ついに鉄道模型に手をだしてしまう

以前、鮫洲駅おとどけいきゅうで買った京急リラックマトレインのBトレインショーティ。

この可愛らしい電車ですが、別売りのモーターユニットを取り付けると、いわゆるNゲージ鉄道模型として動かすことができます。鉄道模型と言っても、レールに12V以下の直流の電気を流して、電車がそれを拾ってモーターを動かすという仕組み。愚直に12Vを流さずに、5Vとか3.3Vでも動けば、簡単にマイコン鉄道模型を制御できるのではと思い、ちょっとやってみました。

ちなみに、モーターはバンダイ純正のユニットを使います。

まずは5V

ESPr Developerの5VピンとGNDピンをレールにつないで走らせてみました。

5Vでも結構速く走りますね。ちなみに、レールは車両の長さが短い鉄道模型用の、カーブがきついやつを使っていますが、この速さだと脱線事故が起こりそうなので、よしなに制御したほうが良さそうです。

レールはTOMIX製を使っています。

次に3.3V

今度は3.3Vピン。

View this post on Instagram

3.3Vだとこんな感じ。遅くはない。

A post shared by pokio (@pokiiiiio) on

このくらいの速さがちょうどいいかもしれませんね。

最後にGPIOピン

ESP8266のGPIOピンで、AnalogOutputとDigitalOutputをためしてみました。・・・が、電流不足なのか鉄道模型は走りませんでした。細かい速度制御は、やはりモータードライバーをつかって制御する必要がありそうですねぇ。

enebular developer Meetup Vol.4で話してきました

わしょーい。

ポキオ enebular developer Meetup Vol.4 Clovaにセンサー値を聞いてみる

久々のウフルさん

やってきました、神谷町。

enebular.connpass.com

今回は、enebularということで、Clovaスキルに関するお話をさせていただきました。

speakerdeck.com

デモはなんとか成功。オレオレClovaスキルなので、バックアップ起動ワードを準備していて正解でした・・・(笑)

「ポッキー大好き」という起動ワード、めっちゃ恥ずかしいんですが、確実に起動できるんですよねぇ(笑)

enebular、奥が深い

皆さん、いろいろなお話をされていて、創作意欲がさらに高まりました。ここまでツールとかボードが揃ってくると、真面目にユースケースを考えて、いいサービスをおっ始めたくなりますね。

懇親会で、まさかのBrewdog!

ありがとうございますありがとうございます!

ポキオ enebular developer Meetup Vol.4 Clovaにセンサー値を聞いてみる

やろうよ、enebular

とにかく、クレジットカード登録不要で無料なので、enebularは超オススメですね。

一方で、Node−REDでしょ?みたいな認識でしたが、いろいろ可視化ツールも揃っているとのことなので、温度・湿度とか可視化してみたいなぁという新たな目標ができました。

ポキオ enebular developer Meetup Vol.4 Clovaにセンサー値を聞いてみる

実際に弊社のオフィスで湿度・温度を測ってみると、カラッカラということもよく分かる。これを可視化して、いかにカラッカラなのかとか、潤ってるフロアはどこなのかを探してみたり、なんだか面白そう。

あとは、デプロイ先のherokuもちょっと触ってみたいですねぇ。

しかし、Obnizほしいなぁ・・・。

直近のイベントなど

わっしょいわっしょい!

enebular developer Meetup Vol.4

enebular.connpass.com

少し前のIoTLTがきっかけで、enebularのMeetupで登壇させていただくことになりました。 内容は真面目なことを話そうと思いますが、ウケが悪かったら京急ネタを出そうと思います(笑)

もし参加される方がいらっしゃいましたら、内容がつまらなくても笑ってあげてください。

ウイングアークフォーラム2018

www.wingarc.com

こちらもご縁があり、LTをさせていただきます。いま、裏で進めている京急ネタの新作を披露できればと思ってます…。

月刊I/O

https://www.kohgakusha.co.jp/io/

Node-REDを活用例として、電子ペーパーを動かした話を寄稿させていただきました。初めての雑誌寄稿でかなり震えてます。

その他

京急ネタですが、今まではリアルな運行状況を監視するものを作ってましたが、今度は仮想的に運転見合わせや列車遅延を起こせる環境を作ってみようと思います。進捗があれば、改めて記事を書こうかと思います。

Nefry BTとDHT11で温度・湿度を秒で取得する

久々のNefry案件。

ポキオ Nefry BT DHT11

神モジュールに神ライブラリ

とりあえず、なんとなく室内環境を可視化したいと思い、1つのモジュールで温度・湿度が取れるDHT11を買ってみました。

端子は3つ。5VとGNDと信号線。信号線ってことはいろいろ実装しなければならないのかなと思いきや、安心と信頼のAdafruitさんから素晴らしいライブラリが出ていたので、あとは間違えずに配線するだけです。

Good for 20-80% humidity readings with 5% accuracy

Good for 0-50°C temperature readings ±2°C accuracy

Overview | DHT11, DHT22 and AM2302 Sensors | Adafruit Learning System

精度はアレですが、非常に廉価なので問題ないでしょう。

今回は、センサーの値を直接確認できるように、ディスプレイ付きのNefry BTで動かしてみました。

実装はArduino IDE

まずはライブラリをインストールします。

ポキオ Nefry BT DHT11

ライブラリマネージャーからDHT Sensor Library by Adafruitを探してインストール。これで実装・・・と思ったんですが、これだけではだめで、Adafruit Unified Sensor by Adafruitも必要になりますので、未インストールであればインストールしておきます。(これがないとコンパイルが通らない)

ポキオ Nefry BT DHT11

これこれ。このライブラリがあれば、信号線のピン番号で初期化して、あとはreadHumidity()だったりreadTemperature()を行うだけ。簡単すぎて逆に引きます。

Nefry BT向けのコードはこちら

#include <Nefry.h>
#include <NefryDisplay.h>
#include "DHT.h"

DHT dht(A0, DHT11);

void setup() {
  dht.begin();
}

void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  NefryDisplay.print("DHT11");

  if ( isnan(humidity) || isnan(temperature) ) {
    NefryDisplay.print("---[%]");
    NefryDisplay.print("---[deg C]");
  } else {
    NefryDisplay.print(String(humidity) + "[%]");
    NefryDisplay.print(String(temperature) + "[deg C]");
  }

  delay(1000);
}

いざ動作確認

動いてますねー。

ポキオ Nefry BT DHT11

たまにセンサー値がnanになるので、そのハンドリングはちゃんと実装しておいたほうが良さそうです。なにはともあれ、秒で実装できる素晴らしいモジュールでした。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。