迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

久々のArduinoなのにOld Bootloader??

交流電圧計の測定に使っている発振器がどうにも不安定です。
昔々に格安で手に入れた発振モジュールを使っているのですが、一番データの欲しい数100KHzあたりが不安定。
ここ数日あれこれと手を入れてかなり改善はされましたが、それよりも周波数を読むのに別に周波数カウンタが必要で、これが面倒と言うか実験中机の上がごちゃごちゃになるのです。

そこで以前実験したままで放置していた(毎度のことですが^^;;)AD9833を使ったDDSオシレーターを引っ張り出してきました。
Arduino NANO互換機で制御してます。
ちなみに写真右上のピンクのはパナソニックのモバイルバッテリーです。数年前アマゾンで購入、他の色もあったのですが、買った時点ではこれが一番安かった。

Arduino NANO互換機をブレッドボードからユニバーサル基板に乗せ換え、Arduino IDEを1.8.5にバージョンアップし、昔のスケッチを書き込もうとしたのですが、書き込めません。


oldBootloader.jpgいつの間にやらツールメニューにATmega328P(Old Bootloader)という選択肢が追加されてました。
これを選ぶと書き込みができました。
でもどう違うんでしょうか?

スケッチにまずいところがあり、使い勝手がイマイチなのでこれから改造です。
出力は100mVrmsですのでアンプも入れたいところです。
ついでに今度こそちゃんとしたケースに入れようと思ってます。

スポンサーサイト

Arduino 互換ボード SS MICROを試す

Aliからatmega32U4を使った互換ボードを二つ購入しました。
USBポートに直接させる形状です。3.3Vのレギュレーターも載っています。



一つずつ袋に入っているので、取りあえず一つだけ開けてあれこれいじっていたのですが、どういうわけか途中から使えなくなりました。USBデバイスとして認識してくれません。何をやったか覚えていません。
SS_microトラブル

仕方がないのでもう一つ使いましたが、そちらは今のところ正常です。
右側が動作不良品。
SS_micro2.jpg

気になるのは同じatmega32U4を使ったArduino Leonardo等はUSBポート・atmega32U4間に22オームの抵抗が入ってるのですが、この互換ボードにはありません。それがトラブルの原因かどうかは不明ですが。

Arduino Leonardoの回路図

Arduino Pro Microを試す。(3)HIDとして使う(2)

前の記事では会社のバーコードスキャナーにスイッチを付けてというか乗せてTabコードを出すことを考えましたが、Shift-Tabも出せたほうが便利だと思います。Tabで次のフィールドに移動、Shift-Tabで前のフィールドに移動します。さらに後で何かの機能を追加するかもしれないので、結局スイッチを三個つけることにしました。
バーコードスキャナーの上に何らかの方法でスイッチを乗せ、本体側とケーブルでつなぎます。単純に考えると配線が四本必要になりますが、これを二本でやりたいわけです、シールド線を使うことになりますが。
Arduinoのアナログ入力を使い、抵抗による分圧によって電圧を変えます、スイッチごとに違う電圧が出ればいいわけです。
本体とは1.5メートルほどあります、念のため断線や短絡があればそれも検出できればいいでしょう、ただ道具が無い会社では修理は無理ですけど。(勤め先はスーパーマーケットですので)

一応回路図です。点線から右側がスイッチ部です。
アナログ入力 A0 を使いました。
VCC=5Vとして、断線ならA0の電圧は5Vになりますが、
スイッチが何も押されていない時 4V
SW1 オンの時 3V
SW2 オンの時 2V
SW3 オンの時 1V
となるように抵抗値を計算しました。当然短絡時は0Vです。
二線式スイッチ回路図

実験の様子、R1は手持ちにあった金属皮膜の1%を使いましたが、他は5%のカーボンです。
スイッチはもっと増やせますが、そうすると1%が必要になるでしょう、今回はこれで十分です。
二線式スイッチ


スイッチの状態はAD変換値をADCresultとして
SW=(ADCresult+102)/205
で計算できます、102≒1023/10、205≒1023/5です。
SW=
5 断線
4 スイッチオールオフ
3 SW1 オン
2 SW2 オン
1 SW3 オン
0 短絡
です。
スケッチはこちら
とりあえずのスケッチですので断線・短絡時には何もしていません、LEDを点滅させるかブザーを鳴らすなどすればいいと思ってます。
スケッチ内にdelay()を多用してますが、delay時間が適当かどうかも十分検討はしていません。
SW1 にTab、SW2にShift-Tabを割り当て、表計算ソフトでアクティブセルが移動するのが確認できました。

なお、抵抗分割によるスイッチ入力にはしなぷすさん抵抗分圧器を使った、多くのスイッチのセンシングという記事がありました。
私のやり方ではスイッチを同時押しすると値は変なことになりますが、しなぷすさんの方法だとスイッチに優先度があるので優れています。

