作ったり遊んだり

趣味の記録。電子工作やキューブなど。

(進捗)ボタン設計など

今日の進捗

  • Bleep Drumケース設計
  • 光るボタンの設計
 

Bleep Drumケース設計

 昨日の続き。あれこれ細かい調整をしていたら、思わぬ立面(立体?面?)が出てきて面食らった。

 
 あれこれスケッチ(平面)をいじっていると、想定外の押出ボディ(立体)が出てきてびっくりする。いまだにメカCADは慣れない…いつか時間と体力がある時に、ちゃんとチュートリアルみたいなのをやったほうが良いのかも。
 
 

光るボタンの設計

 これも昨日の続き。良い感じの光るボタンを作るべく、3D設計してプリントして修正して…の繰り返し。今日は、最終的に以下のようになった。

 
 Bleep Drumのケースと一緒に成形するので、6時間かかるそうな。寝てる間にプリントが終わっているはず。
 
 

余談

 ルービックキューブ回す時間が取れなかった。今から少しだけ回せるかな?

(進捗)シーケンサ試作など

今日の進捗

 
 

Bleep Drumの外装製作

 とりあえず基板を支える下側のケースを作る必要があったのだけど、いつも直方体にしていて面白くないなと思ったので、思いつきで円柱を半分に割った形にしてみた。そして転がらないよう平らな面を作った。これ、作ってみると意外と良い。持ちやすいし、基板もケースも黒いせいか、シックな見た目が良い。上側も同じ形のケースを作って、使う時にパカッと開けるようにすると面白いなと思った。
 ネジ穴(ナットをハメる穴)を追加して、上側と引っかかる爪を作ったら完成で良さそう。
 

 
 

シーケンサ試作回路の製作

 なんとなく「機能性はさておき所有欲を満たす良いデザインのモノをなにか作ってみよう」と思い、以前から課題と感じていた「光るボタン」を作ってみようと思った。ちょうどシーケンサにも使えるし。ということで、今日はその試作基板を作った。うまくボタンを作れるか分からなかったので、さすがに今の時点で基板を起こすのは微妙だなと思い、とりあえずユニバーサル基板に実装。今日のところは回路の製作&動作確認まで。明日からボタンの設計をする。
 

 
 ふと気づいたら糸はんだが 残りわずか。こて先保護のためにはんだを無駄遣いするので、すぐに無くなる。まぁ高いものではないので、どんどん使ってどんどん買おう…。
 
 

おもしろシンセ調査

 スキマ時間にちょいちょい調べていて、今日、これを作ってみたら面白い&勉強になるかも、と思ったものを見つけたのでメモしておく。以下です。
 
 Atari Punk Consoleというのは555タイマーを使った有名なシンセ。これ単体じゃさすがに演奏が難しいと思って敬遠していたのだけど、シーケンサと組み合わせた作例があって、ちょっと作ってみたくなった。シーケンサ論理回路で実現しているようなので、それも勉強になりそうだし、後日もう少し調べて作れそうなら作りたいと思う。
 
 

余談

 MFT2020の当選ツイートをちらほら見かけるようになった*1。みんな独創性あふれる作品・企画をしていて本当にすごいなぁと思う。自分もいつかそんな製作ができるようになりたい。

*1:本アカは凍結されていないので、鍵リストを作って面白いmakerさん達の動向を拝見しています。笑

(進捗)Bleep Drum基板組み立てなど

今日の進捗

  • Bleep Drumコピーの基板組み立て
  • アナログシンセ試作
 

Bleep Drumコピーの基板組み立て

 Bleep Drumというのは、アメリカのBleeplabsというグループ?が設計・販売しているガジェット(日本風に言えば同人ハード?)。詳細は以下を参照のこと。  
 
 面白そうだったのでGithubで回路図とプログラムを見てコピー品を作ることにした。2週間前にユニバーサル基板で試作して、うまく動いたので専用基板を発注したのが先週。今日PWBが届いたので、これを組み立てた。部品状態はこんな感じ(↓)*1

 
 こうやって見ると市販品のキットみたいで、嬉しくなる。組み立てたのがこちら。

 
 配線ミスがあったけど一箇所だけだったのでパターンカットとジャンパー配線して難なく完成。はじめてレジストの色を緑以外にしてみたけど、黒い基板カッコいい〜。そして遊んでみて改めてやっぱり良いガジェットだなと思う。本当に面白い。
 
 あとは、これに合う外装を作りたい。本家の基板むき出しデザインがカッコいいので、僕も基板を露出させつつ、いい感じに仕上げたいなと思う。
 
 

アナログシンセ試作

 昨日に引き続き、アナログシンセの制作を考えた。考えたけど、全然良いアイデアが思い浮かばなかったので、ブレッドボードで組んだりバラしたりしながら、まずはキー入力できるようにしてみた(VCOに入力するCV出力器を作った)。

 
 でも、それだけ。ちょっと、自分が何をしたいのか整理できていない。今日は作りながら混乱してしまった。アナログシンセってややこしい。でも考えるだけでは何も進まないので、とりあえず古典的な回路を一通り作ってみようと思う。残りはVCF、LFO、EG辺りかな。そのあと基本的なエフェクタ類や2VCO化、シーケンサなど。車輪の再発明にすぎないのに果てしなく遠く感じる…。
 
 

