attiny2313 の電子回路。 Attiny2313 マイクロコントローラー上のシンプルな時計



私は小さな娘のためにこのプロジェクトを作りました。 これは 24 チャンネルの照明効果デバイスで、回路は 24 個の LED と 1 個のマイクロコントローラーを使用し、配線が小さいです。

LED の制御には、接点ごとに最大 20 mA の電流で LED を制御できる安価なマイクロコントローラ ATtiny 2313 (Atmel) が使用されます。 回路内の LED は 4 つのグループにグループ化され、各グループは 6 つの LED で構成されます。 図には「F」、「+」、「-」の 3 つのボタンがあります。

Fボタンはエフェクトの変更、「+」「-」ボタンはエフェクトの速度を増減します。 たとえば、「-」ボタンを押すたびに、LED の速度が低下し、消灯が遅くなります。 速度をすばやく変更するには、対応するボタンを押したままにします。

回路に電力を供給するために、7805 スタビライザーを備えた 12V アダプターを使用しました。スタビライザーをラジエーターに取り付ける必要はありません。

プリント基板:

ソフトウェアは IDE AVRStudio 4 のアセンブリ言語で書かれており、プログラム コードは以下に示されています。 プログラム コードを簡単に変更するだけで、誰もが独自のさまざまな効果を思いつくことができます。 プログラムには合計 24 のエフェクトが含まれています。

この記事のデバイスは SD カードで動作します。 このトピックは古く、非常に陳腐なものですが、SD カードの使用についてはもう一度書く価値があります。
一般に、SD カード (SDC、SD カード) には多くの利点があり、小規模な組み込みプロジェクトで使用するのに非常にシンプルで便利です。 これには多くの要因が影響します。
- カードと対話するための非常にシンプルなインターフェイス (SPI 経由で実装)。
- 高い動作速度 (マイクロコントローラーは 10 Mbit/s に近い速度で SD カードからデータを転送できます)。
- 低消費電力(文字通り数ミリアンペア、それ以上ではありません)。
- 小さいサイズ;
- 可用性と低コスト。
SD カードには実質的に欠点はありません (おそらく、初期化手順を除いて :))。

1 はじめに。

この記事で説明されているデバイスを SD Card Talking Device と呼びました。 ちょっと大げさですが ;)、名前を見ればこれが通話デバイスであることがわかります。 これはプロジェクトを音声化することを目的としています。 つまり、次のように動作します。番号付きのサウンド ファイルが SD カードに記録され、デバイスはそれをコマンドに応じて再生します。 応用範囲は非常に広いです - 警報システム、玩具、ロボット、 スマートホーム等 デバイスの寸法は非常に控えめです (もっと小さい可能性もありますが、安価で入手しやすい ATtiny2313 マイクロコントローラーを意図的に選択しました)。 シンプルさと最大限の機能に重点を置くようにしました。
今後を見据えて、最終的に何が起こるかを見てみましょう。

このような装置は役に立ちますか? それでは集めてみましょう!

2 メモリーカード。

本機はSDメモリーカードを使用します。 選択の理由についてはすでに書きましたが、SD カードがほぼ標準的なメモリカードになりつつあることだけ付け加えておきます。 モバイルデバイス。 自社のタイプのメモリ カードを熱狂的に宣伝している/宣伝しているメーカーでも、徐々に SD カードを使用し始めています。 人気の理由はおそらくこれらのカードの価格の安さです。 実際、アマチュア機器の場合、SD カードは使用に適した唯一のカードです。その理由は、SD カードを操作するためのシンプルなインターフェイスにあります。

SD カードは長い進化を遂げており、その実装にはいくつかのオプションがあります (MMC - SD カード オプションとして、SD ver1、SD ver2、SDHC、SDXC)。 カードと通信する手順はシンプルで、あらゆる種類のカードに共通ですが、カードを操作する (カードの初期化) ことは、儀式的にカードを「ジャーク」したり、空の「ダミー」コマンドを送信したりする、かなり曖昧で混乱を招くプロセスです。そしてその他の理解できないこと(要するに、タンバリンを持って踊る必要があります:))。 SDC プロトコル自体の仕様には、初期化プロセスがかなり詳細に記載されています。これは理解できますが、多くのカード メーカーが独自のハードウェアを持ち、独自の特性を持っています。 - 初期化手順をできる限り普遍的なものにするよう努めましたが、一部のカードは動作しないことを覚悟してください。 したがって、デバイスで何か問題が発生した場合は、別のメモリ カードを試してください。これが原因である可能性があります。

