Fusion回線 をAsteriskに収容する

Asteriskで内線電話環境構築したわけですが、実はここからが本当にやりたかったことで、Fusion IP-Phone Smart を Asterisk に収容して基本料無料の固定電話を実現させる予定です。

Fusionアカウントの設定

sip.conf の general セクションに Fusion の設定を追加します。

register => SIPアカウント:SIPアカウントパスワード@smart.0038.net

SIPアカウントの部分は、Fusionから提供されるSIPアカウント名(050を抜いた電話番号)になります。パスワードはFusionアカウントのパスワードではなく、Fusionから提供されるSIPアカウントのパスワードになります。

次に、新しいセクションを作成します。名前は任意ですが、ここではfusionと仮定します。

[fusion]
type=friend
username=SIPアカウント
fromuser=SIPアカウント
secret=SIPアカウントパスワード
host=smart.0038.net
fromdomain=smart.0038.net
context=fusion-in
insecure=port,invite
canreinvite=no
dtmfmode=rfc2833

SIPアカウントの情報を平文で保存しておくのは精神衛生上あまりよくないですね。

私の環境では、FirewallでSIPプロトコルの許可と、5060番にきた通信をAsteriskが動いているサーバへフォワーディングしてやる設定を追加する必要がありました。このままですと、SIPアカウントの情報が漏れると有料電話かけ放題になってしまいます。ところが、ファイアウォールで5060番を許可するアドレスを絞ってしまうと、音声通話できない&10秒ほどで通話が切れてしまうのでした。どうもFusionからの着信はIPが固定されていないようです。
ぐぬぬ。。。

insecure=port, invite
peerとの接続に関する設定のようです。 portを設定しておくと、どのポートからのアクセスでも許可するようになります。invite を設定しておくと着信時の認証が不要になるようです。

dtmfmode=rfc2833
いわゆるピポパの設定です。inband、rfc2833、info、auto、が設定できます。とりあえずrfc2833がデファクトスタンダードらしいのでこれにしていますが、動くかどうかはわかりません。今度郵便の不在票が届いた時に運送会社の自動再配達受付で試してみる予定です。

前回までの設定も含めた、sip.conf は以下のようになります。

[general]
context=default
port=5060
binaddr=0.0.0.0

disallow=all
allow=ulaw
allow=alaw
allow=gsm

register => SIPアカウント:パスワード@smart.0038.net

[01]
type=friend
defaultuser=01
username=01
secret=pass
canreinvite=no
host=dynamic

[02]
type=friend
defaultuser=02
username=02
secret=pass
canreinvite=no
host=dynamic

[03]
type=friend
defaultuser=03
username=03
secret=pass
canreinvite=no
host=dynamic

[fusion]
type=friend
username=SIPアカウント
fromuser=SIPアカウント
secret=パスワード
host=smart.0038.net
fromdomain=smart.0038.net
context=fusion-in
insecure=port,invite
canreinvite=no
dtmfmode=rfc2833

着信の設定

extensions.conf に着信の設定を追加します。この、着信時の定義を仮に fusion-in とします。

[fusion-in]
exten => SIPアカウント,1,Dial(SIP/01&SIP/02&SIP/03,60)
exten => SIPアカウント,2,Congestion

基本的には、内線の時と同じような設定しかしていません。fusionアカウントに着信があった場合は、内線電話の01~03を一斉に鳴動させます。60秒でとらない場合は切ります。Dialの引数に、SIP/番号&SIP/番号…と並べていけば一斉鳴動させることができます。たぶん正規表現も使えると思います。

ここまでで着信のテストをして、外線着信で一斉鳴動することと、外線で通話できることを確認しました。Fusion IP Phone Smart はクレジットカードの枚数分アカウントを作れるので、実験用にもう1つアカウントを作成しました。Fusion IP Phone 同士の通話は無料なので、1つを携帯用にすれば、家にVPNを張らなくても、家と携帯間の通話が無料になります。

発信の設定

extensions.conf に発信の設定を追加します。

