雑食エンジニアの気まぐれレシピ

日ごろ身に着けた技術や見知った知識などの備忘録的なまとめ.主にRaspberry Piやマイコンを使った電子工作について綴っていく予定.機械学習についても書けるといいな.

レオリモコンとAlexaを連携させる[GCEとOpenVPN]

今回はGoogleCloudPlatfotmのインスタンス立ち上げとOpenVPNの設定についてです.下図で言うところの④ですね. f:id:shikky_lab:20180811060042p:plain

ぶっちゃけ先人達が非常に分かりやすい記事をいくつも上げてくれているので私が語れるところはほとんどないのですが,ところどころ詰まったところを中心に補足を入れていければと思います.

続きを読む

PCの起動と同時にテレビ(ディスプレイ)を起動させる[レオリモコン]

前回までの記事で書いていたアレクサ連携の話とは直接関係ないのですが,レオリモコンの活用方法の一つということで.

先日,PCのディスプレイ用に43型の4Kテレビを購入しました.ぶっちゃけ大きなディスプレイとか使いこなせる気がしなかったのですが,いざ買ってみるといいものですね.もう手放せないです.
さて,TVをディスプレイ替わりに使用する際のデメリットとして,PCとのHDMI連動起動ができないというものがあります.したがって,PCの起動とは別にTVの電源を入れる必要があります.
面倒なのですが,先人の方々も苦労しているようで明確な解決策は見えてきませんでした.
価格.com - 『PCの電源をいれたら連動してTVもONになるでしょうか?』 シャープ AQUOS LC-22K40-B [22インチ ブラック系] のクチコミ掲示板
とか
え?日記: PCが、HDMIのCECコマンドに対応していない件。
様の記事とか.
ですが,私にはレオリモコンがあります!!
というわけで,レオリモコンを使ってテレビをPCと連動させてみました.

続きを読む

レオリモコンとアレクサを連携させる[レオリモコン操作編]

前回の概要編に引き続き,レオリモコンとアレクサの連携についてです.今回はいきなり最終端のレオリモコン操作部分について書きたいと思います.アレクサに出した指示は,めぐりめぐってこの部分を実行することになります.

概要編で触れたとおり,レオリモコンはIRemoconWifiと同様にtelnet経由で操作することができます.IRemoconはレオリモコンに比べればずっとメジャーなので,すでに実装されている方はちらほらいるみたいです.
node-iRemocon つくった - 凹みTips
様のjava script版など.
正直この完成度を超えられる気はしないのですが,勉強も兼ねて使い慣れたPythonで書いてみました.

続きを読む

レオリモコンとAlexaを連携させる[概要編]

先日のAmazonPrimeDayにてEcho Dotを購入し,晴れてスマートスピーカーデビューと相成りました. スマートスピーカー群雄割拠の中でEchoを選んだのは単純に,レオパレスのレオリモコンと連携できるからです.レオリモコンは学習リモコンのiRemoconがベースになっているのですが,レオパレスのネットワークインフラ「レオネット」下でのみ動作できるようにレオパレス魔改造しています.おかげでiRemocon用のアプリは軒並み動かず,スマートスピーカーとして正式に対応しているのはAlexaのみという現状になっています.

さて,そのレオパレス謹製のAlexaスキルですが,現在照明しか操作できません.
いやいや,えー......

というわけで,実際使うかはさておいて,レオリモコンハックに挑戦することにしました.

しかし,そこには二つの大きな壁が立ちはだかっています.

  • レオリモコンのAPIは公開されていない
  • レオネットはグローバルIPがないためサーバを公開できない

今まで何度もこの壁に何度も阻まれてきたのですが,やっと抜け道を見つけることができました. 今回は概要をさらりと述べて,詳細は次回以降に触れていきたいと思います.

続きを読む

3DプリンタでHTC-VIVEのベースステーション用雲台を作る

こんにちは.

昨今のVRブームに(今更)流されて,HTC-VIVEを購入することにしました.
しかもpro. www.vive.com