余談

 少し前に物撮り用の撮影ブース(40cm角)を買ったのだけど、最近あんまり使っていなかったので使ってみた。そしたら、なんだか撮影自体が面白くなってハマってしまった。僕の身の回りには時間泥棒がいっぱいある。これをやりたい!とか、作りたい!という熱量を見失って少しでもダラっとしてしまうと、あっという間に時間を吸われる。気をつけよう…。

*1:DAC IC撮り忘れた…

(進捗)アナログシンセ、BareMetalラズパイなど

今日の進捗

  • MP3プレイヤー完成
  • ステップシーケンサのトライ
  • アナログシンセ実験完了
  • BareMetalラズパイ UART実装
 

MP3プレイヤー完成

 午前中に投稿したエントリの通り。お手軽簡単な割に実用性が高くて、良き。
 

ステップシーケンサの試作

 LEDとSW各12個を並べて、ステップシーケンサを作った。一定時間毎にステップが進み、SWを押してステップのON/OFFをして、ステップがONのときにMIDIノートオンが送信される、という単純なもの。AVRのタイマーを使ってマトリックススキャンとLEDの輝度調整(ON時間の調整)をする練習。
 
 写真等は無いですが、Githubにコードを上げています。今日作ったのはこのディレクトリの内容。
  
 ちゃんと動作したので、この機能の活用を考えたい。でも正直なところあまり画期的なアイデアは無いので、まず愚直なステップシーケンサに仕上げようと思う。
 
 

アナログシンセの実験完了

 LM358(単電源動作するOPAMP)が届いたので、先日の実験を再開。結果的に、LM358を使えば全ての回路が正しく動作した。回路は以下にあるVCA、VCO、矩形波三角波のオシレータの計4つ。
  
 随分昔にVCOを作った時は、すごく難しかった覚えあったので*1、こんなに汎用的な材料で簡単に安定動作するなんてビックリした。下の写真はVCOの波形。三角波矩形波もすごくきれい。

 
 ちなみに、動作原理についてはまだよく分かっていません。どなたか分かる方がいらっしゃれば、ぜひ理解のヒントなどを頂けると嬉しいです。
 
 今回ブレッドボードではなくPWBを起こして実験基板を作ってしまったので、部品をとっかえひっかえしながら計測ができなかった。回路原理を深く考える時は、ブレッドボードに組むのが良さそう*2。また今度時間のある時にやってみよう。
 
 

BareMetalラズパイ UART実装

 先日Lチカが終わったラズパイ、今日はUART(シリアル通信)を実装した。これも環境構築と同じで、本の通りにやっても成功せず苦労した。具体的には、
  • ラズパイは3.3V動作なので3.3VのシリアルI/Fが必要
  • 送信値と受信値が合わない
という問題に遭遇。前者は手持ちのレベル変換モジュールを使って解決。後者はESP8266で同じ動作をするハードを作ってオシロで波形を比較することで原因を発見。…と一言で書くと大したことは無いけど、ま〜苦労した。いくつか「おまえが原因か!」と得心したポイントがあったけど、一例を挙げると以下2枚の写真の違いとか(答えは脚注に書いておきます*3)。
 

f:id:moppii_o:20200711211250j:plain 

 
 結論として、Clock Managerの周波数が3MHzではないらしいことが根本的な問題だった。分かった後で本をよく読むと「elinuxのサイトによれば」と微妙な表現で書かれているし、自分が使っているボードの素性も微妙*4なので、仕方ない。なお同じ道を歩く人のため超具体的に書くと、僕のボードでは*UART0_IBRDを26に、*UART0_FBRDを8にすると、うまく通信できました(ボーレートが115200付近になりました)。
 

f:id:moppii_o:20200711211439p:plain

 
 UARTが使えれば、MIDIが使えるようになる。楽器には欠かせない要素なので、解決できてよかった。
 
 

蛇足(どうでもいい雑談)

 Twitterアカウントが一向に凍結解除されない。もう一回FAX送ってみようかな。でも中国在住だからIPアドレスとか不安定だし*5、また凍結されるんだろうか。うーん。
 

*1:約10年前に出た某シンセ自作本のVCOは温度補償抵抗が必要で大変だった

*2:今回は「絶対動作させること」を目標にしたのでPWBを作ってしまった

*3:下写真の波形の方が少し速い。ボーレートが合ってないから正しい値を受信できない。

*4:中国のタオバオで35RMBで買った身元不明品。

*5:VPNを使うので…。

(完成)MP3プレイヤー

DFPlayer miniというモジュールを使って、MP3プレイヤーを制作した。

 