Arduino Pro Microを試す。(2)HIDとして使う

今回買ったArduino Pro Micro や Arduino Leonardo などATMega32U4を乗せたボードはHIDとして使えます、キーボードやマウスのフリをさせることが出来ます。
私があれこれ書くより下記のリンクを読んでもらったほうがいいでしょう。

参照リンク
Arduino Leonardo(Pro Micro)のHID(キーボード)機能を使う
Mouse and Keyboard libraries

実験の様子、といってもスイッチ一つ付けただけです(汗
スイッチを押すとキーボードのTabキーを押したのと同じ動作をします。
Tabキーだけのキーボードというわけです、スイッチを増やせばほかにもいろいろ出来ますが。


スケッチです。
// Keyboard Tab
// 2017/06/04 edy

#include "Keyboard.h"

void setup() {
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
}

void loop() {
while (digitalRead(2) == HIGH) {
delay(100);
}

Keyboard.press(KEY_TAB);
delay(100);
Keyboard.releaseAll();// Keyboard.release(KEY_TAB);

while (digitalRead(2) == LOW) {
delay(100);
}
}


こんな実験をするには理由があります。
某スーパーで発注業務をしています、昨年ウィンドウズタブレットが新たに導入されました。それまではほぼA4サイズのWindowsCEマシンを使ってました。
それまでとは作業内容が変わってしまいました。
通常の発注業務はいいんですが、時々ある商品入れ替え時に面倒な思いをすることがあります。
タブレットにハンディスキャナを繋ぎ、登録商品のJANコードをスキャンしてタブレットに入力します。次のスキャンをする前にタブレット画面でキャレット(Iビーム)を次の入力フィールドに移動する必要があります。画面のフィールドを指で押せばいいんですが、これが反応がいまいち悪く、おまけにキャレットが見にくい(老眼なので^^;;)ため移動失敗に気づかないことがあり、かなりイライラさせられます。
左手にタブレット、右手にハンディスキャナ、JANコードをスキャンした右手でタブレットの画面を押すという操作も結構面倒です、視点移動がありますから。
Tabキーを押せばフィールドの移動が出来るのはわかってるんですが、タブレットのスクリーンキーボードのTabキーを押すのでは意味がありません。
ハンディスキャナにスイッチがあって、それを押せばTabキーを押したのと同じになればいいわけです。
これがこの実験の理由です。

とはいえ、タブレットもハンディスキャナも会社の物ですからやらせてもらえるかどうか。

Arduino Pro Microを試す。(1)

AliExpressからArduino Pro Micro互換機を購入しました。
USB microBコネクタがちょっと斜め。
pro_micro_photo.jpg


SparkFunによるArduino互換機で、そのまた互換機を購入したわけです。

ATmega32U4を搭載しておりUSBにつながるので、USB-シリアル変換チップは必要ありません。またHIDとしても使えるそうです。

関連リンク
SparkFun Pro Micro
Hookup Guide
Installing on Windows

Arduino互換ボード「Pro Micro」の情報まとめ
(Arduino) Pro Micro

使うにはデバイスドライバとボードデータを追加する必要があります。
Installing on Windowsに詳しく書かれています。

デバイスドライバのインストールにはデバイスマネージャーを開く必要があります、今まではコントロールパネルから開いてたのですが、Windowsキーと Rキーを押すと「ファイル名を指定して実行」が開くので devmgmt.msc と打ち込んでOKをクリック、簡単です。初めて知った方法ですので覚書として記録しておきます。


Arduinoでロータリーエンコーダを試す(2)

EX-OR無しで動きました。
quadrature_encoder_schematic3.jpg

ArduinoというかATmegaの内部プルアップ抵抗を使ったのでロータリーエンコーダ以外必要ありません。
quadrature_encoder_photo2.jpg

テスト用のスケッチです、intcountはチャタリングの影響を見るために入れてる変数ですので通常は不要です。

Arduinoでロータリーエンコーダを試す(1)

ロータリーエンコーダは以前PSoCで試したことがあります。Arduinoでやってみようと思ったら以前参考にしたサイトがリンク切れ。
検索して見つけました。

How to use a quadrature encoder

このサイトの記事を基にして、とりあえずこのような回路で実験。ロータリーエンコーダは秋月のと同等品です。
EX-ORを使わずに済ませたいのですが、まずは動かしてみてからです。
quadrature_encoder_schematic2.jpg


ロータリーエンコーダは停止位置から次の停止位置まで回すとスイッチの状態が4回変化します。(注クリック感ありの場合)
quadrature_encoder_output.jpg

実験の様子。
上の行左の数値はスイッチの状態が変化した回数、右はそれを4で割ったもの、すなわ回した回数です。
下の行の数字は割り込み回数。スイッチの状態が変化するたびに割り込みが発生するので、チャタリングが無ければ上の数字と一致するはずですが、実際にはチャタリングがあります。でもソフトでうまい具合に除去できます。ソフトで追いつけないような場合は別でしょうけど。
quadrature_encoder_photo.jpg

スイッチサイエンスI2C接続小型LCDを試す。

ロボットプログラミング教室を手伝うことになったのですが、そこではArduino互換機(Studuino)を使います。
電池動作を考慮してでしょうか、クロック8MHz、VCC=3.3Vとなってます。

実は以前にスイッチサイエンスさんからI2C接続小型LCD搭載ボードを買ったのですが、これが3.3V版なのです。うっかりしてました。
当時は(今も^^;;)VCC=5Vで使ってたので使う機会の無いまま放置してたのですが、ちょうどいいので試してみました。
スイッチサイエンスさんのブログをそのまま試しました。
ArduinoのA2をVCC、A3をGNDとして使うという、私にはちょっと思いつけない方法で接続してます。

こんな風になります。
ここではラジオペンチさんの「外付け部品無しでArduinoの電源電圧を測定する」を使わせていただきました。
ただArduinoの基準電圧(1.1V)は結構ばらつきがあるようで、実測3.34Vなのですが3.29Vと表示されたのでスケッチ内で補正しました。
スタディーノ

このままだとA0からA3が塞がってしまい使いにくいので、ユニバーサル基板の切れ端を使って下の写真のように移動しました。
D13をVCC代わりに使ってます。
スタディーノVCC2

スイッチサイエンスLCD接続回路

Arduino:スケッチ書き込み時のタイミングチャート

あちゃんでいいのv1
スケッチ書き込み時のシリアルアダプタの各入出力をロジックアナライザで調べてみました。
使ったスケッチはおなじみのBlink (いわゆるLチカ)です。
Channel 0はシリアルアダプタのTX出力、1はRX入力、2はDTR出力です。
Channel 0でトリガをかけてます。
Arduino書き込み
まずDTRがLになります、CRによる微分回路でArduinoをリセットします。

0.5秒後に0x30、0x20が送られ、Arduinoは0x14、0x10 を返します。
Arduino書き込み2

さらに0.5秒後に同じく0x30、0x20が送られ、Arduinoは0x14、0x10 を返します。
0.5秒後に書き込みが始まります。その後どういうやり取りがあるのかまでは調べてません、調べても多分私にはわかりません。
ちなみにビットレートは57600bpsでした。

あちゃんでいいのver.1

ウチではびんぼうでいいのをつかってます。
実はあちゃんでいいのも買っていたのですが、うまく動かせず放置してました。買ったのは今販売されてるVer2ではなく初期型、リセットスイッチがありません。
USB-シリアルアダプタをつないでのDTRリセットも出来ませんでした。
理由は単純でDTRリセット用のコンデンサをつけてませんでした^^;;
1番ピンのすぐ近くにランドがあるのを見つけたので0.1μのチップコンデンサをつけたらちゃんと動作するようになりました。
今aitendoさんで売ってるのはリセットスイッチもリセット用コンデンサも付いてます。
DTR_reset.jpg

2つ持ってます、シリアルアダプタとの接続用のピンヘッダはL型に換えてあります。
ケーブルはホットボンドで固定。
あちゃんでいいの

アマゾンで買ったUSB-シリアルアダプタ
USB_シリアル変換基板


あちゃんでいいのv1

 | HOME |  古い日記に行く »

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

ダイソー ペンダントライト・Arduino Pro Miniを組み込む(予定) 2018/06/17
ダイソー ペンダントライト 2018/06/17
トロイダルコアFT37-61を試す(1) 2018/06/10
AD9833 DDSモジュールを試す(13) 現状 2018/06/02
USBチェッカーを改造 2018/05/28
ダイソーの500円モバイルバッテリー 2018/05/27
AD9833 DDSモジュールを試す(12) デバッグ 2018/05/20
充電式ツインファンをアマゾンで買いました。 2018/05/19
AD9833 DDSモジュールを試す(11) どうにかケースに納めた 2018/05/15
AD9833 DDSモジュールを試す(10) ロータリーエンコーダの変更 2018/05/13

全記事表示リンク

全ての記事を表示する

リンク

このブログをリンクに追加する

月別アーカイブ

06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (453)
HX711 (2)
ACS712 (6)
DDS (3)
数学 (6)
パソコン (12)
PLC (14)
未分類 (40)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (33)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)
Android (1)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

ブログリンク

FC2Ad

まとめ

Template by たけやん