このデバイスは、最大 2 GB のサイズの SD カードをサポートします。 それ以上のもの (SDHC および SDXC) はサポートされていません。
カードのフォーム ファクター (SD、MiniSD、または MicroSD) はデバイスに関係ありませんが、カードのピン配列に従って正しく接続する必要があります。

3 ファイルシステム。

このデバイスは、FAT16 ファイル システムのカードを使用します。 このシステムはシンプルで実装が簡単なため、私たちのようなデバイスに最適です (FAT12 と FAT32 も原理的には実装は難しくありませんが、FAT16 と比較して利点がないため実用的ではありません)。

カードをフォーマットするための特別な要件はありません。利用可能な任意のデバイスでフォーマットできます。 標準の Windows フォーマットは、これらの目的に非常に適しています。

デバイスが正しく動作するには、SD カードにあるサウンド ファイルが特定の要件を満たしている必要があります。
a) ファイル形式は非圧縮 WAV である必要があります。
ファイルパラメータは次のとおりです。
- ビットレート - サンプリング周波数 (Frequency) - 32000 Hz;
- チャンネル数 (チャンネル) - 1 (モノラル);
- サンプル サイズ - 8 ビット。
もう 1 つの可能な削減は、WAV PCM 8U です。

b) ファイルには特別な方法で名前を付ける必要があります。 デバイスがどのファイルが 1 番目、2 番目、3 番目などであるかを認識するために。 ファイル名の最初の文字はラテンアルファベットの大文字である必要があります (ファイル拡張子など、名前の残りの部分は無視されます)。
たとえば、次のファイル名は正しいです。
A_Lai_dog.wav - 最初のトラック
B-これは 2 番目のトラックです。wav - 2 番目のトラックです
警告付き! エラー!.wav - 3 番目のトラック

c) 使用する場合 追加機能デバイスの場合、ファイルは「1」と「2」という名前の 2 つのフォルダーに配置できます。 このデバイスには、アクティブなフォルダーを選択するためのスイッチがあります。つまり、再生を開始する同じコマンドで、スイッチング入力のレベルに応じてフォルダー「1」または「2」からトラックを開始できます(サウンドスキームの選択の一種) - とても便利なものです!) 。 フォルダーのいずれか (または両方) が存在しない場合、ファイルはルート ディレクトリから再生されます。

名前と競合しない限り、他のファイルをオーディオ トラックと一緒に保存できます (ファイルを別のディレクトリに置くことをお勧めします。そうすれば、そこでの名前の付け方に注意を払う必要がなくなります)。

d) ATtiny2313 上の SRAM の量が少ないため、データを先読みするためのバッファを作成することができないため、ファイルからのデータが再生用に直接出力されます。 したがって、FAT テーブルを使用してファイルの断片を検索する方法はありません (十分な時間がありません)。 言い換えれば、カードに書き込まれるファイルは断片化してはなりません。

実際、これは大きな問題ではありません。 オペレーティング·システムは常にファイルを 1 つの部分として書き込もうとします。カードにスペースがある限り、ファイルに対する操作 (削除、コピー、名前変更) はファイルの整合性に影響しません。 カードが非常に小さい場合、またはカードの容量がいっぱいになっている場合 大きな地図ファイルの整合性を確認するには、ファイルをコンピュータのハード ドライブにコピーし、カードをフォーマットしてファイルを戻します。

4 スキーム。 プリント基板。