で,このVIVEを動かすためにはベースステーションという赤外線レーダーを部屋の隅に約2mの高さに設置する必要があります.
この設置には皆さん苦労されているようですね.設置方法については,
HTC VIVEのセットアップと注意点。ベースステーションの設置方法。 | 自作パソコンdeゲーム野郎
様がいろいろとまとめてくれています.

私の部屋の場合,一つは上記記事にあるようなツッパリ棒スタイルが使えたのですが,もう一つの設置場所には使えませんでした. ただ少し厚め(約65mm)の間仕切りがあるため,ここにクランプして固定することを考えます.
ですが,どうにも市販のカメラ雲台でこの幅がクランプできて,かつ角度調整が可能なものが見つけられませんでした.
なので自作することにします.
前置きが長くなりましたが,ここからが本題です.

いきなり完成品

f:id:shikky_lab:20180529054100j:plain
こんなのつくりました.固定するとこんな感じです.
f:id:shikky_lab:20180529054103j:plain
構成としては二つに分かれており,"ボールジョイント式のカメラ雲台部分"と”クランプ部分”があります.以下はそれぞれについて解説します.

ボールジョイント部分

f:id:shikky_lab:20180529055817j:plain
ぶっちゃけ工夫したのはここだけのような...
角度調整が可能な雲台として最も作りやすそうなものがこのボールジョイント式だと思いましたので,これを採用することにします.ボールの直径は30mmとしました.構成としては以下の3部品に分かれています.

ボールジョイント上部

f:id:shikky_lab:20180529045247p:plainf:id:shikky_lab:20180529045239p:plain
ボール部分上部(表)と(裏)
ここがベースステーションとつながる部分になります.ベースステーションには通常のカメラと同様にW1/4の雌ねじが切ってありますので,それを使って固定します.
さすがに固定用の雄ねじを3Dプリンタで作りたくはないので,ボールジョイント上部に雌ねじを切り,市販のねじを通して使用します.
f:id:shikky_lab:20180529054106j:plain
W1/4の20mmねじ.こいつを埋め込みます.

発想自体はシンプルなものです
が,fusion360でW系(ウィット系)のねじはデフォルトで作成できません.
このせいで少し手間取りました.なお,ウィットねじの切り方は前回の記事にまとめてあります.
shikky-lab.hatenablog.com
前回も少し述べましたが,私の3Dプリンタではそこまで綺麗にねじを切ることができないので,金属ねじを使ってタップを切っていくような形になります.

ボールジョイント下部

f:id:shikky_lab:20180529045251p:plain
こちらは特に語ることがないですね.前述のボール上部と合わせてねじを挟み込みます.固定用の穴はφ3で,M3ねじをタッピングビスのように使って止めます.

f:id:shikky_lab:20180529055815j:plain
上下を合わせたボール.チュッパチャップスにしか見えねぇ...

ボール固定部分

f:id:shikky_lab:20180529045255p:plainf:id:shikky_lab:20180529045253p:plain
ボール固定部(表)と(裏)

微妙に複雑な形をしたこちらですが,上部の3mmだけ球状にくりぬかれています.ボール径は30mmなので10%に相当しますね.強度面の不安がありましたが,完成品をいじっている限り問題なさそうです.
手前の凸部分はボール固定用で,M4ナットを中に仕込むことができます.設計の都合で止めねじをボールの中心に当てることができなかったため,薄い板をねじとボールの間に挟むような形式にしました.

ところで,

Q.ボールに対して直径ぴったりの固定部を作って果たしてうまくいくのか?

と疑問に思う方がいるように思います.

A.もちろんうまくいきません.

まぁある程度は想定内です.がばがばすぎるのも怖かったので.紙やすりで結構やすってはめ込みました.

クランプ部分

f:id:shikky_lab:20180529054100j:plain
クランプ部分.別写真がないので再掲...
3Dプリンタならこういった造形は一体成型にすることもできますが,強度面に不安が残るため分割で作ってねじで固定することにしました.クランプ下部の板に固定用のM4ねじが貫通しています.

ボール支え面

f:id:shikky_lab:20180529045259p:plain
これはクランプのボールジョイント側の面です.球状のくぼみは3mmの厚み分えぐっており,ここにボールが触れる形になります.

クランプ下部(スペーサ)

