タグ

ブックマーク / shokai.org (41)

  • 橋本商会 » IRKitのファームウェアを改造して温度センサーを追加した

    前:IRKitのファームウェアを改造してセンサー読めるようにする /tempeにHTTP-GETすると温度が返ってくるファームウェア https://github.com/shokai/irkit-device/compare/master…tempe_sensor センサーはLM35DZを使っている。電圧から摂氏温度に変換してjsonで返す。今23度だってわかる。 新しいrouteを追加するのに、GS_MAX_ROUTESの数を増やさねばならない事にしばらく気づかなかった。 analog 0〜4を全部読んで、jsonで返してくるファームウェア /sensorsにHTTP-GETするとアナログピン全部読んで返す。 https://github.com/shokai/irkit-device/compare/master…sensors_json なお現在のIRKitだと、この2つを同時に実

    橋本商会 » IRKitのファームウェアを改造して温度センサーを追加した
    shokai
    shokai 2014/04/02
  • 橋本商会 » Raspberry PiでRuby/Arduino/Twitter/webcam

    Raspberry Piが届いたのでセットアップしてArduinoでサーボモーター動かしたり、CdSで明るさ読んでTweetしたり、webcamでJPEGに撮影したりした。 raspbianというほぼdebianなOSを入れたのでかんたんだった。 購入 RSコンポーネンツをキャンセルしてModMyPiでケース付きのを買った。10日ぐらいで届いた。 Makershedでも売ってる。 SDカードにRaspberry Piを書き込む akiroom情報でRaspbian “wheezy”を使うことに。 Amazonで買った16GBのSDHCカードに入れた。4GBあれば足りると思うけど安かったので16GB。 http://www.raspberrypi.org/downloadsからzipでダウンロードしてきて、 MacUSBメモリにUbuntuのインストールディスク作ると同じ手順でSDカードに

    橋本商会 » Raspberry PiでRuby/Arduino/Twitter/webcam
  • 橋本商会 » プログラムを一切書かずに、ネットワーク越しにArduinoを操作する

    sshdが起動しているサーバーにArduino Firmata on Rubyをインストールして、firmataをインストールしたArduinoを刺すだけでok Arduinoの準備 Arduino IDEで [File] -> [Examples] -> [Firmata] -> [StandardFirmata] を書き込む サーバー側の準備 ArduinoをUSBポートに刺す。 rubyのarduino_firmata gemをインストールする。 sudo gem install arduino_firmata arduino_firmata --help arduino_firmata gemをインストールすると、arduino_firmataという実行コマンドが使えるようになる。 arduino_firmata analog_read 1 これだけでanalog 1の値が読める。

    橋本商会 » プログラムを一切書かずに、ネットワーク越しにArduinoを操作する
  • 橋本商会 » mongooseのvirtual attributes

    Query投げて返ってきたDocumentsが関数を持っていて欲しい時にVirtual Attributes使う。 スキーマ.virtual(‘名前’).get(function(){ /**/ }) スキーマ.virtual(‘名前’).set(function(){ /**/ }) でgetter/setterを付けれる。 例えば、MongoDBにはidしか保存しないようにして、permalinkのURL等はidから組み立てる場合、そういう関数はmodelに持たせたい。 実装例 RecipeSchema.virtual(‘url’).get に関数を登録しておくと、 doc.url で呼び出せる。 mongoose_virtual_attr.js var _ = require('underscore'); var mongoose = require('mongoose'); mon

  • 橋本商会 » IOIO for Androidを動かした

    sparkfunによるADK上に作られたphidgets的な環境であるIOIO for Androidのサンプルプログラムを動かした。 ADKはAndroidとデバイスとの接続の仕様なのだが、Androidとマイコン両方のプログラムを書かなければならないので面倒くさい。 IOIOはADKのプロトコルの上で、Androidから出された命令に従ってIOを操作するマイコンボード。Javaのライブラリが提供されているので、Javaを書くだけでAndroidでハードウェアが制御できる。 IOIOのボード上にI2Cのポートがあるので、IOIOにさらに他のマイコンを接続する事もできる。 ■買う スイッチサイエンスで買った スイッチサイエンス/商品詳細 IOIO for Android ■5V電源を作る Read This Before Connectingを見ると、 ・USBコネクタそばのVINに5〜1

    橋本商会 » IOIO for Androidを動かした
  • 橋本商会 » IOIO for AndroidでLEDピコピコ光らせる

    IOIOのデジタル出力を使った。 作ったものはテストなのでどうでもいいとして、IOIOLibをimportして自分で1からAndroidアプリプロジェクトにするところと、Eclipseの設定でハマった事について書いておく。 ■できたもの コード https://github.com/shokai/android-ioio-study/tree/master/LED_Blink Androidの画面上のボタンが3つあって、IOIOのLED3つと対応している。 1つ前の記事で作ったUSB給電ケーブルとeneloopで外でも動かせる。下の4つ目のボタンは気にするな。 動画 ■EclipseのCompiler Compliance Level Eclipse->環境設定->Java->CompilerにあるCompiler Compliance Levelを1.6にする。 これをしないと後述のio

    橋本商会 » IOIO for AndroidでLEDピコピコ光らせる
  • 橋本商会 » IOIO for Androidのアナログ入出力を試した

    IOIOの10bit ADコンバータと10kHz PWM出力を試した。 今回のコード https://github.com/shokai/android-ioio-study/tree/master/AnalogInOut Androidの画面上のシークバーを操作すると、PWMによる擬似的なアナログ出力でLEDの明るさを調整できる。 ブレッドボード上のCdSで明るさを計測して、Androidの画面上のシークバーの長さで表示したりした。 動画 ■準備 まず久しぶりに秋葉原に行ったら秋月が改装工事中だったので、他の店を見て回った。IOIOの開発者が使っているピンヘッダを千石で発見したので買った。 このピンヘッダ、みっしりと敷き詰めるように装着できる。いつも使ってるメスピンヘッダは隣のピンにぶつかるので敷き詰められない。 これでブレッドボードに線を引き出す準備が整いました ■回路を作る ブレッド

    橋本商会 » IOIO for Androidのアナログ入出力を試した
  • 橋本商会 » ZeroMQでOpenCV cvOpticalFlowのデータを配信する

    1VQ9がZeroMQで遊んでたので、俺も橋商会 cvCalcOpticalFlowBMをZeroMQでpubしてみた。ZeroMQはなんか面倒な事を適当にやってくれるmessaging libraryで、色々な言語のバインディングが出ている。 ZeroMQのpubはセンサーのデータとかを垂れ流しにするのに都合がよさそう。 clientが何台いるかどうかを考えないで良いし、pub/subどちらが先に起動していても適当に接続処理をしてくれる。cookbookを見てるとmulticastやthread間通信にも使ってる。とりあえずセンサーデータ垂れ流しという用途に俺はよく使いそう。 ソースコードはgithubに置いた。 他にも単純なカウントアップのpub/sub両方をC++/C/Rubyで書いた(6種)のと、twitterのstream APIをZMQ_PUBで中継するのを作ってみた(解説:

  • 橋本商会 » JRubyでglitch iconを作る

    こういうのをtwitter iconにしたかった Twitter のアイコンの目を光らせるライフハック – 地獄の日記を参考にアニメgifを作った。末尾も3C2Cにした。 でもちょうど今日からtwitterGIFアニメアイコンのチェックを厳しくしたらしく、最初の1フレームだけの静止アイコンになってしまう。 既にアップされている他の人のアイコンを見ると、3C00002Cとかになってるのもあったけど色々ためしたけどやっぱりアップロードすると静止画像になる。 画像を生成するスクリプト jrubyでjavax.imageioを使うと簡単。 最後のあたりのコメントアウトしているconvertかffmpegどちらでも、アニメーションgifを作れる。 glitchicon.rb #!/usr/bin/env jruby require 'java' import 'java.lang.System'

    橋本商会 » JRubyでglitch iconを作る
  • 橋本商会 » PSoC – CY8C29466の14ビットADコンバータを内蔵マルチプレクサで切り替えて複数ピンで使う

    14ビットのADコンバータ1つと、AMUX4(4チャンネルアナログマルチプレクサ)を組み合わせると複数のピンからAD変換が使える。 というかPSoC Designer4.xでADCINC12を使っていた頃は、ADCINC12を複数置くことができたのにPSoC Designer5.0では1つしか配置できなくて困った。 でもよく考えたらマルチプレクサ使う方が自然だな。 アナログブロックの接続 マルチプレクサを切り替えるとPort0の0,2,4,6番ピンに接続できる ピン配置 右上のADC以外は関係ない PGAの設定 1.0倍で、AMUXがあるアナログマルチプレクサ1に接続する。 ADCINCの設定 Negative Inputのソースは一応指定するが、GainをDisconnectedにすると使わないようにできる。 AMUX4の設定 Interconnect Viewには表示されないけど、配置

    橋本商会 » PSoC – CY8C29466の14ビットADコンバータを内蔵マルチプレクサで切り替えて複数ピンで使う
  • 橋本商会 » mbedで取得したセンサーの値をsinatra+tokyocabinetで保存する

    まずセンサーのデータを時系列で溜めたり、取り出したりするためのwebサービスをsinatra+TokyoCabinetで作っておいた。 http://shokai.mag.keio.ac.jp/sensor-storage/ そこにmbedのADコンバータでCdSの明るさを計測、LEDを点灯/消灯 と mbedにEthernetを接続しtwitterにpostするを合体させ、約10秒間隔でセンサーの値をhttp-postしまくった。 一度web APIが出ている場所にマイコンの情報も保存しておけば、あとでマッシュアップできて便利になる。このAPIの下にmbedでもgreasemonkeyスクリプトでも何個でもぶら下げられる。 mbedからwedataに保存しても良かったんだけど、あえて自分で作ってみた。 ■mbedで明るさを計測してhttp-postする 作った回路。CdSで明るさを取得し

    橋本商会 » mbedで取得したセンサーの値をsinatra+tokyocabinetで保存する
  • 橋本商会 » OpenCVで画像のだいたいの色を求めるgearman workerを作って、Rubyから呼び出す

    画像のだいたいの色を求めるをgearman worker化した。 画像ファイル名をテキストで投げると {width: 136, height: 147, r: 249, g: 234, b:230} という形式で画像のサイズとだいたいの色を返す。 Cでworkerを書いてRubyで呼び出す方法は橋商会 Cでgearman workerを書いてRubyのclientから呼び出すに書いたとおり。 これでOpenCVの解析をgearman workerとして複数並列に動かしてそれをRubyから使いまくるというのができるワハハ C++なのはboost::regex_splitでも使って引数を受け取ろうかと思ってたんだけど、そもそもファイル名だけしか受け取らなかったから意味がなかった。 imgcolorWorker.cpp // 画像のだいたいの色とサイズを返すgearman worker #in

  • 橋本商会 » OpenCVで画像のサイズを求めるgearman workerを作って、Rubyから呼ぶ

    ファイル名を渡すと画像サイズを返すgearman workerを作った。 {"width":1600, "height":1200} という風にJSON風に値を返す。 以前画像のだいたいの色を求めるgearman workerを作ってたんだけど、C++で書いたworker側を単独で動作テストする事ができなくてどうしようか悩んだ。テスト用のclientと同時に作らなければならなくて、どちらにバグがあるのか切り分けるのが面倒だった。 そこで、workerの起動時に ./imgsizeWorker --test "/path/to/imagefile.jpg" という風にgearman clientから来る引数と同じ形式で渡すと、単体のプログラムとしても動作チェックできるようにした。 こうすると普通にworkerとして起動する。 ./imgsizeWorker -s localhost -p 7

  • 橋本商会 » Cでgearman workerを書いてRubyのclientから呼び出す

    gearmandをソースからインストールして、Cライブラリのlibgearmanが使えるようになった。 これでC言語でworkerを作ってRubyのclientから呼び出せる。環境はUbuntu9.04とgearmand0.11 ■Cでworkerを書く str_reverseというアビリティを持つworkerを作る。 ほぼAPIドキュメントのままだが、jobの引数を受け取るのと、値を返せるようにがんばった。ジョブ失敗した時とかのエラー処理全然書いてない。たぶんenum gearman_return_tを返せばいいんだろうけど strreverse-worker.c // 文字列をreverseして返すworker #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include 

  • 橋本商会 » LaTeXで修論を書く

    (橋商会 LaTeXで修論を書く会(mac版)の資料でした) 修論を開発するのに使った環境についてまとめておく。 TeXをはじめて使って、最初は文章を書いてるんだかマークアップエンジニアになったんだかわけがわからなかったが、Amazonで検索してJabRefに書誌情報を放り込んでbibtex形式で管理してTeXに読み込んだりとか、慣れるといろいろと便利だったので。 TeXの解説というと、タグをひとつずつ説明してばっかりでいつになったら文章を書き始められるのかわからないページが多いけど、とりあえずこんな順番でやってみると全体がどういう構造になってるのかがわかって、SFCの修士の人は幸せになれるんじゃないかな 最初のmacportsが難関すぎる気もするが。 macportsをインストールする macportsでplatex-utf8、bibtex、dvipdfmxをインストールする とりあえ

  • 橋本商会 » Rubyでwavファイルをいじる WavFile.rbを作った

    gemにしました → 橋商会 wavファイルをRubyで編集する ***** Rubyでwavファイルを操作するためにWavFile.rbを作った。スピーカから音を鳴らすのではなくて、wavファイルそのものをいじって合成したりつなげたり、逆再生や左右反転させたりした後ファイルに書き出す為に作った。 packやunpackを使ってRubyでバイナリを読み書きする部分でかなり苦戦したけど、WAVファイル – MoonRock@MoonRock/A mere diary (2002-2)(7年も前に同じような事やってる!)がすごく参考になった。attr_accessorとかも知らなかったから勉強になった。 http://shokai.org/projects/ruby-wavfile/にサンプルを色々置いておく。 例えば、逆再生のwavファイルを作るコードはこう書ける reverseWav.r

    shokai
    shokai 2009/12/14
    年末年始はgemの作り方を勉強しよう。gemcutterが今はいいんだっけ?
  • 橋本商会 » ユビキタスコンピューティングにおけるラピッドプロトタイピングのデザインルール

    昨日、電車で帰る時に吉田さんと話しててやっと言語化されたのをdirtyにメモっておく。 「処理系よりもライブラリ」という視点から技術を選び、3つのデザインルールを使い分けるからこそ、ラピッドなプロトタイピングが可能になっている、という仮説。 奥出研究室ではユビキタスコンピューティングという領域で、色々なモノ(サービスやプロダクトなど)が開発されて、発表されている。その成果物を人に見せ理解してもらったり、自分でこりゃ違うよなと思い直して洗練していくために「デモ」を作る。 その、ラピッドにプロトタイピングしている時、自分が何を考えているか、設計思想・デザインルールを省みてみた。 デモプロトだから、最初から商品レベルで工場動かして…となる筈はない。見せて説得し理解させるのが目標で、部分によってはクオリティを気にしない部分もある(筐体から線が大量に出ていたり) ■デザインルール 俺達は多分3つ意識

  • 橋本商会 » Twitterの地名なうbotを全blockするOAuthアプリ

    http://shokai.mag.keio.ac.jp/block_nowbots/から使える。 (8月15日:URL変更しました) とりあえずSinatraとOAuthの組み合わせを試してみたかったので、DBは使わないものを作りたかった。取得したOAuthのtokenなどはその場で捨てている。blockコマンドを送る権限だけを一時的に委譲してもらう。 以下技術的なことのメモ。 ■OAuthアプリの登録 まずhttp://twitter.com/oauth_clientsでアプリを登録し、consumer keyとconsumer secretを取得する。 で、下のコード中のCONSUMER_KEY, CONSUMER_SECRETを書き換える。 ■必要なライブラリ 必要なgemをインストールする。最新版にした。 sudo gem install oauth twitter sinatr

    shokai
    shokai 2009/08/13
    gotanda_now,osaki_now,shinagawa_now,tamachi_now,shinbashi_now,yurakucho_now,meguro_now,ueno_now,yamanote_now追加
  • 橋本商会 » twitter上で親しい人のタイムラインを動的に生成するYahoo Pipes

    修論を出した後のテンションでまたYahooPipesを作った。 → Pipes: twitter dynamic timeline 親しい人で動的にタイムラインを作るpipes。 しくみは単純で、最近favを付けたり付けられたり、replyしたりされたりした相手でタイムラインを作る。 自分の発言内容やそれに対する相手の反応によってメンバーが動的に入れ替わる。 これの面白いのは、キーワードでの振り分けと異なりごく普通にtwitterを使っているだけでタイムラインが親しいメンツに変わっていく。 一見流動性が無いように見えるが、自分をふぁぼったりreplyしてきた人は入ってくるし、その人にreplyしたりfavし返せばしばらくはdynamic timelineに入り続ける。相手をfollowする必要すらない。 忙しくてtwitter見れない時は、これだけ見ておけば親しい人のpostはだいたいチェ

    橋本商会 » twitter上で親しい人のタイムラインを動的に生成するYahoo Pipes
  • 橋本商会 » Playstation EyeをOpenCVで使う

    プレステ3のカメラをWindowsのVisualStudio2008環境のOpenCVで使う方法をまとめる。 ゲーム用の画像解析用のカメラなので 解像度は640×480もしくは320×240と高くは無いが、320×240の時は最大120FPSでキャプチャできる レンズのモードを切り替える事が出来て、かなり広角になる オートフォーカスが無いので画像処理しやすい ゲインやホワイトバランスの調整が高速 4000円前後で手に入る。性能の割に安い などの利点がある。また、後述するWindows用のドライバを使うとゲインやホワイトバランスを任意の値にしたり、自動調整をオフにしたりできるので画像処理には便利。 この記事で使ったプログラムは全部OpenCV勉強リポジトリにアップロードした。 ■準備 詳しくはVS2008 OpenCVでPlaystation3 eyeを使うにまとめた。 Macではmacam