exten => _0.,1,Dial(SIP/${EXTEN}@fusion

@以下は sip.conf で定義したセクション名です。
この設定では、0で始まる番号はfusionアカウントで発信するという設定になっています。ここの設定をいじることで、例えばfusionアカウントのみへの発信や、家族の携帯のみへの発信などに制限することができます。

このままの設定だと、アカウントとパスワードがわかっていまうと有料通話できてしまうので、せめてプレフィックスで外線発信が簡単にできないようにしようと思います。ということでさっきの設定は消して。

;exten => _0.,1,Dial(SIP/${EXTEN}@fusion
exten => _999.,1,Set(CALLERID(num)=電話番号)
exten => _999.,1,Set(CALLERID(name)=電話番号)
exten => _999.,n,Dial(SIP/${EXTEN:2}@fusion1)

電話番号は050も含めた電話番号を記述します。

ちょっとした気休めなのですが、こうすることで999をつけないと外線発信できないようになります。
${EXTEN:2}はプログラミングのスライスみたいな感じですね。最初の3桁の数字はプレフィックスですよーという意味になるっぽいです。0から数えるので3桁の場合は2に、4桁の場合は3になります。

というわけで、最終的に extension.conf は以下のようになりました。

[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
MYNUMBER=050xxxxxxxx ;電話番号はグローバル変数に格納してみた

[fusion-in]
exten => SIPアカウント,1,Dial(SIP/01&SIP/02&SIP/03,60)
exten => SIPアカウント,2,Congestion
exten => SIPアカウント,102,Busy ;話中の設定も足してみた。

[default]
exten => 01,1,Dial(SIP/01,60)
exten => 01,2,Congestion
exten => 01,102,Busy

exten => 02,1,Dial(SIP/02,60)
exten => 02,2,Congestion
exten => 02,102,Busy

exten => 03,1,Dial(SIP/03,60)
exten => 03,2,Congestion
exten => 03,102,Busy

;exten => _0.,1,Dial(SIP/${EXTEN}@fusion1)
exten => _999.,1,Set(CALLERID(num)=${MYNUMBER})
exten => _999.,1,Set(CALLERID(name)=${MYNUMBER})
exten => _999.,n,Dial(SIP/${EXTEN:2}@fusion)

スモールオフィスとかはもうこれで十分ですね。

【Debian】Asteriskで内線電話環境構築

とりあえず実験。

Asteriskのインストール

Raspberry Pi をPBX化します。
RasPBXという専用のディストリもあるみたいですが、現在内向きDNSとして稼働中なのでRaspbianのままPBX化します。
せっかくAsteriskがパッケージ化されてるのでそれを使います。

$sudo aptitude install asterisk

インストール中に ITU-T telephone code をきかれます。いわゆる国別割り当て番号で、国際電話の時に頭につける2桁の番号ですね。日本は 81 になります。
タイトルに【Debian】とかついてますが、Debianっぽいのはここまで。

Astersikの設定

/etc/asterisk 見たら *.confがなんかいっぱいあって困った。
使いこなすのは結構大変そう。

どうも sip.conf と extensions.conf をいじるみたいです。
で、開いてみたところ。

; Note: Please read the security documentation for Asterisk in order to
; understand the risks of installing Asterisk with the sample
; configuration. If your Asterisk is installed on a public
; IP address connected to the Internet, you will want to learn
; about the various security settings BEFORE you start
; Asterisk.

きちんと読んでセキュリティちゃんとしないとダメよ。と書いてあります。ごもっとも。
で、このファイルだけで 1300行超。。。めんどくさ。

sip.confの設定

ごちゃごちゃしてるので全部消して書き直しました。

generalセクション

まずは全体設定になります。

[general]
context=default
port=5060
binaddr=0.0.0.0
disallow=all
allow=ulaw
allow=alaw
allow=gsm

context=default
extensions.conf 内に定義されるコンテキストと関連付いてます。

port=5060
SIPサーバで使うudpポートです。
デフォルト5060なので、特に理由がなければそのままにしておきます。

binaddr=0.0.0.0
レジストを受け付けるアドレスです。デフォルト 0.0.0.0 (any) になっているので、特に理由がなければそのままにしておきます。
たとえば 192.168.0.0/24 のみに絞りたければ、
binaddr=192.168.0.0/255.255.255.0
みたいに書くようです。

disallow=all
allow=ulaw
allow=alaw
allow=gsm

コーデックの設定になります。最初にすべて無効にしてから、使うコーデックを並べます。

各番号の設定

[01]
type=friend
username=01
secret=pass
canreinvite=no
host=dynamic

[02]
type=friend
username=02
secret=pass
canreinvite=no
host=dynamic

[03]
type=friend
username=03
secret=pass
canreinvite=no
host=dynamic

内線番号 01-03 を設定しています。

type=friend
user -> 発信専用
peer -> 着信専用
friend -> 発着信

username
SIPクライアントがSIPサーバに接続する際に使用するユーザ名です。別になんでもいいと思いますが、番号にしておきます。

secret=pass
SIPクライアントがSIPサーバに接続する際に使用するパスワードです。

canreinvite
Asteriskが音声ストリーム(RTPパケット)を中継するかどうかを指定します。

host
内線番号に対するIPアドレス(ホスト名)を指定します。我が家の無線LANはDHCP割り当てになっているので、dynamicにしました。

ということで、sip.conf は以下のようになります。

[general]
context=default
port=5060
binaddr=0.0.0.0
disallow=all
allow=ulaw
allow=alaw
allow=gsm

[01]
type=friend
username=01
secret=pass
canreinvite=no
host=dynamic

[02]
type=friend
username=02
secret=pass
canreinvite=no
host=dynamic

[03]
type=friend
username=03
secret=pass
canreinvite=no
host=dynamic

extension.confの設定

extensions.conf では発着信時の動作を定義します。この発着信時の動作はダイヤルプランと呼ばれています。

general セクションの設定

[general]
static=yes
writeprotect=no
clearglobalvars=no

static=yes
writeprotect=no
この設定をしておくと、コマンドラインインタフェースから”dialplan save”コマンドを実行した場合に、ダイアルプランの上書き保存ができるようです。インストール時のデフォルトで明示的に設定されていますので、そのまま残しておくことにします。

clearglobalvars=no
yesにしておくと、asteriskまたはextensionをreloadした際に、グローバル変数がクリアされ、元の値に戻ってしまうようです。インストール時のデフォルトで明示的に設定されていますので、そのまま残しておくことにします。

globals セクションの設定

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=DAHDI/G2
TRUNKMSD=1

グローバル変数の設定みたいです。ここも基本的にはインストール時のデフォルトで設定されているものをそのまま残しています。設定値の意味などは後で調べます。

コンテキストの設定

[default]
exten => 01,1,Dial(SIP/01,60)
exten => 01,2,Congestion

exten => 02,1,Dial(SIP/02,60)
exten => 02,2,Congestion

exten => 03,1,Dial(SIP/03,60)
exten => 03,2,Congestion

sip.conf で context= に設定した値と紐付いています。実際の発着信時の制御はここに記述します。
ワイルドカードなども使えますが、それぞれの内線番号に対して、動作を定義しました。
exten => 番号, プライオリティ, 動作
という記述方法になっています。

この設定では、着信があった場合まずプライオリティ値1の動作をします。

exten => 03,1,Dial(SIP/03,60)
SIP端末(ここでは内線番号03)を60秒間鳴らします。もしこの間に電話を取った場合は、そのまま通話が可能になります。
60秒経過後、誰も電話をとらない場合は、プライオリティ値2の動作に移ります。

exten => 03,2,Congestion
Congestion は発信側が切るのを待ちます。発信側が切るまでは、切断音が流れます。

Busy とか Voicemail とか、色々できるようなので、少しづつ設定増やしていく予定です。

ここまでの設定をまとめると、extensions.confはこんな感じになります。

[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=DAHDI/G2
TRUNKMSD=1

[default]
exten => 01,1,Dial(SIP/01,60)
exten => 01,2,Congestion

exten => 02,1,Dial(SIP/02,60)
exten => 02,2,Congestion

exten => 03,1,Dial(SIP/01,60)
exten => 03,2,Congestion

ここまでで、ネットワーク内のPCにSIPクライアントをインストールするなどすればPC同士で音声通話ができるようになるはずです。

$asterisk -vvvr

で Asterisk のCLIに入れます。v オプションで verbosity を制御します。
つまりオプションに v を重ねるとデバッグログがたくさん出るようになります。

とりあえず SIP クライアントが接続できることを確認するには v 3つです。

CLIに入ったらまず設定を反映させるため、reload コマンドを発行します。
sip show users コマンドで、ユーザ名 01~03 が表示されたのでとりあえずOK。

Username                   Secret           Accountcode      Def.Context      ACL  ForcerPort
01                         pass                              default          No   Yes
03                         pass                              default          No   Yes
02                         pass                              default          No   Yes

SIPクライアントを登録すると、
-- Registered SIP '01' at 192.168.xxx.xxx:5060
みたいなログが出力されます。

ちなみに、このRasPiは内向きDNSのほかに、外から乗り込んできて各種PCにマジックパケットを投げてWOLで起動させたりとか、トラフィックの計測とか、色々役目があったので別セグメントにいたのですが、セグメントが違うとSIPサーバーにレジストできなかったので、とりあえず同じセグメントに移設しました。

とはいえ、色々弊害が出てしまうので別セグメントからでもSIPサーバーに登録できるようにごにょごにょしてみる予定です。

つーか色々やらせすぎなので、cuBoxかBeagleBoneかRasPi買い足してもいいかもですね。

※NetattestとかInfobloxも触ってみたいのですが

カプトンテープなんていらなかった件

久々に3Dプリンタの話。
ここまでのあらすじ的なアレ
いろいろ試行錯誤してまして。

とりあえずラピッドプロトタイピングという意味では十分実用レベルの出力をしてくれてるのですが、ファーストレイヤの固着が難しく、うまく固着したと思っても完成間近で剥離して残念な結果になることが多く、ベッドにうまく固着する方法を探していました。

カプトンテープ

カプトンテープまたはポリイミドフィルムなどと呼ばれるものをベッドに貼り付けると固着しやすいというのが3Dプリンタ界の常識?なわけですが、PLAはABSほどカプトンテープには食いつきません。
また、数回使用すると食いつきが悪くなるので定期的な交換が必要になります。
しかし、ロール3,000円とかする高価なテープをホイホイ使えないわけですよ。(貧乏性)

スティックのり

そこで、巷で噂のスティックのりを使ってみることにしました。
どういう理屈なのかまったくわかりませんが、がっちり固着するわけです。
ところが今度は剥がせなくなりました。
もう壊れるくらいひっぱたりマイナスドライバーでこじったり、炙ったヘラでゴリゴリやってようやく剥がせるレベルで固着します。

まったく使えない。

基板テープ

液体のりとか、マスキングテープとか、両面テープとか、色々試してみましたがいまいちうまくいかない。
紙っぽいマスキングテープが一番いい感じでした。

そこで、以前の職場で使っていた通称「基板テープ」というものをふと思い出しました。
・なんか黄色っぽかったこと
・たぶん3Mなこと
というあいまいな情報を頼りに探し回りました。
そこで見つけたのがこれ。

ドラフティングテープ

ドラフティングテープ、だそうです。
これは、かなりいい感じです。安いですし。

表面がザラザラのシボ加工なのでカプトンテープのように表面つるつるにはなりませんが、
強すぎず弱すぎずでベッドに固着してくれてます。

結論:カプトンテープいらない

シェルスクリプトでssh越しにコマンドを実行する

タイトルからして頭悪い感じですが、必要に迫られてちょっと調べてみました。
sshにパスワードをパイプする方法。

たとえば telnet であれば echo と sleep を使って自動ログインしてコマンド実行などが簡単にできます。

#!/bin/bash
sleep 1; echo "username"
sleep 1; echo "password"
sleep 5; echo "ls -l"
sleep 1; echo "exit"

こんな感じで使います。

$./cmd.sh | telnet example.com

うわぁ・・・頭悪い感じですね。。。

ところがsshだとパスワードをパイプできません。

$ echo password | ssh user@example.com
Pseudo-terminal will not be allocated because stdin is not a terminal.
user@example.com's password:

この手のスクリプトを組む場合は、パスフレーズなしの鍵認証にして、
$ssh user@example.com ls -l
とかするか、expect というのを使うのが定石っぽいです。

パスフレーズなしの鍵認証にしておくのが精神衛生上一番良い気がします。

とはいえ、大人の事情でexpectを入れるとか、パスフレーズなしで認証できるようにするとかができないことはよくありますよね。

プログラムのインストールはダメなのに平文でユーザ名とパスワードをサーバ上に置いておくのはOKってどゆことよ。。。

閑話休題

色々調べたところ、$SSH_ASKPASSを使えばできそうだということがわかったので早速検証してみました。
GUIプログラムでユーザにsshのパスワードを入力させるために用意された仕組みですが、stdinからSSHのパスワードを読ませることができます。というか、できました。

#!/bin/bash
if [ -n "$PASSWORD" ]; then
  cat <<< "$PASSWORD"
  exit 0
fi
read PASSWORD
export SSH_ASKPASS=$0
export PASSWORD
export DISPLAY=dummy:0
exec setsid "$@"

エラー処理?
(´・ω・`)知らんがな。

適当に存在しないDISPLAYを指定して、setsidでttyからdetachしてます。

で、このスクリプトをssh_pass.shとかにしておいて、こんな感じで使います。
$echo password | ./ssh_pass.sh ssh user@example.com "ls -a"

【Debian】BIND9の設定

FireWallをいただいたので、一度自宅のネットワークを綺麗に整えようと思い立ち、ごにょごにょしております。で、今までなんとなくしか理解していなかったDNSの仕組みとかBIND9の設定とかについてちょっとお勉強しましたので、主にDebianでのBIND9の設定に関してメモしておきます。

ただ単にDNSサーバ建てたいということならBINDよりもdnsmasqの方がいいんでしょうか。

ポインタ

とりあえずこのあたり読む。

  • /usr/share/doc/bind9/README.Debian.gz
  • bind9-doc (なぜhtmlなのかと小一時間)
  • Bind9 – Debian Wiki

BIND9ファイル構成

DebianでBIND9インストールするとこんな構成になってます。
/etc/bind/ 以下に配置されます。私の嫌いなディストリビューションとか(何)はchroot前提だったりして全然違うところに配置されたりします。

$ls -l /etc/bind/
total 52
-rw-r–r– 1 root bind 2389 Jul 24 13:46 bind.keys
-rw-r–r– 1 root bind 237 Jul 24 13:46 db.0
-rw-r–r– 1 root bind 271 Jul 24 13:46 db.127
-rw-r–r– 1 root bind 237 Jul 24 13:46 db.255
-rw-r–r– 1 root bind 353 Jul 24 13:46 db.empty
-rw-r–r– 1 root bind 270 Jul 24 13:46 db.local
-rw-r–r– 1 root bind 3048 Jul 24 13:46 db.root
-rw-r–r– 1 root bind 463 Jul 24 13:46 named.conf
-rw-r–r– 1 root bind 490 Jul 24 13:46 named.conf.default-zones
-rw-r–r– 1 root bind 165 Jul 24 13:46 named.conf.local
-rw-r–r– 1 root bind 890 Jul 24 13:46 named.conf.options
-rw-r—– 1 root bind 77 Jul 24 13:46 rndc.key
-rw-r–r– 1 root bind 1317 Jul 24 13:46 zones.rfc1918

(あ、時間見て気づいたけどこのサーバー、タイムゾーンの設定間違ってるわ。。。)

BIND9の設定ファイルとか

named.conf

メインの設定ファイルですが空っぽです。
named.conf.* が include されてるだけです。
ここに直接書かないのがお作法みたいです。
ごちゃごちゃといろいろ書くよりわかりやすいけどファイル数が多いと最初びびります。

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include “/etc/bind/named.conf.options”;
include “/etc/bind/named.conf.local”;
include “/etc/bind/named.conf.default-zones”;

named.conf.options

BINDの設定が書かれています。

再起問い合わせとキャッシュの返答は localhost と localnets に限定されてます。
ちょっと前までは any だったらしいです。こわいですね。設定例とか探してるとallow-queryとか設定してるのが多いのはそういうわけなんですね。

変更箇所は dnsseq-validation no です。デフォルトはautoになってます。これはsyslogにno valid RRSIGエラー出まくる対策で入れました。

あとは、listen-on-v6 { any; }; をコメントアウトしました。IPv6を最初に見にいってsyslogにnetwork unreachable resolvingを吐くので。

named.conf.default-zones

ルートサーバ、ローカルサーバのデフォルトのゾーン設定が書かれています。
ここはさわりませんでした。

named.conf.local

このファイルに正引き逆引きの設定追加。このへんの書き方はその辺にいくらでも転がってますね。

db.*

正引き設定ファイルと逆引き設定ファイル。

チェック

設定ファイルのチェック

$ sudo named-checkconf
$ named-checkzone example.com db.example.com

オープンリゾルバチェック

そもそも外部公開してないので心配ないのだけど、こんなのもありますよ。という話。
$ wget -qO - http://www.openresolver.jp/cli/check.html

課題

  • dnsseqがデフォルト有効になっているため、syslogにエラーがでまくってたのでdnsseq-validation noにしといたけど、正直わかってない。
  • たまにsyslogにFORMERRが出てるけどなんですかこれは。
  • nslookup すると サーバー:UnKnown ってなるけどこれは何を設定すればいいのかわからなかった。

↓ 読んどくべきかなぁ…

【Xfce4】タイルっぽく配置できるようにする

Windows7で使える Windowsキー + ← とか Windowsキー + → といった挙動をさせたいので設定してみました。

メニュー → 設定 → 設定マネージャ → ウィンドウマネージャ → キーボード
からショートカットキーの設定をします。

他にも色々ショートカット設定できて便利。

【Xfce4】メニューのロゴを変更する

Debian Jessie から (現時点では) Xfce4 がデフォルトのデスクトップ環境となる予定です。ネズミのロゴがなんとも残念なので Debian のグルグルに変更しましょう。

アプリケーションメニューを右クリックして、プロパティを選択します。

アイコンをクリックします。
“アプリケーションメニュー”というテキストを変更したい場合は、ボタンラベルの値を変更します。空欄にするとアイコンのみ表示されるのでおすすめ。

アイコンを選択:すべてのアイコン
アイコンの検索:logo

で、debian-logo を選択し、OKをクリックします。

完成。

CCENT合格体験記

ネットワークとかも一応さわったりするなんでも屋として、最低でもCCNAは持ってなきゃだめだろ。と思ったのでCCENT取ってきました。
CCNAちゃうんかーいとか言わないで。受験料高いんだし安全に行きたいじゃないですか。

ということで合格報告です。

まあ正直これ落ちたらエンジニアとか名乗っちゃいけないレベルだよね。。。
RPGで言えば一番最初に発生するチュートリアル的位置付けの戦闘なわけですよ。
もう4天王の中で最弱とかいうレベルじゃなく弱いやつなんです。

で、K’sの中のパソコン教室で受けてきたんだけど、会場アカンやつだった。
壁っていうか仕切りだよね、あれ。外の音まる聞こえ。

試験中ずーっと「♪新製品が安い、ケーズでんきっ!」を聞かされる身にもなってください。

それから、こっちは予約して行ってるのに会場準備してないわけ。
試験用端末の電源入ってないどころか電源ケーブルささってないわ、キーボードとか埃まみれだわ、もう色々とアレ。
まぁこんな地方都市で受ける人っていないんだろね。

あと試験センターとしてなってない。
持ち込みできないとか言うメールきたわりには手元に荷物置いとけるわけですよ。
プロメトリックの試験センターでは私物品全部ロッカー入れて…とかやってたのに、ピアソンぬるすぎるわ。
あの会場だったらチートシート持ち込んでも何も言われなそう。

つーことで、なんか対応にいちいちイライラしながら、試験の準備がなんとかできて、試験開始。

僕は長らく、偉大なる計算機でありUnixの祖であるPDP-11を信仰の対象としてきたわけだけど、試験開始直前には思わず偉大なる箱インプ様に祈りを捧げましたね。

「偉大なる箱インプ様、このクソい試験がさっさと終わりますよーに」

インプ様、きっちり僕の願いを聞いてくれやがったんですよ。
最後の問題解いたらしれっと終了しやがったわけです。

エッ………ナニコレ、モドレネーノ?

OMFG!

後でやろうと思って適当に答えた問題10問くらいあったんだけど…

いや、ちゃんと調べず凸する僕にも非があるわけです。

無事合格してましたけどね。
でもこれ合格したからなんだというわけじゃないんだよねー。
自分でいうのもアレだけど、お勉強は得意な方なので座学で闘える試験なんてラクショーなんですよ。

結局こういう資格試験って「自分は無能ではありません」程度の価値しか持たないんじゃないかと思います。
CCIEとかになるとまぁ話は別かもしれないですけどね。

無能じゃなくって良かった!
ありがとうインプ様。

Foldarap 改良(2)

最近まとまった時間が取れずあんまり3Dプリンタ充できてませんでした。

Foldarapの現状ですが、それなりに出力できるようになっています。写真で見ると問題無いように見えますね。
精度もまぁまぁ実用レベルで、5cmの立方体で誤差0.5mm以内を達成しています。

とはいえ、まだまだ満足いく出力結果を得られていません。

現状の問題点はとりあえず以下の3点となります。

  • 出力品が反る
  • X軸方向の移動量が安定しない
  • 射出量が安定しない

出力品が反る件の対策

出力品が反る件については、ヒートベッドを使えていないことが問題なので、ペルチェを 8A から 6A に交換し、電源が落ちる問題を回避します。ΔTmaxが66℃程度なので、PLA専用機として考えると熱輸送量的には充分です。

ということでペルチェを交換しました。

ヒートベッドを使えるようになったおかげでカプトンテープだけでステージに固着するようになり、スティック糊の厚塗りが不要になりました。

残り2つの問題に対しては、ぼちぼち対策してこうと思っています。

X軸方向の移動量が安定しない件の対策

タイミングベルトが緩んでいるのが原因ですが、締めつけすぎると今度はZ軸方向の動きに支障が出るようになり、誤差が増えてしまうようです。

ステッピングモータのおまけでついてきたタイミングベルトですが、どうやら硬すぎるようなので、柔らかいものに交換してみるつもりです。

椿本チエイン製のタイミングベルトが良いという情報をいただいたので、Monotaroに発注をかけました。届き次第交換予定です。

射出量が安定しない件の対策

エクストルーダに問題があると踏んでいます。
押し込み時のひっかかりや内部接触抵抗が大きく、ステッピングモータのトルクが足りていないことが原因ではないかと考えています。

FoldaRapは精度よりもポータビリティ重視の機体なので、ステッピングモータもNEMA14という、本来RepRap系の3Dプリンタではあまり使用されない小さいモータを使用しています。

調べたところ、NEMA14をエクストルーダで使っている国内のビルダーは殆どいないようでした。そもそもNEMA14自体トルク不足気味 (2.3V で 9N.cm)なのですが、Mk7などのダイレクトドライブギア前提で設計された部品を無理矢理、平歯車に合わせているため、ボーデンへの押し込みにかなり無理があるのです。

それでも以前はなんとか動作していました。エクストルーダの部品を破損し、強引に修正した際に、継手の接続角度がきつくなってしまったことで、押し込み時の抵抗が増大してしまったようです。

ということで、平歯車に合わせたエクストルーダを再設計中ですが、再設計をしたエクストルーダを出力する必要があるわけで、卵か鶏か的な壁にぶち当ってます。。。