tag:blogger.com,1999:blog-33711002898757225282024-03-14T13:13:16.620+09:00cyclic landscape週末プログラミングメモnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.comBlogger39125tag:blogger.com,1999:blog-3371100289875722528.post-32707779794913734732019-01-06T16:18:00.000+09:002019-01-06T16:18:01.462+09:00Qiita はじめましたnikotan - Qiitanikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-36233902709675797062018-07-07T17:43:00.001+09:002018-07-08T08:37:41.098+09:00体重計をインターネットにつないでスマートスピーカーと連携させてみた体重計を改造して、測った体重を無線LAN経由でクラウドに記録できるようにしてみました。さらに、一台の体重計を家族で共有するために、スマートスピーカーで誰の体重かを知らせてあげられるようにしました。
体重計の改造
一般に、デジタル式の体重計では、ひずみゲージセンサを使った「ロードセル」というデバイスで重さを計測しています。このロードセル、単体でも入手できますが、体重計を作
るなら、市販の体重計をばらしてロードセルと筐体をそのまま流用してしまったほうが、手間もコストもかからず楽です。
というわけで、タニタのシンプルなデジタル式体重計(HD-661)を購入して分解・改造。ロードセルを使った重さの計測には、HX711というICチップを使ったロードセル用のADコンバータを、マイコンには無線LAN内蔵のESP-WROOM-02(ESP8266)を、体重の表示には4桁の7セグメントLEDとロジックnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-2858016778266613772018-05-27T09:01:00.000+09:002018-05-27T09:01:01.367+09:00無線LAN&BluetoothモジュールESP-WROOM-32とBLEタグで誰かの在宅状況を見守ってみる子供のランドセルとかに付けたBLE(Bluetooth Low Energy)タグのIDをモニタリングして、家から出発したり、家に帰ってきたことを検知してLINEに通知してくれる見守りセンサを作ってみました。
見守りセンサの方には、無線LANとBluetoothが一体になった小型モジュールで数百円で入手できてしまうESP32 (ESP-WROOM-32) を使います。前回のESP8266と同様、技適取得済みで安心、入手も容易です。
BLEタグの方には、例えばmamorioなどの紛失防止タグをそのまま使います。要は、BLEのadvertisingパケットを出し続けてくれてればOK。
苦労したポイントだけまとめておくと、、、
ESP32上で無線LANとBluetoothを同時に使うときのメモリ不足⇒ Arduino IDEでのビルドオプション変更で解決
ESP32上で無線LANとnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-14849247125609155272018-04-30T17:35:00.000+09:002018-05-10T21:37:21.748+09:00無線LANモジュールESP-WROOM-02と傾斜スイッチでポストへの投函を検知する電池駆動センサを作ってみた個人でも安く容易に入手できて、かつ技適取得済みで安心の、ESP-WROOM-02(ESP8266)。恥ずかしながらつい先日教えてもらって初めてその存在を知ったので、使い方の勉強がてら動くものを作ってみました。
今回作ったのは、家のポストにモノが投函されたことを検知してIFTTT経由でLINE通知してくれる電池駆動のセンサ。仕上がりはこんな感じ。
我が家のポストは外にあって電源が取れない場所にあるので、ESP-WROOM-02の「deep sleep」機能(超低消費電力でのスリープ動作)を使って、乾電池での長期間駆動を目指します。似たようなことをやっているINTERNET Watchの記事などを参考に、以下の方針で作りました。
普段はESP-WROOM-02はdeep sleepモードで寝かせとく
ポストにモノが投函されたことをESP-WROOM-02のリセットピンにつないだ傾斜nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com1tag:blogger.com,1999:blog-3371100289875722528.post-64509141904504282972018-04-22T15:09:00.001+09:002018-05-10T21:36:55.520+09:00Raspberry PiとWEBカメラで洗濯機の動作状況をモニタリングして、洗濯終了をLINEに通知するIoTボットを作ってみた家の一階にある洗濯機で洗濯が終わったかどうかを、二階のリビングにいても分かるようにしたい!というわけで、タイトルのとおりです。
洗濯終了を判定するための手がかりとしては、洗濯終了時に鳴るビープ音、洗濯機の使用電力(電流)、などがありそうですが、今回は操作パネルの表示を使います。我が家の洗濯機には、操作パネルの中に洗濯終了時にだけ点灯する場所があったので、この場所の点灯状況で洗濯終了が自動判定できちゃいます。
Raspberry PiにつないだWEBカメラで操作パネルの特定位置の点灯状況を判定するだけなんですが、操作パネルをうまく写せるカメラの固定場所があまりない、というのが実は問題です。ちょっと離れた場所から監視せざるを得ないので、向きをざっくり合わせるだけでも使える、とか、カメラが多少動いたりしても使える、とかするための工夫が必要です。
基本的な方針は以下の通りですが、点灯nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-73020498313306071872016-04-09T23:43:00.001+09:002016-04-10T00:28:21.010+09:00LINE BOT APIで翻訳ボットを作ってみた巷で話題のLINE BOT API、面白そうなので、試しに翻訳ボット(送った文章を、日本語は英語に、日本語以外は日本語に、それぞれ自動翻訳して返すだけのLINEアカウント)を作ってみました。単純だけど反応良く動いてて楽しいです(*^^)v
翻訳のところはMicrosoft Translator Text APIを使って、webscript.ioで動かしてます。諸々、以下の記事などを参考にさせていただきました。
webscript.ioでLINE BOT APIの事始め - No Regret No Life
Microsoft Translator APIを使ってみる - Qiita
webscript.io上のコードはこちらに備忘録。nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-24976735707891766612015-09-06T20:50:00.000+09:002015-09-06T20:51:30.656+09:00OSX10.10.5にCaffe環境構築久しぶりの週末プログラミングでDeep Learning触ってみました。
Deep Learningのフレームワークとしては、無難にCaffeを選択。
以下はmacbook airで動かすまでの手順メモです。
homebrewをインストール
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
pyenvをインストール
$ brew install pyenv
.bash_profileにeval "$(pyenv init -)"を追加
Xcode command line toolsをインストール
pythonのインストール時に"Missing the OpenSSL lib?"とかエラー出たらインストール。
$ nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-53068064353456622902012-05-28T21:01:00.000+09:002012-05-28T21:01:13.641+09:00PogoplugをOpenPogo化してOSX LionのTime Machineバックアップ先にして使ってますPogoplug(POGO-P25)を自宅で便利に使っていたんですが、ファイルコピーがとにかく遅い。あと、せっかくハードディスクをネットワークにつなげられてるんだから、Time Machineのバックアップ先にもしたい。
そこで、PogoplugをOpenPogo化してカスタマイズ。Netatalkで高速なNASにしたり、Time Machineのバックアップ先にしたり、2台のハードディスクをつないで二重化したりして、もう3ヶ月ほど連続で動かしていますが非常に安定しています。Pogoplugのもともとの機能は全てそのまま生かしたまま、Linuxボックスとして自由にカスタマイズできる、というのは超絶便利です。
というわけで、備忘録として、参考にしたサイトのリストをまとめておきます。
PogoplugのOpenPogo化
Pogoplugに『OpenPogo』をインストールして神格化nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-17318381208981267132012-03-11T21:46:00.014+09:002012-03-12T20:13:15.383+09:00裸族の二世帯住宅を OSX Lion で初期化する方法fdiskを使ってマスターブートレコードを初期化することもできたので追記。pdiskを使った場合はAppleパーティションマップでのパーティション管理になるんだけど、この場合、linuxマシンで認識できないことがあった。マスターブートレコードにしておけばその心配がないっぽい。[2012/3/12 追記]裸族の二世帯住宅とは、センチュリーからかつて販売されていたRAIDできるHDDケース。使いやすいケースなんだけど、RAID0やRAID1で設定している場合にディスクユーティリティで初期化できない、というOSXユーザにとっては厄介な問題がある。ここなどによると、OSX 10.5以降のディスクユーティリティで起きるらしい。というわけで、裸族の二世帯住宅を OSX Lion (10.7.x) で初期化(パーティションの切り直し&フォーマット)する方法を備忘録。※お決まりですが、、、あくまで自分用nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-86062428054878482922011-08-18T22:23:00.005+09:002011-08-18T23:08:42.295+09:00GR DIGITAL II で赤外線写真を試す
ケンコー・トキナーの PRO1D R72 (赤外線透過フィルター) を使った風景写真が面白い。撮影や加工のコツがまだまだ掴めないけど、適当にやってもそれなりに不思議な感じに仕上がる。nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-36649734464192110052011-08-16T20:55:00.004+09:002011-08-18T23:08:14.081+09:00OpenCVで顔検出してリアルタイムモザイクもはや定番となってますが、顔検出のサンプルコード "samples/c/facedetect.cpp" をベースに、検出された顔の領域にモザイクをかけるようにしてみた。コードはgist:1148913へ。
本格的な画像処理や画像認識の機能をお手軽に試せてしまうの楽しい。
すごいぞ、OpenCV!;-)
モザイクかけるだけで何やら怪しい雰囲気になるなwnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-42490422429678212472011-08-15T10:22:00.024+09:002011-08-15T22:14:43.553+09:00OSX Lion (MacBook Air - Mid 2011) 上の Xcode4.1 で OpenCV2.2 を使えるようにするMacBook Air (Mid 2011) で OpenCV を使ったコードを動かすまでのメモ。
手順は以下のとおり。
[1] Xcode をインストールAppStore で検索&クリック。あとは待つだけ。
[2] MacPorts をインストール公式サイトから Lion 用のイメージをダウンロードしてきてインストール。
インストールが終わったら、一応アップデートしておく。$ sudo port selfupdate
[3] OpenCV をインストールMacPorts を使ってしまえばコマンド一発。時間はかなりかかる。$ sudo port install opencv
[4] Xcode のプロジェクト設定ポイントは3つ。「Valid Architectures」を"x86_64"のみにする。
※"i386"を含めたままでは、ビルドでエラーが出た。
「Header nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-89263046639314856592011-05-21T23:28:00.009+09:002011-08-15T22:23:20.122+09:00Project Euler をやり始めてみた数日前に存在を初めて知ったProject Euler。
Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.
About Project Euler - Project Euler要は、プログラミングで解く数学パズル、みたいなものnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-33386164755577809942011-04-23T02:32:00.027+09:002011-04-28T08:49:55.125+09:00iPhoneは基地局の情報を収集していた?Appleが4/27付けで説明を公開した。Apple Q&A on Location Data要は、ユーザの位置情報を収集はしていないiPhoneに記録されている位置情報は、Appleが管理している基地局DBの一部(測位の高速化・高精度化のための端末側キャッシュとして利用)長期間に亘って記録していたのはソフトウェアのバグによるもので、近々アップデート予定(合わせて、キャッシュの母艦へのバックアップもやらないようにする)とのこと。基地局DBのキャッシュか、なるほど、って感じ。[4/28追記]iPhoneで知らぬ間に位置情報の履歴が記録されていた、ということが話題になっている。記録された履歴はiPhoneの同期先であるPCに保存され、アメリカの研究者がオープンソースで公開したiPhone Trackerというツールで可視化までできてしまう、というもの。実際に上記のツールを使って僕のnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-24721875684510589322011-04-19T07:31:00.007+09:002011-04-23T09:03:04.257+09:00閲覧制限したBloggerブログのフィードを公開する方法(改)以前書いた記事の方法ではあまりにややこしかったので、もうちょっとだけシンプルな方法を用意してみた。まず、目的は前回の記事と同じ。Bloggerには閲覧者を制限する機能があって、プライベートなブログを作るには便利。なんだけど、ちょっとした不便がある。それは『閲覧制限をかけると記事やコメントのフィードが生成されない』というもの。ちょっと古いけど、こんな関連記事もチラホラ見かけられる。clmemo@aka: Blogger にアクセス制限をかけるとフィードが生成されないMember Only Permissions - Site Feed Possible? - How Do I? | Google グループ本文は特定の人以外に公開したくないけど、記事のタイトルやコメントが付いたことくらいはフィードリーダーで確認できたら便利だなぁ、という人、少しくらいはいそうだ。というより、僕が便利だ!nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com2tag:blogger.com,1999:blog-3371100289875722528.post-28394764936913670342010-03-22T21:09:00.002+09:002011-04-19T09:05:22.247+09:00Bloggerで閲覧制限したブログのフィードを公開する方法この記事より簡単な方法を準備してみました。[2011.04.19]→ 閲覧制限したBloggerブログのフィードを公開する方法(改)Bloggerには閲覧者を制限する機能があって、プライベートなブログを作るには便利。なんだけど、ちょっとした不便がある。それは『閲覧制限をかけると記事やコメントのフィードが生成されない』というもの。ちょっと古いけど、こんな関連記事もチラホラ見かけられる。clmemo@aka: Blogger にアクセス制限をかけるとフィードが生成されないMember Only Permissions - Site Feed Possible? - How Do I? | Google グループ本文は特定の人以外に公開したくないけど、記事のタイトルやコメントが付いたことくらいはフィードリーダーで確認できたら便利だなぁ、という人、少しくらいはいそうだ。というより、僕が便利だ!nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com2tag:blogger.com,1999:blog-3371100289875722528.post-37797022073251327702010-03-19T00:45:00.001+09:002010-03-19T00:56:01.021+09:00Bloggerの通知メールをWebHookに変換するWEBサービスを作ってみたhook2feedと同様、これもまた「とある目的」のためにGAE for Javaで作ってみた。bmail2hook - blogger's notification e-mails to web hooksGoogleアカウントでログイン後、WebHookの送信先URLを指定して「create new setting」すると、専用のメールアドレスが作成される。作成されたメールアドレスは以下のようにして使える。作成されたメールアドレスを、Bloggerの設定画面で新規記事や新規コメントの通知メール宛先に設定するbmail2hookは、受信した通知メールから、記事のタイトル・URL・本文(の一部)を抽出して、指定したURLに対してWebHookするこれもまたhook2feedと同じく、「とある目的」以外の用途が思い付かない。困った。。。無理やり例を挙げるとするならば、、、HookHubとかnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-68767250947369910982010-03-18T00:15:00.003+09:002010-03-18T00:25:03.374+09:00WebHookを溜めてRSSフィードを生成するWEBサービスを作ってみたとある目的(については後日改めて)で使いたくて、GAE for Javaのお勉強がてら作ってみた。WebHooksの意義を考えると本末転倒な感じもするけど、深くは考えないことにする。。。hook2feed - create feeds from web hooksGoogleアカウントでログインして「create new setting」すると、専用の2つのURL(「hook point URL」と「feed URL」)が作成される。hook2feedは、、、「hook point URL」の方に来たWebHook(HTTP POST)の履歴(最新20件分)を溜める「feed URL」の方で、WebHook履歴からRSSフィードを生成するというように動く。ちなみに、PubSubHubbubに一応対応していて、WebHookされたらhubにpublishするようになってる。nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-34225929719036895692010-03-06T22:41:00.003+09:002011-08-15T22:29:00.846+09:00GAE for Javaでquoted-printableなメールの受信Google App Engine for Javaでメールを受信する処理を作ってたら、quoted-printableエンコーディングされたメール本文をデコードすると、デコード結果が途中で切れてしまう現象に遭遇した。調べてみると、quoted-printableエンコーディングでいうところの「Soft Line Breaks」がうまく認識されないことが原因だったので対策してみた。
まず、「Soft Line Breaks」については、RFCのquoted-printableエンコーディング規則の中で以下のように説明されている。要は、長すぎる行には適宜「=」+「改行」を入れて分割する、というエンコーディングが行われるとのこと。Rule #5 (Soft Line Breaks):
The Quoted-Printable encoding REQUIRES that encoded nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-39372587176646015662009-10-13T23:28:00.029+09:002012-03-11T19:39:23.241+09:00Everioの動画をMPEG4にお手軽変換できるワークフロー動画撮影にはHDDビデオカメラのビクターEverio(GZ-MG77)を使っているのだが、これで撮れるMPEG2形式の動画ファイル、実はMacではそのまま扱えない。QuickTimeで再生できないし、当然、iMovieで使う事もできない。Apple純正のQuickTime用「MPEG2再生コンポーネント」なるものはあるが、EverioのMPEG2ファイルに関しては再生ができても音が出ないそうだ。Everioの音声コーデックに非対応ならしい。というわけで、WindowsからMacに乗り換えて数ヶ月、動画を撮り貯めるばかりで、編集する事はもちろん、再生する事すらもできていなかったのだが、ようやく最近になって、このEverioの動画ファイルを扱える環境をMac上に整えた。と言っても、再生のためにVLCを、iMovieで読み込めるMPEG4への変換のためにffmpegXを、それぞれインストールnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com5tag:blogger.com,1999:blog-3371100289875722528.post-18526078601855323982009-10-05T00:37:00.010+09:002012-03-11T19:38:03.433+09:00Wiiリモコンでラジコン制御Wiiリモコンを使ってArduinoを載せたラジコンを無線制御できるようにしてみた。と言っても直接つないでいる訳ではなく、MacBookを介して、Wiiリモコン⇔MacBookはBluetoothで、MacBook⇔ラジコン上のArduinoはXBee(Zigbee)で、それぞれつないでいる。プログラム上の問題がまだ色々とあるものの、実際に走行させてみる事もできた。Wiiハンドルを握って操作してると、『リアルマリオカート』な気分になれるかも。;-)※走行させているシーンではないが、こんな感じで操作できる。ちなみに、写真にある通り、GPS受信機や各種センサ(加速度、ジャイロ、デジタルコンパス)など、『操作』には必要ないものも色々と載せてあるが、これらのデータはMacBookで記録できるようにしてある。今後、走行させた時のデータを色々と取ってみる予定。目指せ『自動制御』!nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-56228157970644524472009-10-03T10:05:00.009+09:002009-10-05T16:35:54.407+09:00Arduino 0017で、Megaのアナログ入力ピン8〜15が使えないバグArduino Megaでは16本のアナログ入力が使えるはずなのだが、自分の環境では何故か0番から7番のピンしか正常に使えなかった。8番から15番のピンを読み取った結果を見てみると、ただのノイズ、という感じ。Arduino Forumを調べてみたら、ばっちり同じ問題に関する書き込みがあった。結局、Arduino IDE 0017のバグだったようだ。Sorry guys, this will be fixed in Arduino 0018. In the meantime, you can edit hardware/cores/arduino/wiring_analog.c and change:ADMUX = (analog_reference << 6) | (pin & 0x0f);to:ADMUX = (analog_reference << 6) | nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-4725994116902441172009-09-28T23:17:00.008+09:002009-09-29T08:04:10.532+09:00OSX上のArduinoIDE(0017)で"Serial Port Already in Use"エラーJavaでシリアル通信するためにRXTXライブラリを/Library/Java/Extensions/に入れたら、スケッチをArduinoへ転送する際にタイトルの通りのエラーが出るようになってしまった。ArduinoIDEのパッケージに含まれるRXTXライブラリと何かしらバッティングでもしてるのか、などと疑って調べてみたら、見当違いだった。エラーは、/Library/Java/Extensions/に入れた方のライブラリが出しているもので、シリアルポートの排他制御のために使う/var/lock/ディレクトリが存在しなかったのが原因。どうやら、RXTXライブラリのコンパイルオプションでは/var/lock/を使うのがデフォルトらしい。Arduino Forumに情報があった。the default compilation options for RXTX create a library nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0tag:blogger.com,1999:blog-3371100289875722528.post-30394975917818840292009-09-28T01:35:00.004+09:002012-03-11T19:32:38.855+09:00Arduinoをラジコンに仮配置GPSやセンサをつないだArduinoを使って、ラジコンの自動制御をやってみよう!というわけで、、、諸々の機能(GPSやセンサのデータ取得、ラジコンのサーボ&スピコン制御、LCD表示、XBeeでの通信無線化など)のArduino上での動作に目処がついたので、必要な部品をArduino Megaと2枚のボード上にまとめて、ラジコンに載せられるようにした。それぞれ単体での動作確認が済んだ段階で、まだボード間の配線はできていないが、実際に載せてみるとこんな感じ。右側に見えているのがArduino Mega+GPS受信機シールド。奥に見えているボードには、秋月のGPS受信機GT-720F、無線通信用のXBee、および、キャラクタLCDを、手前のボードには、3軸加速度センサ、2軸ジャイロ、および、デジタルコンパスを、それぞれまとめてある。他に、障害物検知用のセンサなども車体の前の方に載せていきたいnikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com2tag:blogger.com,1999:blog-3371100289875722528.post-77710127636983949892009-09-26T08:17:00.008+09:002009-10-03T10:24:16.725+09:00NewSoftSerialがArduino Megaで使えないソフトウェア的にシリアル通信を実現してくれるNewSoftSerial、高速通信時の動作も安定していてとても便利。なんだけど、、、Arduino Megaで使おうとしたらどうしても動かない。あれこれ試してみてもダメなので少し調べてみると、現時点での最新版(バージョン9)では、まだMegaがサポートされていないとのこと。What’s next for NewSoftSerial? Well, there are a number of things being asked for:Arduino Mega supportSignal inversion optionRTS/CTS flow control optionConfigurability, i.e. “E, 7, 1″ style parity, data and stopbit configuration.Direct nikohttp://www.blogger.com/profile/14922833922737331544noreply@blogger.com0