読者です 読者をやめる 読者になる 読者になる

猫の手も借したい

暇を極めた時に更新します

Raspberry Pi Zero で小型の自立型タイムラプスカメラを作る その1

つい先日Raspberry Pi Zero Wが出ましたね。いつものOut of Stackを恐れて速攻で一枚買いました。

f:id:akkisino02:20170303203633p:plain
ちなみにガンダムWとは関係ありません。


現行のZeroとZero Wが大きく違うのは、Wi-Fiチップが搭載されたことのようです。今までのZeroはせっかく馬鹿みたいに小型なのにWi-FiドングルやUSB LANアダプタを付けないと外部に接続できないというハンデを抱えていましたが、Wではそれすら要らないため純粋に電源のみでコンピュータとして成り立つ事になります。
キーボードとマウスとモニター?別に要らなくない?



話は変わりますが、私は結構頻繁にキャンプなどに行く自然派オタクでほぼ毎年アウトドアイベントをエンジョイしてます。リア充
一昨年3泊泊りがけで行った際に偶然ヒグラシの羽化に遭遇したので、せっかくならこういうのタイムラプス撮影してみたいよねということでカメラを作ることに。


要件

スタンドアロンで動いて欲しい
スマホから見れる遠隔カメラとしても動かしたい。

くらい。


なのでモバイルバッテリーを主電源とし、WANにはつながらないけどアドホックWi-Fiのアクセスポイントとして動作させてそこに接続することでsshでの操作やカメラ映像などにアクセスすることができるものを目指します。
SDにあんまり書き込みアクセスするの怖いしそのへんはどうしようかなあ。

今回はハードウェア

といってもWはまだ届いてないので手持ちのZeroで試作。

百均で買ってきた名刺ケースを加工。

ごりごり加工してこんな感じ。よさ


あとはぐねぐね動く三脚みたいなやつを使えるように1/4ネジを接着しようなど。



ちなみにこのカメラモジュール、なんか知らんけど認識はされるのに撮影出来なくて現在販売元に問い合わせ中です。動作確認してある代わりの品と交換してくれるらしいのでそれまで保留。
別で買った暗視カメラ+赤外線ライトはちゃんとうごいてくれたのでそっち用のケースも制作予定。

とりあえず、代わりのカメラが届き次第動作確認、ソフトウェア面を作って、ナイトビジョンのケースを制作の流れかな。
ソフトウェア面はmjpeg-streamerとかmotionとかRaspbianのデフォのアレとかいろいろ考えてます。

Twitterのアイコンをランダムに変更するスクリプト

2017年最初の月ももう終わりですね。皆さんいかがお過ごしでしょうか。
私は毎日しんどいしんどい言いながら死んだ目で接客してます。

一体どこの層に需要があるのかわかりませんが、タイトルの様なものを作ったので公開します。

要件

Ruby (2.x.xで動作確認 別に最近のなら他ver.でも動くと思う)
Twitter gem
Tweetstream gem

これなに珍百景

アイコン用画像フォルダにぶっ込んである画像からランダムでアイコンを変更します。
"/change_icon"のリプライをトリガーに動作します。


いままでTwitter連携アプリはTwitter gem一本を使ってたけどなんだかTweetstream Gemのほうがよさげなので併用。
ちなみにきっかけは、TwitterGemでは「誰がどれかをツイ消しをした」というところまでしか取得できないのに対しstreamのほうは「誰がどのツイートを消した」というところまで取得できることを知ったため。とはいっても降ってくるのはツイのidなのでどっちみち消えた物は見れないけど。


リプライの判定が
/^@TwitterID ¥/change_name/
なので(要は前方一致)、以降は何が書いてあっても無視します。つまりこれを利用して連投規制回避ができるということ。うるさければ完全一致にして弾いてもいいと思う。

どっかのアホに毎秒アイコンを変えられてTLがすごいことになったのでレスポンスも任意でいいと思います。でもレスポンスないと変わったのかどうかわかりにくいところあるよね。

また、TwitterAPI制限が大きく変わってから今の仕様をよくしらないのでどれくらいの頻度でアイコンを変えられるのか不明。ほどほどに。


#coding: utf-8

require 'twitter'
require 'tweetstream'

#Ck/Cs
CONSUMER_KEY    = "ぴゅぴゅんって飛び出した"
CONSUMER_SECRET = "明日も追い越して"
ACCESS_TOKEN    = "ときめきポポロン♪って"
ACCESS_SECRET   = "きらめきの音が響く"

#TL取得用
TweetStream.configure do |config|
  config.consumer_key       = CONSUMER_KEY
  config.consumer_secret    = CONSUMER_SECRET
  config.oauth_token        = ACCESS_TOKEN
  config.oauth_token_secret = ACCESS_SECRET
  config.auth_method        = :oauth
end


