Pocket OperatorのリズムをArduinoから制御する

これは何?

Pocket Operator(ポケットオペレーター)という音楽ガジェットをご存知でしょうか?

Teenage Engineering ポケットオペレーター 8bitシンセ PO-28 robot 【正規輸入品】

Teenage Engineering ポケットオペレーター 8bitシンセ PO-28 robot 【正規輸入品】

 

 電卓のようなボタンをポチポチ押すことで素敵なビートを奏でてくれるガジェットです。

 

このPocket Operator、他の音楽ガジェットと同期する機能があります。

同期機能

Pocket Operatorの裏側にはオーディオジャックが2つ搭載されています。

1つは出力用で、ヘッドホンやスピーカにつなげます。もう一つは入力用で、デフォルトの動作はミキサーのように振舞います。

 

この入力用のオーディオジャックは設定によって、同期信号を受け取るようにできます。そうすることで複数のPocket Operatorのリズムを同期させることができます。

 

f:id:inajob:20190518175318p:plain

(https://www.youtube.com/watch?v=IApamM65si4 より)

今回は、この同期機能をArduinoから利用する方法を紹介します。(この方法は場合によってはPocket Operatorを壊してしまうかもしれません。実験する際は自己責任でお願いします。)

マイコンなしで実験

Arduinoなしでも、同期機能を試すことができます。

pocket operators – frequently asked questions

このページに詳細が記載されていますが、同期信号は5V以内で入れてくれ、とのこと。

また、同期信号は基本的にはオーディオの左チャンネルから送り、右チャンネルはオーディオを流すこともできます。

 

これらの機能は切り替えることができます。モードはSY<数字>という表記で表されます。

  • SY0 入力はステレオで受け取り、ミックスした結果をステレオ出力
  • SY1 入力はステレオで受け取り、ミックス結果を右チャンネル、同期信号を左チャンネル
  • SY2 入力は同期信号、出力はステレオ出力
  • SY3 入力は同期信号、ミックス結果を右チャンネル、同期信号を左チャンネル
  • SY4 モノラル入力を右チャンネルで受け取り、左チャンネルは同期信号。ミックス結果をステレオ出力
  • SY5 モノラル入力を右チャンネルで受け取り、左チャンネルは同期信号。ミックス結果を右チャンネル、同期信号を左チャンネル

さて、今回はリズムを別で作成してPocket Operatorを同期させるので、SY2 - SY5のどれかを設定するのがよさそうです。

とりあえずSY4にします。切り替えるのは「bpm」を押しつつ、右ノブの下のボタンを押します。

そして次のような回路を用意します。

f:id:inajob:20190518135401p:plain

 何でも良いのですが5Vを作って、その信号をスイッチを押したときだけ左チャンネルに流すようにします。スイッチを押していないときはGNDレベルにしたいので、1KΩでプルダウンさせます。

この回路のオーディオジャックとPocket Operatorの入力側のオーディオジャックをケーブルで接続します。

 

すると、ボタンをカチカチすると、Pocket Operatorのリズムが進むようになります。

これで、手動でリズムを制御することができました。

 

 Arduinoから制御する

ここまでくればArduinoで実行するのも簡単です。DigirtalWriteでLow Highを繰り返すことで、Pocket Operatorのリズムを制御することができます。

 

f:id:inajob:20190518140113p:plain

#define LEFT_CH 5
#define LED 13

void setup() {
  pinMode(LEFT_CH, OUTPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
  digitalWrite(LEFT_CH, HIGH);
  digitalWrite(LED, HIGH);
  delay(100);
  digitalWrite(LEFT_CH, LOW);
  digitalWrite(LED, LOW);
  delay(100);
}

こんなソースコードを書くことでArduinoのLEDの点滅に合わせてPocket Operatorのリズムをならすことができます。 

 

 

 さらに下記のようにすると8ステップごとにテンポを変更するというわけのわからないリズムを作ったりもできます。

#define LEFT_CH 5
#define LED 13

void setup() {
  Serial.begin(9600);
  pinMode(LEFT_CH, OUTPUT);
  pinMode(LED, OUTPUT);
}

int wait =150;
void loop() {
  for(int i = 0; i < 8; i ++){
  digitalWrite(LEFT_CH, HIGH);
  digitalWrite(LED, HIGH);
  delay(wait);
  digitalWrite(LEFT_CH, LOW);
  digitalWrite(LED, LOW);
  delay(wait);
  }

  wait = random(50, 400);
}

 まとめ

ArduinoなどのマイコンからPoecket Operatorのテンポを制御する方法を紹介しました。音楽系のガジェットを作っている方は、ぜひPocket Operatorとの同期機能を実装してみてください。

f:id:inajob:20190518174543p:plain

VPS上に作ったkubernetesクラスタをv1.13系からv1.14系にアップグレードする

はじめに

f:id:inajob:20190418200920p:plain

僕はVultrという海外VPSのマシンを2台借りて、すごくチープなKubernetesクラスタを構築しています。下記が少し古いですが、セットアップ方法です。

inajob.hatenablog.jp

 

で、記事にはしていなかったのですが、このクラスタ、アップグレードを重ねてv1.13.2の状態になっていました。

 

今回この記事では、v1.13.2から最新のv1.14.1にバージョンアップした方法を紹介しようと思います。

 

アップグレードの苦労

今までのバージョンでのアップグレードは、実は何度も失敗してきました。失敗というのはKubernetesクラスタを構成するコンポーネントが立ち上がらなくなってしまい、kubeadmによるupgradeができなくなってしまうことです。

そうなるとクラスタを1から作り直していたのですが、そうすると当然クラスタ内にデプロイしていたアプリケーションを再度デプロイしなおす必要があります。クラスタ内で動作しているアプリケーションのmanifestは手元にあるので、それほど苦労することもないのですが、、結構悔しいです。

 

注意:これは我が家のクラスタがmaster 1台という推奨とは違う構成になっているのが主な原因です。masterを3台などでHA構成することで、ローリングアップデートができるようになり、そうすればアップグレードももっと簡単にできます。(激安クラスタの運命ですね。。)

 

ということで、今回は慎重に作業しようと誓いながら作業を始めました。

 宣伝コーナー!!

僕がKubernetesクラスタを動かしているVultrという海外のVPSサービスです。下記リンクから申し込むと$50のクーポンがつくはずです。

前述の記事の方法でセットアップすれば実質無料でおよそ5か月Kubernetesクラスタを運用できます。

よく似たサービスにDigitalOceanがありますが、VultrはTokyoリージョンがあるという点が大きな違いとなっています。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

www.vultr.com

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

参考

本家にかなり詳しいアップグレードマニュアルがあります。なので詳しい人はこれを見ればアップグレードできるはず・・です。

kubernetes.io

 素直に指示に従ってみる

 まずはmasterのアップグレードです

 # apt-get update
 # apt-mark unhold kubeadm && apt-get update && apt-get install -y kubeadm=1.14.1-00 && apt-mark hold kubeadm
 ...
 The following packages have unmet dependencies:
  kubelet : Depends: kubernetes-cni (= 0.6.0) but 0.7.5-00 is to be installed

あれ?

kubernetes-cniというものをバージョンアップしようとしたが、kubeletが期待しているものと違う。ということらしい。

以前のインストールでkubeletのバージョンはapt-markによって固定しているので、それが原因でしょう。

しかし、ここでkubeletの固定を解除して、一気にkubeadmとkubeletをアップグレードしてはいけません。毎回ここで間違えます。そうするとkubeadmがkubeletの新しい設定を作る前に新しいkubeletが起動してしまい、コンポーネントが正しく起動しなくなってしまうことが過去にありました。

(今回もダメなのかどうかは確かめていないのでわかりませんが・・)

 ひとまずmasterをv1.13.5にアップグレードする

とりあえず、今はv1.13.2ですが、これをいきなりv1.14.1にするのではなくv1.13.5というv1.13系の最新のパッチバージョンに上げたのちに、v1.14.1にする。という作戦でいくことにしました。

 

# apt-mark unhold kubeadm && apt-get update && apt-get install -y kubeadm=1.13.5-00 && apt-mark hold kubeadm
 The following packages have unmet dependencies:
  kubelet : Depends: kubernetes-cni (= 0.6.0) but 0.7.5-00 is to be installed
 E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

 

 え、これもできないのか・・

パッチバージョン間のバージョンアップ方法はドキュメントに明記していないが、このタイミングならkubeadmとkubeletを一気に上げても大丈夫では? と考え

# apt-mark unhold kubeadm kubelet && apt-get update && apt-get install -y kubeadm=1.13.5-00 kubelet=1.13.5-00 && apt-mark hold kubeadm kubelet
 

 を実行。無事 v1.13.5にアップグレードできた。

v1.13.5のkubeadmでクラスタ

# kubeadm upgrade plan
 [preflight] Running pre-flight checks.
 [upgrade] Making sure the cluster is healthy:
 [upgrade/config] Making sure the configuration is correct:
 [upgrade/config] Reading configuration from the cluster...
 [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
 [upgrade] Fetching available versions to upgrade to
 [upgrade/versions] Cluster version: v1.13.2
 [upgrade/versions] kubeadm version: v1.13.5
 I0418 02:03:25.771423   15661 version.go:237] remote version is much newer: v1.14.1; falling back to: stable-1.13
 [upgrade/versions] Latest stable version: v1.13.5
 [upgrade/versions] Latest version in the v1.13 series: v1.13.5
 
 Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
 COMPONENT   CURRENT       AVAILABLE
 Kubelet     1 x v1.13.2   v1.13.5
             1 x v1.13.5   v1.13.5
 
 Upgrade to the latest version in the v1.13 series:
 
 COMPONENT            CURRENT   AVAILABLE
 API Server           v1.13.2   v1.13.5
 Controller Manager   v1.13.2   v1.13.5
 Scheduler            v1.13.2   v1.13.5
 Kube Proxy           v1.13.2   v1.13.5
 CoreDNS              1.2.6     1.2.6
 Etcd                 3.2.24    3.2.24
 
 You can now apply the upgrade by executing the following command:
 
         kubeadm upgrade apply v1.13.5
 
 _____________________________________________________________________

できそう!

ということでアップグレード

 # kubeadm upgrade apply v1.13.5 
 
 [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-apiserver.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2019-04-18-02-04-52/kube-apiserver.yaml"
 [upgrade/staticpods] Waiting for the kubelet to restart the component
 [upgrade/staticpods] This might take a minute or longer depending on the component/version gap (timeout 5m0s)
 Static pod: kube-apiserver-kubernetes hash: 1b4484ac0b54c491dc5cfe4d158f31c0
 Static pod: kube-apiserver-kubernetes hash: 1b4484ac0b54c491dc5cfe4d158f31c0
 Static pod: kube-apiserver-kubernetes hash: 1b4484ac0b54c491dc5cfe4d158f31c0
 Static pod: kube-apiserver-kubernetes hash: 1b4484ac0b54c491dc5cfe4d158f31c0
 Static pod: kube-apiserver-kubernetes hash: 1b4484ac0b54c491dc5cfe4d158f31c0
 [upgrade/apply] FATAL: couldn't upgrade control plane. kubeadm has tried to recover everything into the earlier state. Errors faced

死んだ!!!

 

kubeletのログを見ると、このログを最後にkube-apiserverが起動していない、nodeのconditionが異常だったのかな?

Apr 18 02:09:59 kubernetes kubelet[15375]: W0418 02:09:59.079140   15375 eviction_manager.go:160] Failed to admit pod kube-apiserver-kubernetes_kube-system(1b4484ac0b54c491dc5cfe4d158f31c0) - node has conditions: [DiskPressure]

あきらめずにkubeletをrestartしてみる

# systemctl restart kubelet

無事kube-apiserverが復活 何だったんだ・・

# docker ps |grep apiserver
 1044739d1d01        177db4b8e93a                        "kube-apiserver --au…"   About a minute ago   Up About a minute                       k8s_kube-apiserver_kube-apiserver-kubernetes_kube-system_1b4484ac0b54c491dc5cfe4d158f31c0_0
 d0b403dc4ec2        k8s.gcr.io/pause:3.1                "/pause"                 About a minute ago   Up About a minute                       k8s_POD_kube-apiserver-kubernetes_kube-system_1b4484ac0b54c491dc5cfe4d158f31c0_0

もう一度アップグレードを実行してみる。

# kubeadm upgrade apply v1.13.5
 ...
 [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.13.5". Enjoy!
 
 [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.

今度はうまくいった!

$ kubectl get nodes
 NAME         STATUS    ROLES     AGE       VERSION
 kubernetes   Ready     master    129d      v1.13.5
 worker01     Ready     <none>    129d      v1.13.2

kubectlでも上がっていることが確認できた。

 

workerをv1.13.5にアップグレードする

workerも上げておく

# apt-mark unhold kubeadm kubelet && apt-get update && apt-get install -y kubeadm=1.13.5-00 kubelet=1.13.5-00 && apt-mark hold kubeadm kubelet

(kubeadmは上げておく必要があったかな?)

$ kubectl get nodes
 NAME         STATUS    ROLES     AGE       VERSION
 kubernetes   Ready     master    129d      v1.13.5
 worker01     Ready     <none>    129d      v1.13.5

 

masterをv1.14.1にアップグレードする

ここからはあっさりとアップグレードできました。

# apt-mark unhold kubeadm && apt-get update && apt-get install -y kubeadm=1.14.1-00 && apt-mark hold kubeadm
 ...
 The following packages will be upgraded:
   kubeadm
 1 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
 Need to get 8,150 kB of archives.
 After this operation, 3,171 kB of additional disk space will be used.
 Get:1 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubeadm amd64 1.14.1-00 [8,150 kB]
 Fetched 8,150 kB in 0s (9,463 kB/s)
 (Reading database ... 99264 files and directories currently installed.)
 Preparing to unpack .../kubeadm_1.14.1-00_amd64.deb ...
 Unpacking kubeadm (1.14.1-00) over (1.13.5-00) ...
 Setting up kubeadm (1.14.1-00) ...
 kubeadm set on hold.

 

# kubeadm upgrade plan
 ...
 Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
 COMPONENT   CURRENT       AVAILABLE
 Kubelet     2 x v1.13.5   v1.14.1
 
 Upgrade to the latest stable version:
 
 COMPONENT            CURRENT   AVAILABLE
 API Server           v1.13.5   v1.14.1
 Controller Manager   v1.13.5   v1.14.1
 Scheduler            v1.13.5   v1.14.1
 Kube Proxy           v1.13.5   v1.14.1
 CoreDNS              1.2.6     1.3.1
 Etcd                 3.2.24    3.3.10
 
 You can now apply the upgrade by executing the following command:
 
         kubeadm upgrade apply v1.14.1
 
 _____________________________________________________________________
 
 $ kubeadm upgrade apply v1.14.1
 ...
 [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.14.1". Enjoy!
 
 [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
 
 $ apt-mark unhold kubelet &&apt-get update && apt-get install -y kubelet=1.14.1-00 kubectl=1.14.1-00 && apt-mark hold kubelet
 ...
 # systemctl restart kubelet

 

$ kubectl get nodes
 NAME         STATUS    ROLES     AGE       VERSION
 kubernetes   Ready     master    129d      v1.14.1
 worker01     Ready     <none>    129d      v1.13.5

workerをv1.14.1にアップグレードする

こちらも簡単。少しマニュアルとは違う指定にしましたが、この辺はお好みで。

# apt-mark unhold kubeadm && apt-get update && apt-get install -y kubeadm=1.14.1-00 && apt-mark hold kubeadm
 // どうせworkerが1つしかないからdrainは意図的に行わない
 
 # kubeadm upgrade node config --kubelet-version v1.14.1
 [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.14" ConfigMap in the kube-system namespace
 [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
 [upgrade] The configuration for this node was successfully updated!
 [upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.
 
 //まちがえてkubeletが上がらないようにholdしておく
 # apt-mark unhold kubelet && apt-get install -y kubelet=1.14.1-00 kubectl=1.14.1-00 && apt-mark hold kubelet
 # systemctl restart kubelet

 

すべてがv1.14.1になりました

$ kubectl get nodes
 NAME         STATUS    ROLES     AGE       VERSION
 kubernetes   Ready     master    129d      v1.14.1
 worker01     Ready     <none>    129d      v1.14.1

 

おまけ:metrics-serverの設定

metrics-serverを入れないとkubectl top node, kubectl top podが動作しません。

ということでこの機会にmetrics-serverも入れることにします。

といっても、下記のmanifestを使うだけです。

github.com

 

我が家の環境の場合は

        command:
          - /metrics-server
          - --kubelet-preferred-address-types=InternalIP
          - --kubelet-insecure-tls

と2つ引数を変更する必要がありました。

 

kubelet-preferred-address-typesはnodeの名前でDNS解決できない環境で設定する必要があります。

kubelet-insecure-tlsは手抜きでやっています。本当はちゃんとした証明書を使うようにすべきです。

 

そして無事にkubectl top nodesが実行できました。

$ kubectl top node
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
kubernetes   154m         15%    646Mi           82%
worker01     338m         33%    611Mi           77%

 

 

初めての表面実装に挑戦!失敗とコツのまとめ。

表面実装に挑戦!

RakuChordなどいろいろと作ってきましたが、私はリード部品しか使ったことがなかったです。

しかし、量産なども見据えると表面実装は一度経験しておきたい!ということで表面実装に挑戦してみました。表面実装ができるようになると、PCBAなども安くできるため、夢が広がります。


基板は何でもよかったのですが「電池1本で動く音が鳴るArduinoボード」を作ることにしました。
数々の失敗をしたので後学のためのメモ。「KiCADでリード部品を使う基板は作ったことはあるけど、表面実装部品を使ったものはまだ作ったことがない」という人の役に立てば幸いです。

 

電池一本で動く音が鳴るArduinoボード

今回作った基板はこれです。写真の通り大半が表面実装部品です。

f:id:inajob:20190406223019p:plain  f:id:inajob:20190406223245p:plain

  • Arduino Nanoと同じピン配置
  • 単4電池1本駆動(昇圧して5Vにする)
  • イアホンジャックとボリューム
  • タクトスイッチ2つ
  • 電源LEDと制御できるLED

まぁ、開発ボードなので何にでも使えるのですが、「チップチューンプレーヤー」みたいなものを作るときの試作ができるかなと思って設計しました。

基板作成

表面実装の部品を使うためには基本的にはプリント基板を作る必要があります。今回はFusionPCBの5枚$7.9セールを利用しました。(失敗することを考えると10枚はいらないし・・)
基板は今まで何度も作っているので、ここでは表面実装特有の注意点について記載します。

手はんだ用フットプリントが便利

KiCADのフットプリンタには手はんだ用のフットプリントがあり、今回はこれを使いました。はんだを付けやすくするために広めの金属面が確保されています。

f:id:inajob:20190406220842p:plain f:id:inajob:20190406220859p:plain

電解コンデンサのサイズ違い

今回の基板には10uFと22uF、47uFの4種類の電解コンデンサを利用していたのですが、後で調べると47uFの電解コンデンサはフットプリントが少し大きいことがわかりました。

f:id:inajob:20190406221028p:plain

今回は基板を発注と同時に部品を発注したので(しかもスペックがよくわからないAliExpressから)事前にサイズを合わせられなかったことが原因です。

容量がわかれば、ある程度サイズは相場があるのかな?という気もしますがその辺のことはよくわかっていないです。

部品の干渉

3.5mmオーディオジャックと、ボリュームがやや干渉しそうでした。少し斜めに固定することで、ぎりぎり干渉することは避けられましたが、もう少し余裕をもって配置すべきでした。

f:id:inajob:20190406221157p:plain

部品注文

部品はAliExpressや秋月電子から調達しました。

AliExpressの部品はフットプリントが明記されていないものや、書かれたものが間違っていることがあり、結構つらいです。ちゃんと作るときは型番で注文できるところ買うのがお勧めです。(当たり前ですがw)

フットプリント間違い

今回使った昇圧ICはHT7750というものですが、このICパッケージが複数存在します。
SOT-23のつもりで基板を作り、それを買ったつもりだったのですが、SOT-25のものが届きました。
フットプリントは大きさ以外にもピン配置などの違いがあることをあまり意識していなかったので間違えてしまいました。

f:id:inajob:20190406221339p:plain

http://akizukidenshi.com/catalog/g/gI-12555/ より転載)

部品実装

表面実装の部品の実装は非常に肩がこりました・・

ICのはんだ付け

フラックスを使うことで、非常にスムーズにはんだ付けできました。また、Twitterで教えていただいたはんだ付けのやり方の動画が非常に参考になりました。

 要ははんだごてにはんだをのせて、ピンを順にあっためていくだけ、という感じでした。

ICの向きを間違える

十分に注意したのですが、向きを間違えてしまいました。うまく剥がすことができず、ICを一つ無駄にしてしまいました。

f:id:inajob:20190406221556p:plain

コンデンサの容量間違い

AVRにつける16MHzの水晶に付けるコンデンサ、22pFのものであるべきなのですが、間違えて22uFのものを付けてしまっていました。
コンデンサをアソートで買ったため、様々な容量のコンデンサから選ぶところで間違えてしまいました。

f:id:inajob:20190406221749p:plain

表面実装品はパッケージに容量が書いてあるわけではないので、なかなか気づくことができませんでした。後で見てみると、22pFのほうがやや薄く、色も薄いように思いましたが、すべてのコンデンサがこうなのかはよくわかっていません。

そして、ここを間違えるとArduinoは外部発振で動かなくなり、しばらくは「ICが壊れている?」と疑ってしまいました。

ブートローダの書き込み

ATmega328をArduino化するためにICSP端子からFuseの設定とブートローダーをかきこみました。専用の書き込み器を持っていなかったのでFT232RLを使いました(参考:https://make.kosakalab.com/arduino/bootloader/)。

ICSP端子を付けていなかったら、ここで困ってしまうところでした。ICSP端子大事です。

f:id:inajob:20190406222124p:plain

そして前述のコンデンサ容量間違いをした状態だと、Fuseを変更して外部発振モードになった途端にICが動かなくなってしまうという症状になりました。

部品の極性

チップのLEDを扱ったのは初めてで、「向き」がよくわからなかったです。部品の裏面に矢印が書いてあるのと、+側の接点がやや緑色となっていることに気づきました。業界標準なのかな?

f:id:inajob:20190406222353p:plainhttp://www.my-craft.jp/html/aboutled/led_smdled.html より)
電解コンデンサは、黒く塗りつぶされた方向がマイナス極でした。これはリード部品も一緒なので簡単でした。

f:id:inajob:20190406222522p:plain(http://akizukidenshi.com/catalog/g/gP-10416/ より)

ダイオードもリード部品と同じく電流の流れる先の方向に帯がついていました。

便利な道具

温調付きはんだごて
すぐにはんだづけが始められました。 また高い温度にもできるので実装を間違えた部品をはがすのも比較的簡単でした。

精密ドライバー(マイナス)
表面実装部品を押さえたりしました。 

エンジニア +精密ドライバーセット 6本組 DM-20

エンジニア +精密ドライバーセット 6本組 DM-20

 

 ピンセット
表面実装部品をつまんで基板に置きました。

フラックス
基板の接点に塗ることで非常にスムーズにはんだ付けすることができました。これがないとICのはんだ付けは不可能だと思いました。 

まとめ

”初めてのこと”というのは非常に学びが多くて楽しかったです。
これで僕も表面実装部品を使う基板をつくる方法と、実装する方法がわかりました。いよいよ次はPCBAにも挑戦できそう、、かな?

横浜うんこミュージアムの旅

噂のうんこミュージアムに行ってきました

一度聞いたら忘れられないイベント「うんこミュージアム」を見に横浜旅行に行ってきました。

僕にとっては初めての横浜旅行です。仕事終わりに横浜に向かい、夕食+2泊2日の旅行となりました。

ale-box.com

仕事終わりに東京から横浜へ

仕事が終わってから、横浜へ移動。1時間ほどで元町・中華街駅につくことができました。案外横浜って近いんだな・・

f:id:inajob:20190323220028p:plain

招福門で夕食

知人が帰り道ついでに合流できる、ということだったので、妻、友人、僕の3人で中華料理を食べることにしました。

www.shofukumon.com

 

折角の中華料理ということで、少し値が張りましたが「食べ放題」メニューにしました。やはり中華料理は大人数で食べるといいですね!

 

エスカル横浜

元町・中華街駅の近くの「大浴場」のあるホテル、という条件で発見したホテル。

本当に駅から近い。中華街にも近いので今回の旅行にはぴったりのロケーションでした。

f:id:inajob:20190323220116p:plain

(ちょっとKubernetesのロゴっぽいホテルのロゴ)

うんこミュージアム

横浜駅からすぐの「アソビル」で開催されていました。

Twitterなどで非常に人気のイベントだということがわかっていたので、あらかじめ前売り券を購入していました。そして、10時からの開場に備えて9:40ごろに到着しました。

すでにすごい人!

とくに「うんこ」ということで、子供連れのお客さんでいっぱいでした!

イベントの思い出はまだ開催中のイベントですし、ネタバレにならないように、あまりここには書かないことにしますが、非常に楽しいミュージアムでした。

f:id:inajob:20190323220532p:plain

(はしゃぐ僕↑)

f:id:inajob:20190323220317p:plain

(↑いい感じのロックスクリーンの画像が撮れました。)

横浜散歩

その後、天気も良かったので横浜から元町・中華街までを散歩がてら歩いて移動しました。

カップヌードルミュージアムにすごい人だかりができていました(今回は目的とは違うのでスルー)。そして、横浜は風が強い・・結構歩くのに疲れました。

パシフィコ横浜を横目に食事処を探します・・・

築地食堂源ちゃん

中華じゃないものが食べたい、ということで立ち寄ったのがこちら

おいしい海鮮茶漬けをいただきました。

www.mec-markis.jp

赤レンガ卒業設計展2019

赤レンガ倉庫もちらっと中をのぞいてきました。

f:id:inajob:20190323220709p:plain

akarengadiploma2019.wixsite.com

ちょうどこの「赤レンガ卒業設計展2019」という建築コンペイベントをやっていました。

ざっと見ただけなので、写真などは撮っていないのですが、様々な建築物、都市計画のジオラマが大量に展示されていて圧巻でした。

作成手法も様々で、最近流行りの「レーザーカッター」を使ったものも多く、いちMakerとして非常に参考になりました。

 

氷川丸

そのあと、山下公園に展示されている「氷川丸」という船の見学をしました。1930年に建造された、非常に歴史のある船で、歴史的な説明のムービーなども堪能しました。

この氷川丸の「氷川」という名前は埼玉県の「氷川神社」に由来のあるもののようで、我が家の近くにちょうどその「氷川神社」があるため、何か不思議な縁を感じました。

f:id:inajob:20190323220755p:plain f:id:inajob:20190323220832p:plain

↓これがアール・デコ氷川神社の紋章(?)の融合らしい

f:id:inajob:20190323220933p:plain

船の見学が終わったら、一度ホテルに戻り風呂に入って一服しました。

 

中華料理再び 萬珍樓

夕食は再び中華料理。

少し高級な中華料理屋でおいしい中華料理をいただきました。

www.manchinro.com

港の見える丘公園

2日目は「港の見える丘公園」の周りを散策しました。

バラや桜はシーズンではなかったですが、パンジーなどが非常にきれいに咲いていました。

f:id:inajob:20190323221106p:plain

また非常に歴史のある洋館が多く、いくつか中を見学しました。

ROCHE ロシェ

f:id:inajob:20190323221135p:plain

昼ご飯は”横浜らしい洋食”が食べたい。ということでROCHE(ロシェ)で食べました。

オムライスと、ハンバーグをそれぞれ食べたのですが、どちらもおいしかったです。

ブリキのおもちゃ博物館

ちょっと気になるこの博物館、せっかくなので覗いてきました。

個人コレクションの昔のブリキのおもちゃがたくさん展示してあり、非常に見ごたえがありました。

どうやら「トイ・ストーリー」の発想の元となったのが、ここなんだとか・・何気にすごいスポットです。

販売しているおもちゃの中にあった、ゼンマイ式で、稼働時に体内に火花が散るというブリキのロボットが興味深かったです。

 ↓こういうのです。

SPARKING ROBO (スパークリング・ロボ) 青

SPARKING ROBO (スパークリング・ロボ) 青

 

 無 炭火焙煎珈琲

f:id:inajob:20190323221216p:plain

たくさん歩いて疲れたので立ち寄ったのがこちらの喫茶店。ネーミングが「無」とはなんとも中二病心をくすぐられます。

少しお高めのメニューでしたがPayPayが使えたので安く済ませることができました。

www.motomachi.or.jp

横浜人形の家

最後に立ち寄ったのがここです。市松人形からビスクドールまで、日本内外の様々な人形が展示されていて、非常に面白かったです。

www.doll-museum.jp

まとめ

ということで うんこミュージアム目当ての旅行でしたが、横浜は観光地が多く、ついつい色々と見て回ってしまいました。食事に関しては、妻が事前においしいお店を調べてくれていたため、スムーズに食事にありつくことができました。

思ったより近いことも分かったので、また気分転換に遊びに行こうと思いました。

f:id:inajob:20190323225649p:plain



© OpenStreetMap contributors OpenStreetMap著作権について



 

 

RakuChord(らくこーど)販売の後日談

f:id:inajob:20190323155628p:plain

この記事は下記の続きです。まだ読んでいない方は先に下記を読むことをお勧めします。

inajob.hatenablog.jp

 

RakuChordの通販が完売したのち、買っていただいた方からいくつかの報告をいただきました。
OLEDのノイズの件は、以前のブログに記載しましたので参照してみてください。


LM386の故障

f:id:inajob:20190323153016p:plain

「起動してもスピーカーから音が鳴らない」というお問い合わせをいただいた。

f:id:inajob:20190323153054p:plain

イアホン経由だと音が鳴っているようなので、アンプ・スピーカ周りのトラブルであると切り分けできた。
基板の表、裏の写真を見せていただいたのですが、それっぽい原因がわからず、「返品してもらい、手元で診断します」とまで、話していた。

f:id:inajob:20190323153209p:plain
「おそらくLM386というICが壊れているので、こちらで付け替えます。」という話をしたところ「手元にLM386があるので試してみる」というありがたい申し出。
そして無事動作するようになったと報告をいただきました。

一応出荷前にすべてのLM386の動作は確認していたのですが、キッティング時、運搬時、組み立て時のどこかで壊れてしまったようです。販売者としては申し訳ない、というシチュエーションではあるものの、買っていただいたお客様と一緒にトラブル対応をするという貴重な経験となりました。

f:id:inajob:20190323153258p:plain

また、今回「キット」の形での販売だったことが幸いしたのか、チャット越しでの動作確認の依頼や、さらには追加部品の調達などもお客様側で対応していただくことができたため、大きなトラブルにならずに済みました。

L字ピンが説明書と何か違う

f:id:inajob:20190323153350p:plain

”説明書通りに組み立てていたところ「L字ピンヘッダ」が説明書のものと違い、どのように組み立ててよいかがわからない。”
というお問い合わせをいただいた。

そんなことあるか・・?と思いつつ、写真をいただく。出先だったため、家にある組み立て済みのRakuChordと比べることができず、説明書の写真がわかりにくいだけなのか、部品がまずいのかがわからない状態でした。

f:id:inajob:20190323153432p:plain

帰宅後、家にある部品を見て衝撃!
L字のピンヘッダが2種類ある!!

f:id:inajob:20190323153459p:plain

幸い、どちらのピンヘッダでもRakuChordを作るうえでは問題ないことが確認できたので、その旨を返答し説明書を修正しました。

f:id:inajob:20190323153541p:plain
こちらの事例も購入者の方から「逆に勉強になった」といっていただき恐縮しつつも、私も非常に勉強になる事例でした。

製作報告のTweetがすごくうれしい

先週から購入者の方々から続々と製作報告や、演奏動画のアップロードをしていただいています。
RakuChordはマイナーな楽器であるため、本当にこの楽器が欲しい方にその存在を伝えることが課題の一つとなっています。そのため、購入していただいた方が積極的にSNSや動画投稿サイトにRakuChordを露出してくださることが、本当に助けになります。


このブログをご覧の方も是非、RakuChordがらみの投稿があれば拡散を手伝っていただけるとありがたいです。

 

 

 

↓↓↓↓ 折角なので張り合って、作者の演奏例も貼っておきます↓↓↓↓

 まとめ

とにかく、買ってくださった方・拡散してくださった方に感謝です。(前も書きましたが・・)

購入していただいた方には、今後も楽しくRakuChordで遊んでいただき、気が向いたら動画投稿などしていただけると大変ありがたいです!

 

RakuChordを買いたい!という方は下記BOOTHのページで「入荷お知らせメールを受け取る」をクリックしておいてください。次回生産数の参考にします。興味がある!という人f:id:inajob:20190316230251p:plainをクリックしておいてください!

inajob.booth.pm

自作電子楽器RakuChord(らくこーど)の通販までの道のり

ちょいちょいブログでも紹介している、僕の製作している電子楽器「RakuChrd(らくこーど)」ですが、 3/12から通販を開始していました!

f:id:inajob:20190316232850p:plain

f:id:inajob:20190316220543p:plain

予定ではもう少しゆっくり売れていき、この週末の時点では、ブログで宣伝をしているのだろうな・・と思っていたのですが、順調に売れていき、3/13の夜に完売しました!

f:id:inajob:20190316220857p:plain

RakuChordがどんなものか、については公式ページ( RakuChord(らくこーど) - 楽にそれっぽい演奏ができる電子楽器) を見ていただくとして、本日のブログでは通販にこぎつけるまでの流れを紹介しようと思います。

RakuChordのフェーズについて

流れの話の前に、RakuChordの計画について少し書きます。

RakuChordは僕が、「楽に演奏できる楽器」というコンセプトでほぼ10年ほど(!)作り続けている電子楽器です。
販売は昨年のMaker Faire Tokyo 2018で初めて行いまして、今回の通販は2回目の販売ということになります。

inajob.hatenablog.jp

RakuChordはすでに十分に”演奏することができる楽器”にはなっているものの、細かい改良点がまだたくさんある状態です。
基板の発注は最低単位があり、1つだけ、というわけにはいかないため、せっかく作った基板だし、ということでキットで販売をしている、というのが実情です。

RakuChordを買っていただくことで、僕が次のさらに進化したRakuChordや、他の何かを作り始めることができます。
また、RakuChordを他の人に見せびらかしていただくことで、さらに多くの方が、RakuChordに興味を持ってもらうことができ、このサイクルを回しやすくなります。

 

作りかけを売るってこと? と思われるかもしれませんが、RakuChordの開発はライフワークなので、諦めない限り無限に改良できます。その時その時でベストを尽くしていますので、手を抜いてるわけでは無いことをご承知おきください。

RakuChord や inajob への貢献のやりかた

RakuChord自体に興味を持ってくださった方、またそれを作っているinajobに興味を持ってくださった方は以下の方法でこの活動を促進することができます。

 

RakuChordを購入する
これはRakuChord自体に興味がある方向けの方法です。ぜひ本物を手にして、遊んで欲しいです。
さらにフィードバックなどがあればぜひ教えてください。電子回路的なことでも、音楽的なことでもなんでもOKです。 それによりRakuChordがより良いものになります。

RakuChordを拡散する
RakuChordを購入した方はぜひ”演奏してみた動画”をSNSや動画投稿サイトに投稿してください。
購入されていない方も、RakuChord周りの情報を「はてブ」したり「リツイート」したりしてください。( ina_ani (@ina_ani) | Twitter
これによりRakuChordの裾野が広がります。

 

というちょっと宣伝をしたところで、今回の販売に至るまでの流れを紹介していきます。

基板設計・発注

RakuChordはMaker Faire Tokyo 2018でキットとして頒布しました。

f:id:inajob:20190316233245p:plain

次は「通販」に挑戦しよう!と、思いMaker Faire Tokyo 2018が終わったころから活動を開始しました。
もう一度作るからには、気になっている箇所を修正した新バージョンを作ろうと思い立ち、まずは基板の設計から始めることにしました。

今回の主な変更点は

  • I2Cバスの引き出し(この時点ではOLEDを付けた状態で売るかは決めず、とりあえず引き出そう、という感じでした)
  • 全スイッチにダイオードを付ける
  • 他のタクトスイッチがマウントできるようにしたフットプリント
  • タクトスイッチのフットプリントのドリル径が小さすぎて差し込みにくかった問題の修正
  • Arduino Nanoをそのままマウント(これにより5VレギュレータとUSB書き込みが可能となる)
  • 部品をなるべく基板の裏側に配置し、表側にカバーがつけられるようにする

です。

今再確認すると、この基板を発注したのは2018/08/06でした。これはMaker Faire Tokyo 2018の翌日です。やりますね・・自分

f:id:inajob:20190316233130p:plain

思い出すに、Maker Faire Tokyo 2018での販売の準備をしつつ、次の基板の設計も少しずつやっていたのでした。
そして、売れ行きを確認して、自信を持ったので、再度注文を行ったと。 こういうことだったようです。

基板が我が家に届いたのはあまり覚えていませんが、8月末か、9月といったところでしょう。

部品調達1

基板と並行して、組み立てに必要な部品を調達します。ご存知AliExpressを使いました。
注文したのは8/23で、この時は基板の設計に自信がなかったようで、基板は10枚発注したのですが、そのうち2枚を作るのに必要な部品を注文しています。

動作確認

注文した部品が届いたのは、はっきりと覚えていませんが、9月の中旬から下旬といったところでしょう。
ここでドキドキの組み立てての動作確認です。

ここでいくつかの問題が発生しました。

問題1 タクトスイッチがはいらない!

フットプリントの設計に誤りがあり、実際にマウントしたいタクトスイッチがマウントできませんでした。
誤りというのは「3mmのものを通すのに3mmの穴をあける指示を出す」といった感じのやつです。思い当たる方も多いのではないのでしょうか?

f:id:inajob:20190316221631p:plain

しかし、幸い他のタクトスイッチはマウントできるので、セーフ と判断しました。

問題2 Arduino NanoのオンボードLEDの存在を忘れて設計した

今回のボードはArduino Nanoを直接載せています。そのため、D13にはLEDがついています。
僕は設計時にすっかりそのことを忘れていたため、D13はキーの入力に使うことにしていました。キーの片足とLEDの出力が並列につながってしまい、しかもLEDはGNDにつながっているため、スイッチの入力は取得できず常に押された状態だと誤検知してしまう挙動を示しました。

f:id:inajob:20190316223133p:plain

これではこの基板は使い物になりません・・

いっそArduino NanoのLEDをそっとはがすかパターンをカットしようか・・ と思っていたのですが、よく考えると、プルアップされていれば問題ないのです。
そこで、回路図を確認して、D13を1KΩの抵抗でプルアップしました。もともとプルアップはAtmega328のCPU内部で行っていたのですが、LEDの接続によるプルダウンのほうが抵抗値が小さいため、意味を成していない状態でした。

f:id:inajob:20190316223213p:plain

さて、この1kΩの抵抗をどこに実装するか、というのも問題でしたが、今回は運が良いことにArduino Nanoの配線をすべて引き出したパッドを用意していました。
そのため、このパッドのD13(Pin17)とVCC間に1KΩの抵抗を実装することで、期待通りにスイッチの入力を取得できるようになりました。

f:id:inajob:20190316223557p:plain
ということでこの問題もセーフ

最低限の動作は確認できました。

追加実験

OLED(有機ELディスプレイをI2Cで接続するのはオプションとして考えていたのですが、実際にちゃんと動作するかの確認は、このタイミングで行いました。
結果として、ハードウェアとしては問題なく動きました。

f:id:inajob:20190316231242p:plain

ファームウェア更新

OLEDの制御は今までのRakuChordのファームウェアには存在しない処理なので、書き足す必要があります。
OLEDを操作するライブラリはいくつか存在するのですが、「メモリ消費が多い」「書き換えが遅い」という2点から既存のライブラリを使うことがむずかしく、Wireライブラリを使って自分で実装しました。

RakuChrodは楽器ですので、常に音が鳴っています。CPUはATmega328が一つだけなので、OLEDの制御を行うとそのタイミングで音が途切れてしまうという問題があります。
幸い今回利用したOLEDモジュールは内部にVRAMを持っているため、一度書き換えた画面は覚えておいてくれます。そこで下記のような注意をしつつOLEDの制御コードを作成しました。

  • 設定の表示は変更時のみ画面を書き換える
  • 和音の音名の表示は、画面のすべてを使わず半分を使うことで時間を短縮する

このように注意して実装したため、演奏体験を損ねることなく、OLEDに必要な情報を表示できるようになっています。

f:id:inajob:20190316231359p:plain

OLEDを使うことで下記のような情報を表示できるようになりました。

  • 現在鳴っている和音名の表示
  • ドラムモード、アルペジエータモード、デチューンモードのON/OFF
  • ドラム、アルペジエータパターンの編集時に現在状態を表示
  • エンベロープの調整用表示
  • 和音とメロディ間のオクターブ調整用表示
  • アルペジエータとドラムのステップの倍率調整用表示(これにより、ドラムに対してアルペジエータが2倍の速度 などが実現できる)

機能は以前からあったのですが、現在状態を見ることができないので、設定するためには完全に仕様を理解している必要がありましたが、画面がつくことで、ある程度はわかりやすくなりました。

思った以上にOLEDが良かったので、オプションではなく標準装備とすることを決めました。

コミットログを見る限り、この辺で11月になっていたようです。

デモ動画の作成

RakuChordを通販するにあたって、初めてRakuChordを見る人も多くいるので、これがなにかを説明する動画が必要だと考えました。
ある程度は以前のバージョンの動画があったのですが、もう少し充実させたいと考え、いくつか演奏動画をYouTubeに投稿しました。
いわゆる「演奏してみた」動画なのですが、大半の曲はJASRACの許諾が必要です。YouTubeはそのあたり包括契約があるため、JASRACの管理番号(?)を入れて動画を作成するだけで、著作権的に安全に動画を公開できました。

www.youtube.com

筐体の再設計

RakuChordの筐体は3Dプリンタで作成しています。今回基板の構成を変更したため、3Dモデルも変更する必要がありました。
3DモデルはOpenSCADというプログラムで3D図形を定義するソフトウェアを利用して作っていたので、Gitでバージョン管理をしつつ、変更を行いました。

f:id:inajob:20190316224018p:plain

一番の大きな変更点はフロントパネルです。従来のRakuChordは部品が前面に存在していたため、フロントパネルは存在せず、部品がむき出しとなっていました。

しかし今回のRakuChordは前面にはOLEDとボタン、スイッチ、オーディオジャックのみが存在し、他の部品は裏側に実装してあるため、前面をカバーで覆うことができました。これにより「より製品っぽく」できたかな と思っています。

f:id:inajob:20190316231943p:plain

また、電子部品むき出しは、静電気や水によるダメージも受けやすいため、少しは堅牢になったかなと思います。

OLEDの部分は、この時点では深く考えずむき出しにしていました。
この作業はファームウェアの更新と並行して行っていましたが、3Dプリントのモデルが形になったころには12月になっていました。

 

OpenSCADについては別で記事にしているので気になる人は見てみてください↓

inajob.hatenablog.jp

部品調達2

さて、ここまでで発注した基板でRakuChordが動作することが確認できました。筐体のめども立ちました。
ということで販売用の部品を発注します。

AliExpressで必要分の部品を調達します。注文ログを見るとこれは2019/01/20に行っています。
すべての部品が届くいたのはおそらく2月の中旬です。

f:id:inajob:20190316231716p:plainf:id:inajob:20190316231759p:plain

説明書作成

部品が手元にそろったら、次は説明書の作成です。
今回も「キット」方式での販売を考えていたので、「組み立て説明書」が必要です。
ということでさらに1つRakuChordを組み立てます。この際、都度都度写真を撮影し、説明書に利用します。

説明書に1枚ずつ注釈を入れつつ、ドキュメントを作成します。
今回はドキュメントの下地は以前のものが使えたので、比較的簡単に説明書を作成することができました。

f:id:inajob:20190316224250p:plain

実際のページはこちら→RakuChord(らくこーど) Next - 組み立て説明

説明書が形になったのは2月の後半でした。

検品用RakuChordの作成

今回はキットでの提供のため、動作が確認できた製品を売る ということができません。
どれかの部品が壊れているかもしれません。

ということで、買った部品を一通り動作確認する必要があります。
そのために、簡単に部品を取り換えられるRakuChordを作成しました。

f:id:inajob:20190316224500p:plain

実はこれはじめに検証に使ったRakuChordの部品の一部を取り換えて実現しています。

今回確認したかったのは「アンプIC」と「OLED」です。経験上この部品は良く壊れています。

実際に検証すると案の定どちらも壊れているものが紛れ込んでいました。念のため多めに買っておいて良かった、、と思いました。

筐体作成

RakuChordの筐体は3Dプリンタでできています。我が家には3Dプリンタがあるため、製造は家で行いました。
筐体はおおきく下部と上部に分けられますが、下部の出力が非常に時間がかかります(3時間くらい)
そのため、2月は会社から帰宅して、3Dプリンタに指示を出し、風呂上りにうまくいっていることを確認しつつ、寝て、起きたら完成しているというルーチンを繰り返していました。
歩留まりがあまりよくなく、初めは2つ作ると1つ失敗している というありさまで、非常に苦労しました。

f:id:inajob:20190316232052p:plain
途中で各種設定値を見直して、ある程度安定して出力できるようにしてからは順調に作成が進みました。

f:id:inajob:20190316232216p:plainf:id:inajob:20190316232309p:plain

 

3Dプリンタについては下記にまとめています。気になる人は見てみてください↓

inajob.hatenablog.jp

レーザーカッターによるフロントパネル作成

OLEDを扱っていると、非常に破損しやすいことがわかってきました。
表面に少し力が加わると安易に割れてしまい、使い物にならなくなってしまうのです。
3Dプリンタの筐体の窓からOLEDをそのままさらすのは非常に壊れやすい、ということで、表面に透明なアクリル板を貼るという方法を思いつきました。

レーザーカッターはさすがに持っていないので、たまたま会社の関係で利用できるYahoo! JAPANのLODGEでレーザー加工を行いました。(社員じゃないと使えません)
レーザー加工用のデータはOpenSCADのモデルデータを流用することができて、とても楽でした。

f:id:inajob:20190216183318p:plain

レーザーカッターで難しかったのはパラメータ調整です。今回は1mmのアクリル板を利用したのですが、速度強さを正しく設定しないと、焦げてしまったり、逆にへこむだけでカットされない、などといったことが起きました。

f:id:inajob:20190316224755p:plain

f:id:inajob:20190316232139p:plain

梱包材の調達

キットの提供のためには部品を入れる「チャック袋」や、通販用の「箱」が必要です。
チャック袋は100均で、箱はヤマトのコンパクトサイズの段ボールを買ってきました。

ファームウェアの書き込み

今回はArduino Nanoをそのまま使う方式だったので簡単です。
Arduino NanoのUSB端子を使って、最新のRakuChordのファームウェアを書き込みます。
ついでに、この書き込みができることをもって、Arduino Nanoの動作確認も実現しています。(今回は全数問題なしでした!やったね!)

f:id:inajob:20190316224947p:plain

キッティング

ここまでで電子部品、基板、筐体、フロントパネル とすべての部品が必要な数手元にそろいました。この時点で3月です。
ここから販売用にキットを作ります。

キットなのですが、電池ボックスと、スピーカに取り付ける端子だけは、特別な工具がないと加工が難しいため、組み立てて提供することにしました。
そこでまずこれを組み立てます。

Before

f:id:inajob:20190316225113p:plain

After

f:id:inajob:20190316225239p:plain

基板や筐体はいっそ組み立てたほうが、検品も梱包も楽そうだったので、簡易的に組み立てました。壊れやすいOLEDも簡易的に組み立てた筐体の内部に入れておくことにしました。

f:id:inajob:20190316225419p:plain

部品は非常に細かいものが多いので、慎重に数える必要があります。部品表を作り必要な部品が足りているかを確認できるようにします。
今回は紙皿を使って、必要な部品を必要な個数「種まき」のように順番に皿に入れていく、という方法にしました。

f:id:inajob:20190316225521p:plain

部品がそろったらチャック袋に入れます。
RakuChordで苦労したのは「ボタン」と、今回初登場の「ダイオード」です。ボタンもダイオードもそれぞれ28個必要なのですが、これを数え間違えないように入れるのに非常に神経を使いました。

f:id:inajob:20190316232417p:plain

f:id:inajob:20190316232450p:plain

f:id:inajob:20190316232538p:plain

検品

個数が間違っていると後が面倒なので、箱に詰める前にもう一度確認することにしました。
RakuChordの部品表には2つのチェックボックスがついています。1つは、ここで私が部品の数を確認してチェックするものです。
もう一つは、お客さんが買ってくれた時にチェックするのに使ってもらえれば、と思って付けたチェックボックスです。 

f:id:inajob:20190316232616p:plain

一度チャック袋に入れた部品を出して、部品の種類・数を再確認してチェックボックスにチェックを入れて、問題なければ再び元に戻して、箱に詰めます。

f:id:inajob:20190316232700p:plain

通販の準備

通販は初めてだったので、通販サービスを探すところからのスタートです。
まぁみんなが使っているという理由でBOOTHを使うことにしました。
まぁ、さすがみんなが使ってるだけあって、全く悩むことなく、時間もかからずショップを開設することができました。

inajob.booth.pm

値付け

これはまた別の機会に書きます。書きました!

基本的にはすべてをオープンで公開しているRakuChordですが、値付けだけはクローズドとしています。そのため有料記事での公開とさせていただきます。

note.mu

 

(ちょうどこの前の「同人ハードウェアミートアップ」で発表されていた例のシャツの画像を置いておきます。)

 

 

プレ販売開始

以前RakuChordを見せて「興味がある!・欲しい!」という人たちのアカウントを記録していたので、まずはその方たちに向けて通販の開始を連絡しました。
このタイミングでも何人かの方が購入してくださいました。

販売開始

そして2019/03/12 販売を開始しました。
まぁTwitterで「販売を開始したよ!」と書くだけなんですが、自分では珍しく拡散希望」的なことを書いたおかげか、多くの方にリツイートしていただくことができました。

 その甲斐あって、わずか3日で完売!に至りました。

発送

BOOTHの発送は、非常に簡単で、「ヤフオク」や「メルカリ」を使ったことがある方は、あれと同じですが、互いに匿名で送ることができるという非常に優れた仕組みです。
ファミリーマートの「ファミポート」にQRコードをうつして、出てきたレシートをレジに持っていくと、宛先票みたいなのを付けてくれて、それで終わりです。

販売後

さて、これを書いている現在、プレ販売で販売した方のうちの1人から完成報告をいただいています。
販売したものは「キット」であるため、実際の反響が来るのは、この週末以降かな・・それとも何も来ないかな、、 苦情が来るかな、、??

とビクビク、ドキドキしているのが今の状態です。

早速のフィードバック

完成報告をいただいた方、から「スピーカから気になるノイズが鳴る」という意見をいただきました。その方は電子工作もよくやられる方で「OLEDからノイズが出ているのでは?」という見解も合わせていただきました。

手元で実験を行い、劇的にノイズが減る方法を発見したので、説明書に追記しておきました。

このように買った方から様々なフィードバックが得られるのも販売してよかった点です。

f:id:inajob:20190317095618p:plain

その他のアフターケアなど後日談は下記記事にまとめています。

inajob.hatenablog.jp

まとめ

とにもかくにも、買ってくださった方拡散してくださった方に感謝です。

売れ行きも好調だったので、また少し改良して販売しようと思います。

とにかく物理的なモノを作って売るという、一連の作業はとても楽しい!です。この記事が、同行の士の皆さんの役に立てば幸いです。(より高度なことをされている方は、ぜひいろいろ教えてください!)

 

もし、RakuChordを買いたい!という方は下記BOOTHのページで「入荷お知らせメールを受け取る」をクリックしておいてください。次回生産数の参考にします。興味がある!という人f:id:inajob:20190316230251p:plainをクリックしておいてください!

inajob.booth.pm

 よろしくお願いします!

北千住で何もしない週末

2月は疲れがたまる!

ということで、週末に大浴場のあるホテルで、夫婦でのんびり過ごそう!ということで金曜日の朝、出社前にインターネットで探して予約しました。インターネット素晴らしい!

 

とくに観光目当てではないので近場でいいじゃない、ということで探していると「北千住」のホテルがヒット。

大浴場があり、そこそこリーズナブル。

金曜の仕事を終えて、家に帰らず北千住に向かいました。

f:id:inajob:20190224142823p:plain

 

お店は妻がいろいろ調べてくれたらしく、例えばinstagramで”北千住グルメ”などとすると見つかるのだとか 

www.instagram.com

 

ふむふむ。おされだな・・

 

サニーダイナー

夜ごはんはよさそうなハンバーガー屋にしました。

www.sunnydiner.com

 

気になる「フッツウノ」お客様の声から生まれたらしい・・

f:id:inajob:20190224142856p:plain

かわいいつまようじをアレする装置

おいしかったです。

f:id:inajob:20190224143054p:plain

あと、関係ないけど、店に置いてあった新聞の広告に気になる書籍が・・

f:id:inajob:20190224143148p:plain

”ゾンビ”のビジネスとは・・

ホテルのPC

ホテルのフロントにPCがあったので、興味本位で見てみると、謎のキーボードがついていた!(結局使い方はわからなかった)

あとおもむろにブラウザを開いたら誰かのFacebookにログインしっぱなしだったよ!(閉じておきました)ホテルのPCを使うときは注意が必要ですよ!どなたか知らないけど。

f:id:inajob:20190224143235p:plain

大浴場でのんびりしてから、睡眠。

北千住ぶらり

朝ごはんを食べて、妻は再び寝てしまったので、僕は一人北千住の街をうろうろ

 

店員のウルトラマンさん

f:id:inajob:20190224143420p:plain

 

すごいPayPayを押している。

f:id:inajob:20190224143442p:plain

やけに雰囲気の良い眼科。ここだけ異世界から転生してきたような様子

f:id:inajob:20190224143523p:plain

instagramで人気そうなお店は、行列ができていました。これがインスタ映えの力か・・・

 

Sd Coffee

朝ごはんをホテルでしっかり食べたので昼は軽めでよいだろうということで、立ち寄ったのが、こちらのカフェ

 

www.kita-senju.jp

 

謎の店内

f:id:inajob:20190224143632p:plain


謎の「OK!DOG」なるメニュー (どうやらOKと桶を掛けているらしい)

f:id:inajob:20190224143609p:plain

やけに長い名前のシェイク「抹茶めっちゃむっちゃシェイク」(めっちゃ迎春ひなまつりVer.2)

f:id:inajob:20190224143730p:plain

これが

「抹茶めっちゃむっちゃシェイク」(めっちゃ迎春ひな祭りVer.2)

 だっ!!

f:id:inajob:20190224143811p:plain

これが「OK!DOG」

f:id:inajob:20190224143921p:plain

おいしかったけど、シェイクを食べたら寒くなったのでホテルに帰って再び風呂

ダラダラしていたら、もう夜だよ!ということで夕食

足柄野菜の店 YOSHI

夕食はこちらに店でいただきました。まぁSD Coffeeからと比較すると普通のお店でした。

osteriayoshi.gorp.jp

 

帰り道

ということで、帰ってきてこのブログを書いています。

たまにはこういうダラダラ週末も良いなと感じました。

 

前回ブログに書いた平塚旅行(平塚旅行してきました - inajob's blog)以上に近場で、かつ何もしない旅行となりましたが、こういうのが良いんだよ・・