デバイス図は可能な限りシンプルです。 実際、マイクロコントローラー自体とSDカード以外には何も入っていません。 自分用にサインを作りました SMDコンポーネント、このデバイスは限られたサイズの場所で使用する予定であるため。 寸法が重要でない場合は、DIP バージョンのブレッドボード上で回路を組み立てることができます。 ブレッドボードの場合、デバイスの組み立てには最長 15 分かかります。 許容電圧 SD カードの電源は 2.7 ~ 3.6 ボルトです。 マイクロコントローラーもこの間隔で正常に動作するため、対応するコンポーネントを使用する必要はありません。 5 ボルトの電源を使用してデバイス全体の動作をチェックしました。すべて正常に動作しましたが、カードによって過電圧に対する反応が異なる可能性があるため、これを継続的に行うことはお勧めしません。 私はアダプターをmicroSDカードホルダーとして使用し、その接点に直接はんだ付けしました。 より小さい寸法が必要な場合は、microSD 用の実際のカード ホルダーを使用することをお勧めします。

マイクロコントローラーのファームウェアをフラッシュするには、SDカードと同じコネクタが使用されるため、プログラマーをSDカードに接続する方法を考える必要があります(私は特別にアダプターを作りました)。

ボードがはんだ付けされた後、マイクロコントローラーをフラッシュできます。

完成したデバイスの小さなギャラリー:




スキームに関する小さなニュアンス。
SD カードをカードホルダーに取り付ける (カードを電源に接続する) と、サージ電流が発生し、それに応じて回路内の電圧降下が発生します (この時点でカード内にかなりの容量が充電されているようです)。 ドローダウンが非常に大きいため、マイクロコントローラーがリセットされます。 これを使用してカードの初期化手順を開始します(カードを取り付けるとマイクロコントローラーが再起動され、ファームウェアが最初に行うのはカードの検索と初期化です)。 カード (強力な電源または大きな平滑コンデンサ) を取り付けるときにマイクロコントローラーをリセットしない場合は、マイクロコントローラーを手動でリセットするために回路内のリセット ボタンに注意する必要があります (これは「ホット」を計画している場合です)。カードを変更します)。

5 デバイスの操作。

上で書いたように、デバイスの操作は非常に簡単です。正しい名前のトラックを SD カードにコピーし、カードをカード ホルダーに挿入すると、デバイスが自動的にカードを見つけてライトが点灯します。 緑色のLED- 以上で、デバイスはトラックを再生する準備ができました。 あとは、自分に合った方法でトラックを選択して再生を開始するだけです。

5.1 デバイスのボタンとそのアクション。

デバイスをできるだけ機能的にしようとしたため、動作モードのスイッチに多くのマイクロコントローラーの脚が使用されています (これにより、デバイスがハリネズミに似ています:))。 機能が必要ない場合は、脚を「空中」に「ぶら下げた」ままにしておきます。
スイッチアクション:
- 「モンスター」 - トラックの再生速度を(2 倍)遅くすることができ、低い声の効果を生み出します。 スイッチは「オンザフライ」で動作します。つまり、スイッチを切り替えると速度が変わります。
- 「ヘリウム」 - トラックの再生速度を 1/3 に上げます - 甲高い声の効果を生み出します。 スイッチはその場で動作します。
- 「Repeat」 このスイッチがグランドに短絡されている場合、選択したトラックは(スイッチが開くまで)エンドレスに再生されます。 これは、たとえば、雨の音、燃える火、川のせせらぎなど、特定の背景音を作成する必要がある場合に便利です。
- 再生するトラックを開始する「選択 / 再生」ボタン (下記の説明)。
- 「トラックの選択」 - 再生中のトラックの番号を設定します (以下の説明)。
- 「Dir1 / Dir2」 - サウンドスキームを選択します(以下の説明)。

5.2 再生を開始します。

特定のトラックの再生を開始するには、次の 3 つの方法があります。
- UART 経由でラテンアルファベットの大文字を送信すると、名前の先頭にこの文字を含むファイルの再生がすぐに始まります。
- 「トラックの選択」を使用する場合、ファイル番号が選択されます (バイナリ コード 0001=「A」、0010=「B」など。1 - 脚は地面に閉じられています。0 - 「空中」に「ぶら下がっています」)。次に「選択/再生」ボタンを押すと、対応するファイルの再生が開始されます。
- 「トラックの選択」を使用して何も選択されていない場合 (0000 - 脚が「空中」に「ぶら下がっている」))、「選択 / 再生」ボタンを一定回数押すと、対応するトラックが起動します (1 回 = 「A」、2 回 =「B」など)。

5.3 サウンドスキーム。

