電子工作一覧

SoftwareSerial の罠

ATtiny13 では SoftwareSerial が使えないので、ATtiny85 あたりを使用してみることにしました。ここで思ってもいなかった罠に出遭いました。

続きを読む


1ピンで複数スイッチに対応する

アナログ入力ピンを使用すると、複数のスイッチの入力をチェックすることが出来ます。といっても同時押しに対応出来るわけでないです。
押下時にはいずれかのスイッチのみという条件を用いて、使用するピン数を削減します。

方法

原理は簡単で、押下したスイッチに応じて抵抗分圧される仕組みを用います。このときの電圧値を読み取ることでどのスイッチなのかを知ることが出来るようになります。

このときの抵抗の計算がポイントになってくるのですが、それをうまく解説したサイトを見つけました。

単に同じ抵抗をぶら下げていってはダメなことがここにしっかりと書いてあります。

計算した抵抗値

上記のサイトの計算により、3スイッチでやってみました。使用したのは R1 = 10K, R2 = 2.2K, R3 = 4.7K, でやってみました。
これだと、 SW1 = 0V, SW2 = 0.18V, SW3 = 0.40V と割といい感じの比率でスイッチ入力の電圧として振り分けることができました。

これらの抵抗になった理由は、部品箱にあった抵抗類で済ませたい&合成もしたくなかった、という点によります。
あと2つくらいスイッチを増やせるかなと思って計算だけはしたところ、 R4 = 8K, R5 = 22K となりました。 E24系列で考えると 8K は無いため、 8.2K を使用することになるかなと思います。

最後に

ピンを減らして複数のスイッチを読み取る場合に、アナログ入力が使えるということを確認しました。1つ注意点があるとすれば、ものによってはアナログの読み取りには、デジタルと比べ時間がかかるということです。


DFPlayer Mini を使ってみる

マイコンで音声ファイルを再生するのに、 SDカード等にいれたデータをストリーミングして再生かなと考えていたのですが、 mp3 のファイルを直接再生するモジュールボードを発見しました。
amazon で眺めていたら発見したのが以下のものです。これを書いている現在で2つで 800 円ほどとなっており、ネットの情報からすると少し高くなっているのかもしれません。

このモジュールボードのチュートリアルとしては以下の Wiki に記載がありました。

https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Tutorial

実ボードでは “MP3-TF-16P” と刻印がありますが、まあなんとか動いている感じです(※)。
また、より詳細な仕様書的なものとしては、以下の pdf を参照して試してみています。

http://www.flyrontech.com/uploadfile/download/2016441645109830.pdf

※ もしかすると別に本家があるコピー品なのかもしれません。
続きを読む


ATTINY13A

ATTINY13A という個人的に面白いマイコンを知りました。
これは、 RAM 64byte, ROM 1Kbyte、そいて8ピンのマイコンです。小さいけれどスペックも小さいというシロモノです。
これでいて普通に Arduino IDE でスケッチを書いてプログラムを動かすことが出来ます。
しかしこれだけの制限された状態では一体これで何が出来るんだ?という状況ですが、これで十分な場面もあるのではないでしょうか。

あと、このマイコンは安いです。 Arduino UNO に載っている ATMega328 は 230 円なのに対して、 ATTINY13A は 50 円でした。

Arduino IDE 環境の更新

ATTINY13A に向けたスケッチを書くためには、 Arduino IDE に設定をしなくてはなりません。

まず、 ArduinoIDE を起動して環境設定を開きます。
そこで「追加のボードマネージャのURL」に、次の URL を追加します。

  • https://kimio-kosaka.github.io/bitDuino13/package_bitDuino13_index.json

その後、メニューの「ツール / ボード / ボードマネージャ」 と選びます。
各ボードのリストが出ているのですが、この中に ”bitDuino13” というものがあるとおもうので、これをインストールします。

インストールが完了すれば、ひとまずこのチップに向けたバイナリが生成できるようになっていると思います。

書込のための準備

スケッチを書くことが出来ても、プログラムを ATTINY13A に書き込むことが出来なくては意味がありません。
ライターが必要になりますが、ここで以前準備しておいた Arduino UNO を利用したいと思います。

以下の手順で、Arduino を ISP として書込の装置と化させます。

  1. ArduinoIDE を起動
  2. メニューの ファイル / スケッチ例 / 11.ArduinoISP / ArduinoISP を選択します。
  3. マイコンボードに書き込むを実行

書込み

Arduino IDE に以下のようなスケッチを書いてみます。