f:id:shikky_lab:20180529045304p:plain
クランプの挟む面をつなぐ役割を持つ部品です.実質ただのスペーサですね.側面に空いている穴にM4ねじを貫通させます.
強度の都合上,穴が横向きになるように成型しました.そのため,穴がつぶれることを考慮してφ5で空けています.まぁスペーサなのでガバ穴で何の問題もないです.

クランプ反対面

f:id:shikky_lab:20180529045257p:plainf:id:shikky_lab:20180529053146p:plain
クランプ反対面(表)と(裏)
中央の穴にはM8ねじを通します.裏面にはM8ナットが仕込めるようになっています.

押し出し板

f:id:shikky_lab:20180529045301p:plain
クランプ反対面を通したM8ねじを回すと,この板が押し出されます.ここが壁と直接触れる面となりますね.本来はこの板が分離しない工夫をするべきなのだと思いますが,どうせ挟まれたら動かないので完全分離式です.

おわりに

はい,というわけで今回はカメラ雲台を作成しました.見た目はなかなか悪くないように思いますが,実際のクランプ力には若干疑問が残ります.まぁこの辺りは挟む面の素材次第だと思うので,もう少しいろいろ探してみます. あと,

VIVEはめちゃくちゃ面白いです. BEAT SABERサイコー!!!!!!

www.youtube.com
もうこれだけで元とれた感すらあります.

まぁそれはそれとして,VR系はまだまだ発展途上なので個人開発の余地が結構あるように思います.私もぜひ何かやってみたいですね.いい感じに思いついたら記事にしたいと思います.
それでは.

fusion360でウィット系のねじ穴を空ける

今回はfusion360にてウィット系のねじ穴を空ける際にひと悶着あったので,それについて書きたいと思います.

ウィットねじとは

正式名はWhitworthという規格らしいです.インチ系のねじで,W1/4とかW3/8とかをよく見ますね.実際メートルねじの次に見る気がするのですが,なぜかfusion360ではwhit規格のねじ穴を空けることができません.
ですがfusion360のねじは外部ファイルを読み込ませることで任意のねじを作成することができます.今回は1/4Wのねじ穴を空けることを目的とします.

ねじの追加方法

一応公式の説明は以下にあります.
Custom Threads in Fusion 360 | Fusion 360 | Autodesk Knowledge Network
...私の読解力が足りないのでしょうか.ずいぶん情報が足りない気がしますが,あとは勘でやっていきます.
Windowsの場合,fusion360のねじデータは以下にあります.
%localappdata%\Autodesk\webdeploy\Production\\Fusion\Server\Fusion\Configuration\ThreadData
ここにある*Thread.xmlというxmlファイルで管理されています.
ひとまず,W1/4のねじのみを記述すると以下のようになります.

<?xml version="1.0" encoding="UTF-8"?>
<ThreadType>
<ThreadForm>7</ThreadForm>
  <Name>WhitWorthThread</Name>
  <CustomName>WhitWorthThread</CustomName>
  <Unit>in</Unit>
  <Angle>55</Angle>
  <SortOrder>5</SortOrder>
  <ThreadSize>
    <Size>1/4</Size>
    <Designation>
      <ThreadDesignation>0-48</ThreadDesignation>
      <CTD>W1/4</CTD>
      <Class>2A</Class>  
      <TPI>20.0</TPI>
      <Thread>
        <Gender>internal</Gender>
        <MajorDia>0.25</MajorDia>
        <PitchDia>0.05</PitchDia>
        <MinorDia>0.186</MinorDia>
        <TapDrill>5.1</TapDrill>
      </Thread>
    </Designation>
  </ThreadSize>
</ThreadType>

以下,各タグについて私の解釈をつらつらと書いていきます.なぜ公式で各タグの説明がないのか.おそらく私が見落としているだけだとは思うのですが.

  • ThreadType ねじの系列の種類です.これは先のリンク先にて公式が説明しています.以下引用.

Table of ThreadType Numbers:

Number ThreadType
0 Trapezoid
1 Sharp
5 Square
7 WithWorth