とても 便利な機能 2つのサウンドスキームから1つを選択する機能です。 これは、「Dir1 / Dir2」スイッチがトラックを再生するカード上のフォルダーを選択することを意味します。

ロシア語と英語のメッセージ (知育玩具)、子供と大人の声、水の流れる音と燃える火の音、猫/犬、善と悪の警官 :)、心を落ち着かせる/元気を与える音、その他多数のアプリケーションがあります。同様のオプション。

たとえば、デバイスが男性と女性の声で通信できる必要があります。 これは次のように実装されます。
- 女性バージョンと男性バージョンでそれぞれ 2 セットのメッセージを作成します。
- 両方のオプションのファイル番号は同じです。 デバイスはファイル名の最初の文字だけを「認識」することを忘れないでください。そのため、自分でわかりやすい名前にすることができます。たとえば、「S_Waiting for command_male.wav」と「S_Waiting for command_ Female.wav」は非常にわかりやすいです。正しい;
- 男性のメッセージのセットをフォルダー「1」にコピーし、女性のメッセージをフォルダー「2」にコピーします。
これで、「Dir1 / Dir2」スイッチの状態に応じて、同じコマンドで「男性」または「女性」フォルダーからトラックが再生されます。

5.4 デバイスの動作の表示。

Teeny2313は脚が少なく、ほとんどがスイッチに使用されているため、通常の表示を犠牲にし、代わりに通常ではないものを取り付ける必要がありました。 さまざまな動作モードを示すために、マイクロコントローラーの 1 つの脚のみが使用され、そこに 2 つの LED (赤と緑 (または任意のほう)) が接続されます。 デバイスのさまざまな動作モードは、特定のカラーコードで示されます。
- 赤色の LED が点滅 - SD カードが存在しないか、そのタイプがデバイスでサポートされていません。
- 赤色の LED が点灯 - SD カードはサポートされており、正常に初期化されていますが、カードは FAT16 でフォーマットされていません。
- 緑色の LED が点灯 - SD カードは正常に初期化され、必要なファイル システムが見つかり、デバイスはトラックを再生する準備ができています - コマンドを待っています。
- 緑色の LED が点滅 - デバイスはトラックを再生中です。
- 緑が点灯し、赤が短時間点灯し、再び緑が点灯します - トラックが見つかりません。
- 緑色が点灯し、一時的に消え、再び緑色に変わります。 - トラック選択キーが押されました。

5.5 デバッグ情報。

(デバイスが動作しない場合に) 問題領域を見つけやすくするために、UART 経由のメッセージを含むプログラムの各初期化ステージを複製しました。 ステップが成功するたびに、対応する文字が UART に送信されます。
- 「S」 - (開始) マイクロコントローラー周辺機器は通常どおり初期化されます。
- 「C」 - (Card Init) SD カードは正常に初期化され、サポートされています。
- 「F」 - (FAT Init) FAT システムがサポートされています。
- 「1」 - (No 1 Dir) フォルダーはありません。 「1」 読み取りはルート ディレクトリから実行されます。
- "2" - (No 2 Dir) フォルダーはありません。 "2" の読み取りはルート ディレクトリから実行されます。
- 「R」 - (準備完了) デバイスは完全に準備ができており、トラックを開始するコマンドを待っています。
- また、トラックが開始されるたびに、トラック名の大文字が UART に送信されます。

デバイスにダビングするための 6 トラック。

6.1 トラックの変換

上記のライブラリで適切なものが見つからなかった場合は、オンライン (ミュージシャンやビデオ編集のための特別なサイトが多数あり、サウンドの大規模なライブラリがすでに収集されています)、ゲーム インストール (多くの場合、サウンド) で必要なトラックを入手できます。 ゲームプレイトラックごとに区切られ、別のフォルダーに配置されます)。 動画から効果音をカットしたり、 楽曲。 見つかったトラックは、デバイスがサポートする形式に変換する必要があります。 ファイル形式は非圧縮 WAV である必要があることに注意してください。 32000Hz、1チャンネル、8ビット(WAV PCM 8U)
この形式への変換には、どの音楽エディタでも適しています。または、トラックを編集せずに変換するだけの場合は、