そして、「ツール / ボード / ATtiny13」を選択します。また、「ツール / 書込装置 ”Arduino ISP”」を選択します。

ArduinoISP と ATtiny13 を接続します。接続については以下のような感じになります。

接続したら、マイコンボードに書き込む、をメニューから選択すると先ほどのスケッチが書き込まれます。

Lチカ確認

先のスケッチでは3番ピンを ON/OFF していたので、ここに LED を繋いで点滅するかを確認します。
Arduino で書き込んだ場合では、書込完了後既にマイコンが動き出すようでした。そのため先に全て配線してしまってから、スケッチを書き込むと、書込完了後から点滅が始まると思います。

その他

生成された HEX ファイルを確認してみたいと思って、 preferences.txt の中に、”build.path=(出力先パス)” を記述してみました。そうしたところ、スケッチのコンパイルの終段でエラーが発生するようになってしまいました。
どうも相対パスによって出力先を変更するような感じなので、書込先ドライブを変更してみました。この結果うまく出力が出来るようになりました。
非 Windows の環境ではルートフォルダから任意の場所に行ける仕組みだからこれで問題ないのかもしれません。

同じように悩んでいる人の助けになったら幸いです。自分はこれに気付くのにしばらくかかりました。


7セグ4桁の表示モジュールを買ってみた

Amazon をぶらぶらを見ていたら、デジタル LED チューブモジュールというものを見つけました。
7セグ LED を持っておらずちょっと憧れがあって、このモジュールは4桁かつ3個セットでこのお値段ということもあって、つい買ってしまいました。

通常の一般的な 7セグ LED とは使い勝手が全く違うものだったりするので、やっぱり通常の7セグは欲しいなと思う気持ちは変わりませんでした。
このモジュールでは、信号線が2つで4桁を表示できるようになるのでその点が魅力のものといえるようです。

使い方

Arduino との接続は以下のようにしました。

そして動かすためのスケッチですが、公開されているライブラリを使用しました。
このライブラリは、 https://github.com/reeedstudio/libraries の中にある、 DigitalTube です。

これを追加した上で、以下のようなスケッチを作成しました。

動作させると、カウンタが進みつつ、中央のコロンが点滅するといった動きが確認できるようになっています。


FlashAir を Raspberry Pi の起動メディアにする

FlashAir を Raspberry Pi の起動ディスクにしてみました。
ここでの Raspberry Pi は Raspberry Pi 2 や、 Raspberry Pi Zero あたりをターゲットとしています。

必要なもの

どちらの環境にしても FlashAir は通常サイズの SD カードなので、変換をして Raspberry Pi2/Zero に接続します。
今回は以下のような変換するものを用いてみました。

続きを読む


Arduino Uno を買ってみた

Raspberry Pi が手元にあるのですが、衝動買い的に Arduino Uno を購入してみました。
たまに RPI では信号レベル変換が必要な電子パーツの動作確認にも使えそうだなと思っています。

そんな Arduino ですが、 Arduino IDE を使ってスケッチと呼ばれるプログラムを作成し、ROMに書き込んで実行します。
このあたりが、 Raspberry Pi とはちょっと違いますね。

1つ自分が Arduino を初めて触ってみて、手間取った点をここでは詳解したいと思います。

手間取った点

Arduino IDE でスケッチを作成して、Arduino に書込をしようとすると失敗になっていた点です。
コンパイルは通るのと、機材には電源も投入されて LED が光っている状態なのに、です。

こうなってしまったのは自分の環境が問題でした。
既に USB シリアル変換ケーブルを使用していて、 Arduino は2番目の認識となっていた点が原因です。これを切り替えるのには、 Arduino IDE のメニューから “ツール/シリアルポート” で Arduino が接続されている COM ポートを適切に選択することが必要でした。

本当の意味で初めて、こういったボードを触る場合にはこの点に引っかかることはないでしょう。

これからもう少し Arduino を触ってみたいと思いますが、先にエディタ部分をなんとかしたいと感じでした。Arduino IDE もコンパクトで悪くない印象ですが、エディタ部分が自分が使い慣れているエディタとか、他のエディタを使いたいなぁという気持ちがありますね。
かるく検索すると VSCode を開発環境に使うことが出来そうなので、それを試してみたいと思います。

その他

ボード本体だけを買ったらまさかの USB タイプ B のケーブルが必要だったので、それは驚きました。今の時代ずいぶんとこのケーブルを見かけなくなりました。
これから始める人は、必要な USB ケーブルについても手持ちがあるのかを調べておいた方がよさそうです。

あるいは最初から色々とセットになったものを買うというのも安全ですね。