#画像変更/投稿用
REST_client = Twitter::REST::Client.new do |config|
  config.consumer_key        = CONSUMER_KEY
  config.consumer_secret     = CONSUMER_SECRET
  config.access_token        = ACCESS_TOKEN
  config.access_token_secret = ACCESS_SECRET
end


Streaming_client.on_inited do
  puts 'TL Connected.'
end

icons = Dir.glob("アイコンをぶち込んであるディレクトリ/*") 
Streaming_client.userstream do |obj|
  if obj.class == Twitter::Tweet && obj.text =~ (/^@Twitter_ID \/change_icon/)
    icon = File.open(icons.sample) #iconsから一つランダムに取得
    REST_client.update_profile_image(icon) 
    REST_client.update("@#{obj.user.screen_name} Done. #{Time.now}", options = {in_reply_to_status_id: obj.id})
  end
end


私はこれにアイコンリセットコマンドを追加してます。また、指定されたアイコンに変更したりする機構も付けたいのでそのうち。

にしても自分用に他の機能も付けてるとはいえ120行あったスクリプトを公開用に整理したらここまで短くなるの何も言えねえな。

RaspberryPiでもじゃ小屋を監視

ポケットモンスターサンムーンが発売されて今日で4日目になりましたね。
私は忙しくてまだ20時間ほどしかプレイ出来てませんが、今回硬くなるを積んで回復の薬をしてくるNPCやあやぴかを連打して仲間を呼びまくるズバットなど、オタクを煽る要素がてんこ盛りです。

バトルする友達がいないのでみなさんぜひ買ってください。



さて、最近GPIOで遊ぶようになってから自室(小屋)のデータをとって遊んでいます。




こんな感じ。ごっちゃごちゃなのはそのうちなんとかします…

右側が、上からラズパイ本体、ブレッドボード、青いのがリレーモジュール。
忍ちゃんの左足付近で光ってるのが温度/湿度センサ。10分おきに別サーバー(Hotcocoa)のMySQLに書き込んでGooglechartでグラフを作ってます。
f:id:akkisino02:20161121004414p:plain


土が白いのは水のやり過ぎです。



これを、対面にあるアルミラックからWebカメラで定期的に写真をとってます。


といっても、常に電気をつけておくわけにも行かないので、撮影するときだけLEDライトで照らすことにしました。難しいこと考えたくないのでUSB延長ケーブルを切って、電源の線から5V給電してます。
先の写真のリレーモジュールから伸びてる怪しいケーブルがそれ。


別にリレーモジュール使わなくてもGPIOから給電すれば楽なんじゃないのと思いましたが、GPIOから給電できるのは3.3V。それだとちょっと暗く感じたので今の形に。
5Vで給電すると電気消しててもここまで明るくなります。



実際こんな写真になる。
f:id:akkisino02:20161121003927j:plain




今使ってるUSBケーブルがケースと干渉ぎみで、気づいたら抜けて電源が落ちててキレたり、気づいたら抜けて電源が落ちててガチギレしたりしてますが、とりあえずは試験運用なのでと我慢してます。


目標は、Zeroのほうでこういったモジュールをパッケージングして、外で放置してるだけでデータが溜まるようなモノをつくること。
電源確保とイレモノとかで悩んでます。



P.S.この前死んだ土壌湿度センサ、すぐに同じものを注文したのにまだ来ません。今日までにくるはずなので来なかったら業者に問い合わせます。

いつか別れは来る

形あるものはいつか壊れ、命ある物はいつか息絶える。自然の摂理です。
だからこそ、一生懸命頑張っていると輝いて見えるのでしょう。

別れは悲しいものではありますが、同時に新たな出会いでもあります。人は日々出会い、別れ、そしてまた出会い、別れて生きていくのです。

ペットを飼ったことの有る方は、大切な者を失うことの悲しさ辛さを知っていると思います。でも、それを乗り越え、時には思い出し、支えられて強くなっていくのです。


ちなみに土壌湿度センサの話です。


逝った

f:id:akkisino02:20161104230814j:plain

土壌湿度センサって常に通電してると電気分解が発生して腐食するんですね。いや、ふつうに考えればそうなんですけど、GPIOとか電子工作とかド素人すぎてその辺何とかなるんだと思ってました。

24時間センサが動いてる状態にして、温度湿度とともに1日144回ステータスを取得していたらなんか濡れてるのに乾いてる判定が出るようになってました。
違和感を感じてセンサ部分をみたところ、金属君は既に死にかけ。もっと早く気づいてあげていれば良かった。


今後は取得時のみに通電する形で測定していこうと思います。ただ、どうしても腐食は避けられなさそうにも思うので消耗品だと割り切っていくべきなのかな。
とりあえず今のはもう使い物にならないので同じ物を買います。



