目次:
- 用品:
- ステップ1:プロジェクト概要
- ステップ2:センサの入力ピンにワイヤをはんだ付けする
- ステップ3:オーディオファイルの準備
- ステップ4:AudacityとWav2cを使う
- ステップ5:サウンドをテストする
- ステップ6:より恒久的でコンパクトな設計のためのすべてのはんだ付け
- ステップ7:すべてを整理して時計に合わせる
あなたのアナログ時計はただ十分なことをしていませんか?アナログ時計でデジタルのことをしたいですか?
このチュートリアルでは、Arduino Uno開発ボードを介してAtmega 328P-PUを使用して、正確な時間間隔でKit Cat Clockに「ニャー」サウンドクリップを再生させる方法を説明します。私の例では、鳴き声は毎時発生します。これはKit-Catクロックである必要もありません。このアイデアは、マグネットモーターを使用する他のクロックでも機能する可能性があります。
仮定(あなたが既にすべての専門家であればスキップしてください)
このプロジェクトは、ブートローダの焼き付けやワイヤのはんだ付けなど、中級から上級までの多くのスキルを網羅しています。したがって、作業を進める前に必要な知識とスキルが必要です。私はあなたがどのようにして知っているか、または少なくとも次のことをする準備ができていると思います:
ブートローダをAtmel328P-PUに焼き付けます(あなたのものが既に持っていない限り)。
Arduino経由でAtmel328P-PUに「スケッチ」をアップロードする
端末エミュレータまたはコマンドプロンプトにコマンドを入力する(Windows)
はんだごてを使って部品間を接続する。
プラスチック部品のトリミング/切断、および穴あけのためのドリルまたはDremelツールの使用方法。
材料
Arduino Uno R3 x 1
ブレッドボード×1
ジャンパー線(十分な数)
抵抗器:
350オーム×1
150オーム×1
220オーム×1
280オーム×1
10Kオーム×1
330オーム×1(ブレッドボード設定でArduinoを使用しているときにLEDが必要な場合はオプション)
コンデンサ:
100μF×1
10μF×1
22 pF×2(オプション)
16MHz水晶発振器
0.5 W小型スピーカー(直径約50.8 mm)×1
7.5ボルトACウォールアダプター(私はToys R UsにあるVtechブランドを使いました)x 1
7805ボルテージレギュレータ×1
はんだごてとはんだ
Protoboard(または時計ケースに収まるように十分に小さい他の最終的なプロジェクトボード)
強力接着剤
熱収縮(オプション)
ホットグルーガン(オプション)
Takane Quartz Clock(私がしたように、Kit Cat内のデフォルトのものを交換する必要があると仮定)
ホール効果センサ×1
私はホール効果センサーのSS41ファミリーを使いました。これらのセンサーは、クロックマグネットモーターからの比較的弱い磁場を検出するのに十分な感度を持っています。私が購入した特定のものはここにあります。
用品:
ステップ1:プロジェクト概要
このプロジェクトの興味深い点は、Atmel 328P-PUのデジタルの世界とやり取りするためにアナログデバイス(この場合はアナログ時計)を使用することです。 Arduinoはおそらくこれを達成するための最も簡単な方法の1つです。私はAtmel チップに供給されるであろうデジタル パルスを生成するために古典的なキット カット クロック内にある代表的なクロック モータを使用するでしょう。これがうまくいく理由は、時計の針を回転させるのに必要な機械的トルクを生み出すために時計モーターがコイルの近くに置かれた永久磁石を利用するからです。私は時計モータからの磁束を検出するためにホール効果センサを使用することによってこの磁界を利用します。磁石からの極の1つがセンサーに面しているときはいつでもセンサーはデジタルHIGHを出力し、反対の極がセンサーの近くにあるときはLOWを出力します。このポール遷移は毎秒発生するか、または1 Hzの周波数を持ち、これが時計針を駆動するための理想的なモーターとして機能する理由です。
注:センサーは実際には磁石に触れていません。それはちょうどそれに非常に近いです。写真は、測定値を取得するために、センサーをどれだけ近くに配置する必要があるかを示しています。
ここの写真は、実際の時計の内側と右側のマグネットモーターを示しています。時計の種類は "タカネクォーツ"と呼ばれ、それらは安価なアナログ時計でかなり一般的です。
センサーから安定したパルスが届くと、あらゆることをデジタルで実行できるようになります。実際、できることはあなたの想像力だけに限られています。このチュートリアルでは、単純に(Hallセンサーからの)クロックパルスをカウントするカウンターを作成し、カウントが終了したら、「ニャー」オーディオクリップを再生します。
最初のステップはあなたが良い読書を得ることができるようにマグネットモーターに十分近くにホールセンサーを取り付けることを含みます。出力を取得するには、センサーをマグネットモーターのすぐ近くに配置する必要がありました。センサーの出力ピンにLEDのようなものを取り付けてからクロックをオンにすることで、センサーをテストできます。これでうまくいくと、LEDは1秒おきに点滅します。これは、極の1つがセンサーに面している間だけ出力がHIGHになるためです(例としてN極としましょう)。反対の極(南)がセンサーに面しているとき、出力はLOWです。
測定値を取得するための適切な場所と距離を決定したら、次にそれを恒久的にマウントする方法について検討し始める必要があります。私はスーパー接着剤を使ってセンサーを固定しました。私はまた後ろの包装があるところのために位置を考慮した。センサーピンにアクセスできるように、小さな長方形の穴を開けなければなりませんでした。これらのクロックはほぼ同じですが、レイアウトが内部でわずかに異なることがあり、センサーの配置は使用している特定のクロックによって異なる可能性があるため、最適なものを決定する必要があります。
ステップ2:センサの入力ピンにワイヤをはんだ付けする
今度はピンをワイヤーにはんだ付けする時間です。私がこれをした理由は2つの理由のためでした:第一にあなたが仕事を続けながらセンサーをテストすることができることを望むそしてあなたがブレッドボードそして最後にプロトボードにそれらを接続するときあなたはそれらのワイヤーが必要になるので。ピンを素早く識別する必要がある場合は、色の異なるワイヤを使用すると簡単になる場合があります。それが私がしたことです。
このサイトでピン配列の設定が見つかります
ステップ3:オーディオファイルの準備
.WAVファイルからCファイルへの変換方法を既に知っている場合は、このステップをスキップまたはスキップすることができます。
センサーがブレッドボード上の適切なピンに取り付けられたので、あなたは音声スケッチをAtmel328Pにアップロードする必要があります。しかし、最初に、いくつかの修正と「マッサージ」を最初に行う必要があります。これがあなたがあなた自身の修正のいくつかを行うことができるところであり、そして私はAudacityとwav2cプログラムの使用に関する詳細のいくつか(しかし全部ではない)に入るでしょう。 Arduino IDEで提供したコードを開いてください。 Arduino IDEでスケッチを開くと、最初のタブはMichael Smithが書いたPCMオーディオスケッチを少し変更したものです。オリジナルはArduinoサイトにあります。
playground.arduino.cc/Code/PCMAudio
Audacityはオーディオ編集プログラムです。非常に強力で、.wavファイルを8ビットのモノ、符号なし.wavファイルとしてエクスポートすることができます。これは、ファイルサイズを小さくし、オーディオ再生スケッチとの互換性を最大限にするためにも必要です。あなたは異なるビットレートとサイズを回避することができるかもしれませんが、私はそれを実験していません。私たちは仕事を成し遂げるためにAudacityの必要な機能を使うだけです。
Wav2cは、その名のとおり、.wavファイルをCファイルに変換できます。.wavファイル自体が大きすぎるため328P-PUのメモリに収まらないため、これも必要です。これを書いている時点で、あなたはgithubから直接ソースコードをダウンロードすることができます。他のWebサイトからコンパイル済みバージョンを入手することもできます。いずれにせよ、あなたはそれを変換プロセスのためにまたは他の同様のプログラムを使用するべきです。
github.com/olleolleolle/wav2c
ステップ4:AudacityとWav2cを使う
サウンドファイル変換の目的は、オーディオファイル(.wav)を取り出して、それを便利なCヘッダーファイルドキュメントに変換することです。これにより、arduinoはヘッダファイル内の情報をスピーカーを通して音声として出力することができます。
- 最初にAudacityのファイルを開きます。
- プロジェクトレートを8000 Hzに変更します(左下隅にあります)。
- メニューから「トラック」を選択し、「リサンプル」を選択します。
- 次にエクスポート>その他の非圧縮ファイルを実行します。
- アンダーオプションは8ビット符号付きを選択します。
これによりファイルが次のステップに、Cファイルに変換されます。
- 次にターミナルを開き、ファイルと同じディレクトリに移動します。
次のコマンド(sox)を実行して尾部をトリミングします(1つがあると仮定して)
- 最後にコマンドを実行して実際に変換を行います
(元のファイルのコピーが実際に変換されていることに注意してください)
- 次に、arduino IDEを開き、新しい空白のタブを追加します(新しいタブを追加するためのボタンはArduino IDEの一番右にあります)。
- タブをヘッダファイルと同じ名前に変更します。
- 内容をタブにコピーして貼り付ける
ステップ5:サウンドをテストする
これでsounddata.hファイルの準備が整い、Arduinoのスケッチを確認できたので、今度はそれをチップにアップロードします。私はすべての初期テストに直接Arduinoボードを使用しましたが、その後の残りのテストには「Arduino on Breadboard」構成を使用しました。ここにダイアグラムを添付しました。
すべてうまくいけば、あなたの時計をオンにして、それが時計からのパルスを数え、それから出力を届けることを確かめるためにそれをテストしなさい。注:最初にこれを実行したときは、60秒ごとにオーディオ再生カウンターを設定して、機能しているかどうかを確認するために1時間待つ必要がなくなり、後でカウンターを3600秒または1時間に変更しました。 。鳴き声の間隔を変更するには、最後の行の近くにあるコードを見つけて、clockCount変数を見つけます。必要な値に変更してください。
ステップ6:より恒久的でコンパクトな設計のためのすべてのはんだ付け
今楽しい部分のために…あなたのブレッドボードからよりコンパクトなプロトボードへのすべての重要な部分のはんだ付け。 LED出力やリセットボタンのようなものは必要ありません(Arduino on Breadboard回路のものがあると仮定して)。これを行うにはもっと良い方法がありますが、供給が限られている場合は、おそらくプロトボードが最善の策です。多くの人々が今彼ら自身のPCBエッチングと加工をしています。あなたがそれを行うことができれば、それはプロトボードよりもはるかに優れているので、それからぜひ、それを行ってください。
また、ACアダプタをプロトタイプボードの正および負のノードに接続し、そこで電圧レギュレータのピンと接続する必要があります。私はVtech 7.5ボルトモデルを使いました。これらはTargetでは約10ドル、Toys R Usでは12ドルです。あるいは、家の周りに横たわっているのと似たようなことを何でも使うことができます。注意:レギュレータとアダプタの間の電圧差は最小限に抑えるようにしてください。さもないと発熱します。差が大きい場合は、熱を消散させるためにレギュレータにヒートシンクを取り付ける必要があります。 7805とVtech ACアダプタの間の電圧差は300mAでわずか2.5ボルトですが、それでも小さなヒートシンクをそれに置くべきです。
注:Atmegaチップのスケッチに満足していること、または満足していることを確認してください。一度ボードにはんだ付けされると、再プログラミングできなくなります。
注:電源アダプタのコードがきちんと収まるように、私はドレメルを使って時計ケースの底に小さな穴を開けました。私は時計を修正しながら他の様々なものにもそれを使いました。
ステップ7:すべてを整理して時計に合わせる
すべてのワイヤとコンポーネントを適切にはんだ付けしたら、今度はワイヤリングを整理して、キットキャットハウジング内でのボードの適切な配置を決定します。ここでの主な関心事は、尾や目の動きを妨げないような場所にすべてを配置することです。スピーカーへの取り付けがそれほど難しいことにも気づかなかったので、スピーカーをテールモーターのアーマチュアを妨げる場所に取り付けるのを助けるためにいくつかの穴を開けなければなりませんでした。
ボードの場所を見つけるのは面倒で、試行錯誤が必要になるかもしれません。私はバッテリー収納部の近く、左側の一箇所に落ち着いた。その後、ボードの端にホットグルーガンを使用して固定しました。ワイヤーを整理してまとめるのに便利なのは、引き分けやジップタイです。
あなたがこれをやろうとするどんなテクニックでもあなた次第です、なぜなら時計ケースの中にすべてを収めるように管理することはあなたの時計とそれに入るものの量に依存するからです。
のファイナリスト
センサーコンテスト