...公式が誤字ってますが,ウィットねじは7です.

  • Name
  • CustomName
    いきなり謎ですが,Nameが二つあります.おそらく使われる場所が違うのだとは思いますが,どちらも同じにしておけば問題ない気もします.
  • Unit
    ねじの長さの単位です.メートルかインチかですね.メートルならmm,インチならinとなります.
  • Angle
    ねじ山の角度です.ウィットねじは55らしいです.
  • SortOrder
    謎です.おそらくこの番号の順に表示が並ぶんじゃないかと思ってます.
  • ThreadSize
    ここからねじの各サイズごとの記述になります.
  • Size
  • ThreadDesignation
  • Class
    これらはfusion360でねじを作成しようとした際の,以下の値に対応しているようです.
    f:id:shikky_lab:20180523222259p:plain
    正直ThreadDesignationとかClassとかはウィットねじにあるのかわからなかったのでコピペそのままです.
  • CTD
    謎です.正式名とか表示名とかなんじゃないかと思っていますが,どこで使わているのかもよくわかりません.
  • TPI
    1インチ当たりのねじ山の数です.W1/4は20です.
  • Gender
    雄ねじ(external)か雌ねじ(internal)かを指定します.
  • MajorDia
  • PitchDia
  • MinorDia
    ねじの最大径,ピッチ,最小径です.
  • TapDrill
    下穴径です.どうやら省略可能みたいです.

今回はW1/4の雌ねじのみが目的なのでこれだけとしましたが,同じ要領で任意のねじを増やしていけると思います.

そもそも3Dプリンタで雌ねじ切って大丈夫なん?

あんま大丈夫じゃないです!
少なくとも私の環境では,ねじを使ってタップを切り直している感覚に陥ります.
まぁそれはそれで固定力は増しそうなのでいいかなと思っていますが,するする通る雌ねじを作りたい場合は一工夫必要なんじゃないかと思います.
先ほどの要領で任意のねじ穴を定義できるので,標準の規格より少しだけ大きめに設定するとか,Slic3rの設定で穴を大きくするとかが割と有効かなと思ってます.
機会があれば今度やってみます.

ヒートベッドの温度が下がる問題への対策

前回の記事で少し触れましたが,現在3Dプリンタの駆動中にヒートベッドの温度が下がるという現象が起きています.
f:id:shikky_lab:20180513192748j:plain

準備段階では110℃まで上がるのですが,ステッピングモータが動き始めるとこのように温度が下がってしまいます.
今回はこの問題について調べてみます.

※改善はしましたが,まだ完全に治ってはいません.

原因は接触不良?

真っ先に疑ったのは配線による電力損失で,ヒートベッドのいろいろな配線を短くしてみたりしていたのですが,その際にとんでもないものを発見.
f:id:shikky_lab:20180513193332j:plain
炭化しとるやんけ......

いままでこの状態で使っていたというのはゾッとしますね.端子台に対して配線を直接つなぐ仕様になっていましたが,そのままだとダメそうです.
http://d.hatena.ne.jp/Imamura/comment/20161001
様をはじめ,調べてみると同じようなことになっている人はちらほらいるみたいです.
とりあえず私も急ぎ圧着端子を買ってきて取り換えてみます.

圧着端子を取り付けて試運転

早速取り換えて試運転してみます.心なしかヒートベッドの温度上昇にかかる時間も短くなった気がします.配線にも炭化の様子はなく,これは良さげ・・・・・・,と思いきや.
f:id:shikky_lab:20180513200724j:plain
届いとらんやんけ.

というわけで,接触不良を直したことで若干の改善はできましたが,まだまだのようです.
flsunの示すスペックとしては110℃までの出力を許容しているので,電源装置的には問題がないのだと信じています.なので,もっと太い配線などに交換すればもう少しよくなるんじゃないかと思ってます.これはまぁぼちぼちやってみようと思います.
ただ実用的な面として,ABS樹脂の造形時にヒートベッドに110℃の温度が必要なのは1層目だけな気もしてます.Slic3rでは1層目と2層目以降で設定温度を変更できるので,2層目以降を100℃に設定すれば実質そんなに問題は起こらないのかもしれません.しばらくはそれで試してみます.