P.S. 今は付いてきたコンパレータで判定してるけど閾値がいくつになってるのか不明なので近いうちにA/Dコンバータも買いたい。

HP Chromebook 11を買った

お前何台ノーパソ買うんだよって言われました。まだ歴代7台目です。


HP Chromebook 11 とは

2013年だかにHewlett-Packardから発売された11インチのChromebookです。
日本国内では販売されておらず、当然キーボードもUS配列になってます。最高。

スペック的にはミドル〜ローエンドだけど、OSがChromeOSなので想像以上に軽快に動いてます。ことブラウジングに関してはX205TAにChromeを入れた状態よりも快適かもしれない。




結構可愛らしいフォルム。天板のラインは電源が入ってるとGoogleカラーに光る。

打鍵感はめちゃくちゃ悪くない。私はストロークの浅いキーボードは苦手で目に見えてミスタイプが増えて速度が落ちるんですけど、このキーボードでも秒速5キーは出てます。

ChromeOSであることのデメリットとして、ネットワークに繋がっていないとわりかし使い物にならないというところがあります。
Chrome以外の機能を持たない以上、Webサービスにほぼすべてのアプリケーションを頼ることになるので結構深刻です。
逆に言うとオンライン下であればWindowsMacに引けを取らないということであり、そもそも真面目な作業をするときにはメインマシンを使うのでセカンドマシンとしては非常に優秀な感じ。

ちょっと家の外に持っていく時なんかはカフェでネットサーフィンかTwitterか、やってもコーディングなので用途的にはベストマッチ。実際今回のブログ記事はChromebookから書いてます。コーディングのできるエディタ拡張機能はちょっと探してみたい。

また、拡張機能によってはオフラインでも機能するので、オフラインで編集→オンライン時にオンラインストレージに投げるなどの使い方もまあまあいけるんじゃないかな。

Androidアプリは非対応だった

ChromebookでもAndroidアプリが動くようになったというのは耳に新しい。でも全機種対応というわけではないようで。
ただ、そもそもAndroidアプリ対応が最近のことなのと、非対応機種も順次対応と発表されてるのでこの機種にも降りてくることを期待してます。

Androidアプリが使えると何ができるかというと、Webアプリに頼らずともオフライン環境でできることが増えるということ。それこそエディタのアプリも存在するし、IDEなんかもあるし。

Ubuntuが動くらしい

ChromeOSの仮想化機能Chrootを利用してUbuntuをブートさせることや、そもそもOSを入れ替えることができるっぽい感じなので、それでマルチブートにしてしまうのもありかなと思ってます。
すればUS配列で使えるLinuxノートになるわけで、Chromebookの弱点が補えます。
この機種はSDが刺さらないのでストレージばっかりはどうにもならないけど、USBメモリとかなんかでなんとでもなると思う。

ちなみに16.10で一回試してみたらうまく動いてくれなかったので近いうちに再挑戦します。

結論

実はUS配列のノートが一台ほしかったのが購入の大きな理由なので、同じくHPのStream 11と迷ってました。向こうもUbuntuの動作実績があったので買ったとして即Ubuntuを入れるつもりで。ただたまたま安く見かけたこっちを買って良かったかなと思う。
ChromeOSはわりかしまだまだ発展途上のマイナーOSではあるけども結構いい線いってるので、セカンダリ用途とかモバイル専用とかそういう方向で頑張ってほしいなという感じ。





P.S. 録画したアニメもスムーズに再生できるので出勤前に飯食いながらアニメ見るのが捗る。

フリスクでRaspberry Pi Zeroのケースを作る

前回、ぜろぴっぴを買った話をしました。
akkisino02.hatenablog.com


フリスクケースの加工が終わったので一連の流れを記事に。
フリスクケースにRasPiZeroを詰めた」という話はいくつか見たのに、実際の加工の流れを見なかったので需要あるかなと。無い?


ノーマルサイズでいく

前回の記事で、「120%増量のケースだと余裕があるが故に中でぱかぱか遊んでしまうのでスペース埋めが必要」という話をしました。
なら、ピッタリ収まる通常サイズで行こうぜということで。



まずコネクタ位置にアタリを付けて穴を開けます。実際にZeroをあてがって、大まかに位置決めをしました。
カッターなりで穴を開けて、あとは微調整をヤスリでやるのがいいと思う。



開けました。ここでコネクタとの位置がしっかりあっていればぴったりハマります。逆に、はまらないときは穴があっていないということ。

ちなみに、ホットナイフで加工してヤスリで整えたのでバリが大変なことになりました。
なので、表面も削って磨いて仕上げます。また、一面だけ質感が違うのもキモいので、全体を磨いてコートを吹くことにしました。その都合で一度ステッカーを剥がしてます。



上半分は完成。ここから下側の加工に入ります。