この記事では、以下に基づいてデジタル温度計の回路図を提案します。 AVRマイクロコントローラー ATtiny2313、DS1820 (または DS18b20) 温度センサーは 1 線プロトコル経由でマイクロコントローラーに接続されており、HD44780 コントローラー上の 16x2 LCD ディスプレイも備えています。 説明されているデバイスは、アマチュア無線家の間で広く応用できます。

マイクロコントローラのプログラムは、AVR Studio環境ではアセンブリ言語で記述されます。 インストールはブレッドボード上で実行され、4 MHzの水晶発振子が使用されます。ATtiny2313マイクロコントローラは、事前に再コンパイルしたAT90S2313に置き換えることができます。 ソースコードプログラム。 DS1820 センサーの誤差は約 0.5℃です。このアーカイブには、DS18B20 センサーが使用される場合のファームウェアも含まれています。 センサーは毎秒ポーリングされます。

WAV プレーヤーは AVR ATtiny85 マイクロコントローラー上に構築されています (ATtiny25/45/85 シリーズが使用可能)。 このシリーズのマイクロコントローラーには、8 つのレッグと 250kHz キャリアの 2 つの PWM (高速 PWM) しかありません。 メモリカードを制御するには、電源用に 2 本、信号用に 4 本の計 6 本のワイヤだけで十分です。 マイクロコントローラーの 8 つのピンは、メモリ カード、サウンド出力、およびコントロール ボタンを操作するのに十分です。 いずれにせよ、このプレーヤーは非常にシンプルです。

この静電容量計を使用すると、pF 単位から数百マイクロファラッドまでのあらゆる静電容量を簡単に測定できます。 静電容量を測定するにはいくつかの方法があります。 このプロジェクトでは統合手法を使用します。

この方法を使用する主な利点は、測定が時間測定に基づいており、MC 上で非常に正確に実行できることです。 この方法は自作の静電容量計に非常に適しており、マイクロコントローラーにも簡単に実装できます。

このプロジェクトは友人からの依頼で物置のドアに取り付けました。 その後、友人や知人からの依頼でさらにいくつかの作品が制作されました。 デザインはシンプルで信頼できるものであることがわかりました。 作品 このデバイスこのように、以前にデバイスのメモリに保存されていた RFID カードのみが許可されます。

おそらく簡単ではないでしょう マイクロコントローラー上のシンプルな時計、そして非常に単純なものさえあります。 Attiny2313 マイクロコントローラーのこのプロジェクトは、このクロックの作成に最初から最後まで 1 日強かかったので、おそらく 1 日プロジェクトと呼ぶことができます。

この時計を作成するには、次のものが必要です。

  • 16 MHz 水晶発振子 – 1 個;
  • マイクロコントローラー Attiny2313 - 1 個;
  • 22 pf ~ 27 pf のコンデンサ - 2 個;
  • コンデンサ220N - 1個;
  • スタビライザー 7805 – 1 個;
  • トランジスタ – 4個;
  • インジケータ SA15-11GWA - 4 個 (共通のアノードを備えた他のものも可能);
  • ボタン – 2個。
  • 抵抗器 100 オーム – 8 個;
  • 抵抗器 200 オーム – 4 個;
  • 抵抗10kΩ – 1個
  • 食事は簡単なものからご提供させていただきます。

Attiny2313 での単純なクロックの動作の説明

動作周波数 16 MHz の水晶共振器によってクロックされます。 Attiny2313 マイクロコントローラ回路は、タイム カウンタとして、プリスケーラ 256 を備えた 16 ビット タイマを実行し、カウンタの値が 625 に達したときに割り込みを生成するように構成されています。その結果、割り込みは 1 秒あたり 100 回取得されました。

時間間隔はグローバル変数にあり、割り込みが発生するたびにミリ秒の値を 1 ずつ増やす必要があります。ミリ秒の数が 100 に達した場合は、秒の値を 1 つ増やしてミリ秒の値をリセットする必要があります。 その後、同じシーケンスが数十時間まで続き、24 に達すると次の桁を追加せずにリセットされます。 Attiny2313 マイクロコントローラーの時計は可能な限りシンプルであるため、日付や夏時間などは表示されません。