材料

  • DF Player mini
  • PAM8403アンプモジュール
  • 6x6 タクトスイッチ
  • カーボン抵抗
  • ブレッドボード
  • 単三電池4本直列ケース
  • スピーカ端子(バナナプラグが挿さるジャック)
 

機能

  • 電源ON/OFF(電池ケース付帯のスイッチ)
  • プレイヤー制御(ループ再生、一時停止、曲送り、曲戻し)
  • 音量調整(PAM8403モジュールのツマミ) 

 

感想

 短時間で作れて、自分なりに許せる品質の音が鳴って、小さくまとまっていてデザインも好きだし、大変良い工作をしたなと思う。大満足(自己満足だけど)。
 
 最近、すごく便利な単機能モジュールがたくさん有るけれど、なんだかんだ言って実験や味見以上の使い方をしてこなかった。けど、こんな風に「そのモジュールをそのまま活かす」使い方をすれば時間短縮できてかつ実用的なんだなぁと、とてもフツーなことを思った。
 
 あと下の写真を見ていて今思ったけど、スピーカ端子のところ、カバーつけようかな。半透明のカバーをプリントしてはめるだけでも、よくなるかも。うん、そうしよう。
 

 
  

(進捗)BareMetalで遊ぶラズパイ Lチカまで

今日の進捗

  • BareMetalラズパイ 環境構築
  • BareMetalラズパイ Lチカ

 

 環境構築

昨日に続いて環境構築。やっと成功した…。

 
今(2020年7月)本の通りにやるなら、以下の手順が答えのようです。
  • Debian7を使う(debian-7.11.0-amd64-netinst.isoを使用)
  • crosstool-ngは1.24.0を使う(19を24に置き換えれば本の通りにwget可能)
  • 本の手順に従う(Githubの環境構築説明にあるconfigは古い&cdコマンド記載漏れアリ)
  • 空気を読んでmenuconfigする(コンパイラのバージョンは変更不要、パスは差分を見つけてうまく調整する)
  • 足りないソフトに注意する(help2manが必要だった。他にも何かあったかも…)
 
あと、macユーザならこのサイトの通りにやれば、仮想環境を作らなくても開発環境が手に入ります。僕は結局こちらを選択。ファイルのやり取りなども考えると手軽だし。違いはコンパイラのファイル名だけなので、makefileの冒頭のunknownをnoneに変えれば動きました。
 
 

Lチカ

ということで、やっとLチカ。長かった〜。
 

 
ちなみに、僕が買ったのはRaspberry Pi A+ですが、B+同様、無印(+無し)と違ってコネクタが40pinになっているため、オンボードのLEDの端子が違います。(GPIO47っぽい)
あと、Raspberry Pi A+の全体の回路図はざっと検索した限り公開されていないので、本の通りに進めるならRaspberry Pi Bをなんとしても入手するのが良さそうです。
まぁ僕は有線LANを使うことは多分無いので、なんとか安い初代Model Aを使い倒したいのですが…この先、Model Aを選んだことを後悔する日が来るかもしれません。
 
いやはや、デジタル出力するだけでこんなに苦労するとは…つらくもあり、楽しくもあり。30日OS本と完全に同じノリです*1。ここから音声信号処理をするまで、どれくらいかかるのやら。楽しみ。
 

*1:こっちのが、PICとかAVRの組み込み開発に近い印象もありますが

(進捗)BareMetalで遊ぶラズパイ 環境構築

今日の進捗
 
 

BareMetalで遊ぶRaspberry Pi 環境構築

数日前、Twitterか何かで以下の記事を見つけて、OSなしでラズパイを動かして、しかも割と負荷の重い信号処理をしているのすごい!と思った。
 
で、自分もやってみたいなと思い、つい初代Raspberry Pi(Model A+)とBareMetalで遊ぶRaspberry Pi本を衝動買いしてしまった。*1
 
そして今日帰宅するとRaspberry Piが届いていたので、じゃあ早速やってみよう!ということで作業を始めた。
 
…のだけど、環境構築にかなり時間が掛かってしまった…そのうえまだ終わっていない…。
 
まずDebian環境を作る。最初はDockerを使おうとしたけど途中でつまづいたため、そこから本の案内通りにvirtualBoxを使うことにした。以下のサイトの通りにやるだけ。
次に、本の通りにDebianへ開発環境をインストールしていく。UNIX系のCUI操作に慣れていれば簡単…かと思いきや、思うように進まない。色々と試行錯誤して、
  • crosstool-ngの1.24.0を使う
  • texinfo、unzip、libtool-bin、libtool-docを入れる
  • sudoをインストールし、root以外のユーザで実行する
といった辺りが功を奏し、なんとか最後のbuildの実行にたどり着くも、待つこと40分…エラーが出て撃沈。笑
 
ということでかれこれ3時間くらい粘ったけども、ダメでした。
ま〜、こんな日もありますよ!
続きはまた明日。(といいつつ今もやってる…今日寝れるかなぁ…笑)
 

*1:注文した後で知ったけど、本は初代Model Bを使う想定で書かれているので注意。