基盤分の厚みと干渉するので、その分を削り落とします。ちなみに、ステッカーを正位置に見て左側、右側は基盤と鑑賞しないように位置を調整しました。そのためこの箇所は鑑賞さえしなければ多少大雑把でもぱこぱこしないようになってます。まあそれでもギリギリで生きていきたい。



このくらいの厚さ削り落としました。この辺は実際に基盤を見ながら微調整していくべき。



次はコネクタの干渉部を削っていきます。ここも割りと見えないところなので大雑把でもよさげ。ある程度削ったら上蓋をはめて、上蓋の穴と様子を見ながら削るとずれなくていいでです。



けずれた。


この少し出っ張る形状の部分は、割りとシビアです。削りすぎると外から基盤が見えちゃう。
内側に入ってる面の上のほうだけを基盤の厚み分削り落とせれば問題なし。せまくてヤスリが入らなかったのでニッパーで削りました。
あとついでに内側の小さい部屋を壊しました。ここも厚み分削ればいいんだけど必要でもないので適当に切り落とした。



わかりにくいけど奥が無加工、手前が加工済み。



基盤を載せて確認します。
長辺の削りが足りなくて左奥角のぶぶんが少し斜めに入ってます。これでは蓋が閉まらないので削って調整。
ちなみにこの時点で蓋をしててもSDカードにアクセスできるようにそこも削り落としてます。写真左側の辺。



ぴったり重なりました。右上。



あとは上蓋をはめて様子見。
実は0.5mmほど削りが足りなくて少し浮いてしまったので削り直してます。



裏側。



いいかんじ。



形はこれで出来上がったのであとはコートだけ。プラモデル用のつや消しクリアー。


完成



かなりいい感じ。やったぜ。



120%フリスクのほうも余裕がある分いろいろできる気がするし、まだまだケースが余ってるので他にも色々作ってみようと思います。
また、手元に転がってた別のケースでちょっとおもしろいことを思いついたので暇ができ次第Zeroを買い足してあそぼうと思ってます。




閑話休題、試験まであと11日なのに勉強してない。

Raspberry Pi Zeroを買った

九条カレンさんの出身地イギリスの通販サイト、pimoroniから購入した。


Raspberry Pi Zeroとは
・めっちゃやすい
・めっちゃちいさい
・もちろんLinuxが走る
・小型化のためにインターフェースが削られてる

5USDで買えるコンピューターとして売り出されました。基本的には、RasPi同様貧困層や子供に向けたプログラム学習が主なターゲットのようです。
サイズはほぼフリスクケースと同等。
インターフェースが、給電用MicroUSB、MicroUSB、MiniHDMI、MicroSDスロット しかない。NICも無いので必要なら別で用意。

サイズ感


きゃわわ。
いつ見ても電子基板は可愛い。
下側左から順にminiHDMI、microUSB、給電用microUSB です。


右はRaspberryPi 2、奥は焼き鳥。
RaspberryPiZeroはロリっ娘感がして犯罪臭がヤバイ

フリスクケースに入る

正直これがやりたくてZero買ったところがでかい。
調べるとあまりヒットするわけではないけど、フリスクケースに詰め込んだ人が何人かいます。加工すればぴったり収まるそう。また、最近出た大きい方のケースは結構余裕ができる。

フリスクケースはなぜか大量にあるのでいくらでも試せそう。ということで早速加工。

何故か大量にあるフリスクケースの図(このあとさらに出てきた)



まず位置合わせのために
適当にナイフとヤスリでゴリゴリ行きました。下はそれをもとに増量版のほうのケースを削っているところ。


その結果できたのがこれ。ちょっとゆがんでるのはご愛嬌。

増量版ケースでつくると、余裕があるが故になかでぱこぱこ遊んでしまう。極力テープで固定とかしたくないので、(用途や周辺機器でケースを変えて遊びたい)内部を何か工夫する必要があります。
遊びを埋めるスペーサーを作ったり、ネジ穴を活用して固定できればよさそう。
ただ、実はこのケース加工を失敗して少しずれてしまってるのでそのうちもう一つ増量版を買ってきて作り直そうと思います。あと微妙な位置合わせも。
地味に右側からSDを出しててケースつけたまま差し替えできるように想定してたり。

まあ試作品ってことで。



先の二個の試作ケースをもとに、きれいに作ってみようとアタリを付けたところ。机が散らかってるのは同時並行でらずぱいぜろの設定をしていたから。


こんな感じ。まだ穴が微妙にガタついてるので、きれいに整える。また、表面仕上げのためにステッカーを一回剥がして研磨中なので、底面含め形が完成したら貼り直してつや消しのコートを掛けるつもり。



とりあえずケースを作りつつ考えてたけど今のところ用途が思い浮かんでないので、らずぱいぜろらしい何かを思いつき次第実装しようと思います。

というかRubyのインストールが1時間たっても終わらないんですけど...