したがって、グローバル変数に記録されている現在時刻の値を取得します。 次に、これらの値をエクスポートする必要があります。 マイコンのポート数はそれほど多くないので、視覚の慣性などを利用します。 4 つの時計インジケーターすべてのカソードが並列に接続され、アノードが個別に制御されるため、いつでもどのインジケーターにも数字を表示できます。

カソードが接続されているマイクロコントローラーのポート B を素早く切り替え、アノードも素早く切り替えることで、一度に 1 桁しか動作していないにもかかわらず、4 桁すべてが表示されているように見せることができます。 つまり、現在時刻が 10:43 の場合、最初の時計インジケーターに数値 1 が表示され、短い時間間隔 (約 1 ミリ秒) の後、2 番目のインジケーターに数値 0 が表示され、1 ミリ秒後に 2 番目の時計インジケーターに数値 0 が表示されます。 4 by 3 インジケーター、1 ミリ秒後に 3 on 4 インジケーターが再び円の中に表示されます。

保育器用の温度計が必要だったのですが、サーモスタットは既に持っているので温度計本体のみ作ります。 私の場合は、4 桁ではなく 3 桁のインジケーターを使用します。 私たち自身について少し話しましょう デジタルインジケーター。 7 セグメント表示器は 7 つの表示要素 (セグメント) で構成され、電源によって個別にオン/オフされます。 さまざまな組み合わせでそれらを含めることで、それらから数字のイメージを作成することができます。 最近のインジケーターでは、LED がセグメントの形で作られているため、 LEDインジケーター非常にシンプルな形状をしています。異なる LED の数が少ないほど、デバイスは安価になります。 セグメントは以下の文字で指定されます。 G。 8 番目のセグメントはポイントです。 温度計で使用されるインジケーターのパラメーターは次のとおりです。

  • 最大順電圧(電流20mA時):2.5V
  • 最大順電流: .....25-30 mA
  • 最大逆電圧: .....5 V
  • 逆電流(5 V 時): .....10 μA
  • 消費電力: .....150 mW
  • 最大パルス順電流: .....140-160 mA
  • 動作温度範囲: .....-40…+85°C

それでは、温度計自体を作り始めましょう。 回路図を勉強しましょう。

それを行うには、次のものが必要です。

>>> 4桁7セグメントインジケーター 1個
>>> 0.1μFセラミックコンデンサ 1個
>>> 電解コンデンサ 100μF 16V(10個まで可能)
>>> 抵抗器 100-200Ω 0.125W 8個
>>> マイコンAtTiny2313 1個
>>> パネル20脚 1個
>>> センサー DS18B20 1個
>>> ワイヤー、はんだごて、黄金の手))

必要な無線部品をすべて集めたら、マイクロコントローラー温度計の製造を開始します。 抵抗をインジケーターにはんだ付けします。

電力を供給して完了です。 残っているのは、マイクロコントローラーをフラッシュすることだけです。 ファームウェアは可能です。 アーカイブには、共通カソード用と共通アノード用の 2 つのファームウェアが含まれています。

この MK をフラッシュするには、 が必要です。 方法はリンクを参照してください。 PonyProg を開き (上記の記事のプログラマーをお持ちの場合)、ファームウェアをアップロードします。 ファームウェアをアップロードするときは、「」ボタンを忘れずに押してください。 読む「下の写真のようにヒューズを設定しました。

また、重要な要素の 1 つです。ヒューズを設定するときは、「」ボタンを忘れずに押してください。 読む" (読み取り)。ファームウェアを保存し、プログラマーからマイクロコントローラーを取り外し、デバイスに挿入します。

回路に電力を供給すると、出来上がりです。 すべてが機能します。 プリント基板この図は単純であるため描くことに意味がないため、図はありません。大まかに言えば、この図は 5 つの無線コンポーネントで構成されています。 抵抗はカウントしません。一般に抵抗を半田付けする方が簡単だからです。 この温度センサーの動作のビデオは以下でご覧いただけます。

ATTINY 温度計の仕組み

このデバイスは非常にシンプルなので、AtTiny の最初の実用的なプロジェクトとして初心者のコントローラーに最適です。 私はあなたと一緒にいた 茹でる.

記事「ATTINY の温度計」について議論する