人気ブログランキング |

体重と今日食べたもの

k1segawa.exblog.jp

ダイエット

ブログトップ

カテゴリ:arduino, AVR( 86 )

電子工作のお供、はんだごての細身のやつが手に入った。

ここのサンコー USB はんだごて 2 とほぼ同じ。

1本あるとタイヘン便利な「モバイルはんだごて」 - ケータイ Watch Watch
a0034780_12583301.png
a0034780_12583782.jpg
a0034780_12585844.jpg
a0034780_12590581.jpg

本体のお尻は3.5mピンジャック。
絶対回さないように自分で印をつけたのが下の写真。キャップの内径を少しやすりで削る。きついから回すのであって、中に縦にプラスチックがあって金属に沿うようになっているので、こいつを削り取る。これがなければ軽く回してしまった時に力が伝わらないので、安全だ。
a0034780_12591243.jpg

5V 8W なので8/5=1.6A以上あればいいのかな。5V 1.6A以上のUSB ACアダプタだ。

Amazon取り扱いサイトのコメントから。
キャップは内部配線の切断のため絶対回さない事!
金属の丸いボタンを押すのではなく、タッチするとリスタート
箱に入れたままUSBつないだらプラスチックケース溶けた < うわっそんな人いるんだ
キャップ付けたままだと電源入らない < そんな危ないことしてるの

英語の箱の説明から。
電源ONから15秒で作業可能、25秒後にLED消灯で、30秒後にクールダウンになり、スリープモードに自動的に遷移。
リスタートは金属のポイントのタッチ

USB繋いだら即加熱開始なのでUSBスイッチをつけて使う際にON/OFFするのがいいかも。15秒後にもう使えて、(さらに?)25秒後にLED消灯で、(さらに?)30-25=5秒でクールダウン(電源OFFになるんだろうなーでもまだこて先は熱いから気を付けてね)とか、安全に傾き過ぎて惚れる。
使える時間は常に25秒ってこと。消灯で教えてくれるから消えたらタッチ。いつ消えたか覚えていなければすでに30秒経過しててクールダウンしているかもしれないから、少なくともタッチから15秒後には再度使える。

つまり15秒待って25秒使い、タッチして15秒待って25秒使う。あ、これへたくそな自分には使い勝手悪いわ。
ずっとONになってると壊れるからかな。つまりLEDの消灯を監視しとけば、消えたらすぐタッチすればこて先が冷えなければ使い続けられるってこと。
多少冷えてても15秒後にはMAX。でもLEDなんて見てる暇ないよ、もう一杯一杯だもの。
放っておけば電源OFFに近くなる(タッチの監視はしてる)。安全のためには過信は禁物だが、ON後15+30(25秒含む)=45秒でOFFに近い状態(こて先はまだ冷えてないから熱い)になるのか。
待て待て。この計算式ON後30秒(15も25も含んでる)でOFFの可能性もある。すると使えるのは15秒。ベテランじゃん。

連続ではんだ付けするのではなく、1か所を30秒(クールダウンに入る前に)くらいで出来る中堅者向けかな。1か所ごとに休憩するような。時間に余裕がある人向け。

連続で複数の部分をはんだ付けするには、いちいちOFFになるので向いてなさそう。また1か所1分以上かかる、余りにもへたな方だ(LED消灯に気づかない)と、最初から温め直すんで、たった15秒でも待てない気の短い人には向いてない。

やべ、自分だわ。



by k1segawa | 2019-02-23 13:00 | arduino, AVR | Comments(0)
(2019/2/22追記)
すでにあった。USB はんだごてで検索するといくつかあって、ペンの太さのもある。同じ商品でも説明がしっかりしていてお急ぎ便対応の所に発注ー
こて先の太さを測って同じ径のこて先を切断して短くしよう~
(ここまで)

はんだごて 補助ツール というものがある。

今回エキサイトブログの管理画面から、Qittaからの流入よりGoogleからの流入の方が多くなってきたので、リンク先のドメインを調べていると、2年ほど前の記事「導通チェッカ」をリンクしているサイト様があった。

そこは電子工作界隈で有名な方で、はんだごて 補助ツールとして文鎮を配布していた方だった。

そのはんだごて 補助ツールはもう手に入らないので、検索すると色々な方が動画でも行っており、三脚につけたり、既存のレンズ付きクリップの改造をしていたりして興味深い。

ただ、その中で、はんだごてを固定する補助器具として展示用に使っている方がいらっしゃって、その画がどうも違和感。

はんだごてってなんであんなに熱を持つ所が長いんだろう。あれ無くてよくね?

昔はTVなどの深い機器の中に突っ込んではんだをしなければならなかったので、ああいう長さが必要だったので、今ならポータブルはんだごてというのがあり、短くなっている。
やはりはんだごても進化しなければならない。私もピストル型のを持っていて比較的短いが、基板のパターンが細かいとうまく当てられない。もう点でよくね?

ピストル型にしろポータブル型にしろ熱くなる点は1点でよく、あとは精々背の高い部品を回避するための冗長部分だ。ならもっと手先が不器用な人に使いやすく短くしたはんだごてが出てきてもいいのでは?

ポータブル型は電池やガスが必要なのと回転しないように太めの四角い本体をしているが、それって今のブームの電子工作にはオーバー。もっと充電池の単5とか直列で細身に出来るし、電池が無くなったら予備の電池に簡単に入れ替えればいいんじゃ。

本当にボールペンの太いやつぐらいの重さも軽いペン先だけ熱くなる自由度の高いはんだごてって作れないのかな?

熱を持つペン先が短ければ、やけどするむき出しの範囲も少なくなり、より子供でも扱いやすくなるし、レンズで見たりした時に思ったように動かせる。

今の長いはんだごてはとにかくコントロールが難しい。あれは制御する手から距離があるため、作用点(はんだごての先)と力点(手)が離れていることで、制御が難しいのだ。

昔の様なTV修理の需要ではなく、精々ユニバーサル基板にぽつぽつと裏からはんだづけするくらいの今の需要にあったはんだごてが出てきて欲しい。

自分としてはペン型よりもピストル型で、グリップ部分に電池が入っていて、ピストルの銃身部分が極端に短い、ほとんど引き金の上に、はんだごての先があるようなポータブルはんだごてが欲しいな。

グリップ出来て、はんだごての先は自由に配置・傾けられる・折り曲げられる、そんな未来のはんだごてが欲しい。

商品開発部の皆さん、もっと若い人の意見を取り入れて電子工作の高いハードルである「はんだ付け」を優しくしていってください~




by k1segawa | 2019-02-21 04:28 | arduino, AVR | Comments(0)

Nexus 7 2012 軽量化 (1/15)

以前の記事で最初にやることとしてAndroidのアップデートやroot化をした。

2500円で買ったnexus 7 2012をroot化 - 最初にやること (12/5)


結局Android 5.1にアップデート+service killer+Task Manager+Google Playのアップデート削除と無効化で工場出荷前に初期化+Google 開発者サービス停止+アプリキャッシュ削除を行った。

さらに、HomeアプリをGoogle Homeアプリではないものに変えて常時Google Nowチェックを切り、通信を抑制した。

最小限のservie プロセスとGoogle系アプリの起動を5分毎にチェックしてTask kill することで、余計なシステムプロセスを停止する。

これは、電源投入直後はしばらく高負荷だが、これらのアプリによって5分後には不要プロセスがkillされるので、安定する。

この場合、Google Playも削除(工場出荷状態-Google Play認証前状態)にしているので、既にインストールされている既存のアプリはGoogle Playによる「常時アップデートチェック」がされなくなるが、新しいアプリはapkで追加することになる。

apkはパッケージマネージャというandroid君アイコンのプログラムによってインストールされるので、Google Playが入って無くても問題ない。

問題はどうやってapkを持ってくるかだが、簡単なのは別のandroidスマホ(5.1)があって、そこにインストールして、Apk ExtractというアプリでGoogle ドライブに保存して受け渡しする。

Google ドライブはNexus 7 でも残しておく。
もちろんGoogleにログインはしておく。

Apk Extractは自分の場合SH-01G(5.1)へインストール。
アプリ起動後にapkがわかりやすくリストアップされ、そのメニューにshareが出てくるので、共有先をGoogle ドライブにするだけ。

Nexus 7でGoogle ドライブを開いてapkをクリックすると、android君のパッケージマネージャが選べるので、これでインストール。Google Playでも見かけた各種権限の許可をして、無事インストールできる。
ただし、Apk Senderという赤外線通信みたいなアプリもあるが、apkを探すのにファイル名を調べないといけない。その点Apk Extractはインストールアプリをアイコンとアプリ名で表示してくれるのでその手間が省ける。Google ドライブに保存するデメリットを超えるメリットをもたらす。

欲しいアプリをインストールするのにひと手間いるが、動作の遅いNexus 7 で探すより、メモリ3GのSH-01Gで探してインストールチェックした方が回り回って早い。

不要になったらGoogle ドライブに残っているので、SH-01Gの方では削除すればいいし。

欲しかったアプリは、Mega Widgetだが、ちゃんとインストールでき、遅いながらも操作できた。
これで地域の今日明日の天気を取得しアイコン表示して、Homeに配置する。
時計と年月日と曜日はまた別のウィジェットアプリを探してフォントサイズやフォーマットをカスタマイズして配置する。

これでスマートなこだわりのシンプルデザインのアイコンで出来たHome画面にカスタマイズ可能。


by k1segawa | 2019-01-15 20:30 | arduino, AVR | Comments(0)
nicocas(ニコキャス)がniconio動画プレーヤーに代わる安定したアプリとして優れている。

VR用「バーチャルキャスト」の前提としてインストールしたのだが、本来生配信用のアプリであるが動画再生にも対応しており、こちらの方が以前からのniconico動画プレーヤーと比べて操作性や一覧性、安定度が高い。

今後VR界隈で標準フォーマットとしてVRMをサポートする「バーチャルキャスト」アプリとの組み合わせで、配信ソフトとして重要になってくるから、メンテナンスにもどんどんリソースを投入していくだろう。

niconico動画プレーヤーが過去のしがらみ(Flash再生)に囚われている間に、生配信から+動画再生機能を追加したベースHTML5(Flashプレーヤーでの生配信はありえないので)のnicocasは基本内部構造がスッキリしているだろう(と思う)。

よってこれからはniconicoのアプリはnicocas一本に絞られていくのではないか。

今でも十分ユーザーフレンドリーで、YoutubeのようなUIなのでとっつきやすい。

スムーズに動作し落ちることもないので有料コンテンツ再生求めないなら、nicocasだ。
a0034780_14082116.png

by k1segawa | 2018-12-29 14:08 | arduino, AVR | Comments(0)
(2018/1/20追記)
IDEのメニューから[ツール][シリアルモニタ]を開き、通信速度を変えると、マイコン書き込みでエラーになる。

表示内容:
最大1024バイトのフラッシュメモリのうち、スケッチが776バイト(75%)を使っています。
最大64バイトのRAMのうち、グローバル変数が37バイト(57%)を使っていて、ローカル変数で27バイト使うことができます。
avrdude: Expected signature for ATtiny13 is 1E 90 07
Double check chip, or use -F to override this check.
選択と異なるマイクロコントローラが見つかりました。ツール>ボードメニューから正しいボードを選んでください。

どうやら[ツール][ブートローダを書き込む]をやれば正常になるようだ。
通信速度を9600→19200もその逆も同じだ。

書き込みに使っていた通信速度がデフォルトで9600らしく、シリアルモニタで変更した通信速度で、マイコンに書き込むようavrdudeへ指定するには一度"ブートローダを書き込む"を行わないといけないらしい。
Arduino 1.8.5のいつからそうなったのかわからないが、前はこんなことはなかった。シリアルモニタで変更したときもavrdudeの設定に反映させておけばいいのにな~(bitDuinoだけ?)

もしかして今回の記事にあるように、EEPROMが未保護→保護に変更になり、そしてマイコンの通信速度はEEPROMに存在(?)し、ブートローダ書き込み時のみEEPROMに通信速度が書き込まれる?そしてシリアルモニタで変更した通信速度はマイコン書き込み時に使われるが、EEPROMには書き込まれなくなった(回数削減のため)?

(ここまで)

以前の記事で、Fuseビットを書き換えるのは工場出荷状態だと8分周なので9.6MHz/8=1.2MHzと記述した。

しかし音がどうも低い。
なので書き込みで使っているavrdudeでFuseビットを読み出してみる。

場所はダウンロードディレクトリにzip展開したので、インストーラとは違う場所に。
C:\Users\<ユーザ名>\Downloads\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr\bin

インストーラだと以下のようになるのかな(自信なし)。
C:\Windows\Program Files\arduino\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr\bin

コマンドプロンプトを開き、ディレクトリ移動する。
cd C:\Users\<ユーザ名>\Downloads\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr\bin

confファイルが一つ上のetcにあり、Fuseビットの下位バイト読み出しするので次のように入力。
ATtiny13 は hfuse(fuseビットの上位1バイト H)は0xFF固定。Eは拡張ビットでATtiny13にはない。
COMポート番号は自分の環境に合わせて。

avrdude -C ..\etc\avrdude.conf -c avrisp -P COM4 -b 19200 -p attiny13 -U lfuse:r:con:h

詳しい仕様は以下のサイト様へ。

自分のサイトでも一度解説している。

[出力結果]
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x1e9007 (probably t13)
avrdude: reading lfuse memory:
Reading | ################################################## | 100% 0.02s
avrdude: writing output file "con"
0x2a
avrdude: safemode: Fuses OK (E:FF, H:FF, L:2A)

avrdude done. Thank you.

[ここまで]

0x2aだと自分のサイトで解説している表によると、
a0034780_21293841.png
0x2a(0010 1010)なので、下位バイトの表のビット5、3、1が1で、それ以外が0。
以前の記事では工場出荷時の値は0x6aで、EEPROM未保護だったのが0x2aで保護になっている。それ以外は規定値なので表の右端の通り、シリアルプログラミング許可、ウォッチドッグ使用しない、システムクロック8分周、低速立ち上がり、9.6M内部発振となっている。1.8.5でブートローダ書込みやった気がする。

おや?9.6MHz/8=1.2MHz(Internal)で合ってるな。

なんで音が低いのか。
スケッチをよく見ると、以下のコメントが。
// note durations: 4 = quarter note, 8 = eighth note, etc.:
4分音符、8分音符という意味かな?
配列の末尾の8。でもこれを変えても音の高さは変わらない。

//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
8分音符の時、1000/8=125か。150は少し多めか。
これは8分音符に近い音の長さになるようで、高さには関係ない。

そもそも楽譜のC4は正しい音程なのか?
C4はドレミファの開始のドに当たる音。開始のドをC4と呼ぶのが世界標準で、C3と呼ぶのは日本のYAMAHA独自らしい(C4 piano で検索)。
C4という表記はコンピュータのものでYAMAHAとYAMAHA以外(ローランドとか)で、1オクターブ違いがあり、"Wiki - 中央ハ"によると、ピアノ88鍵盤の中央に位置するドの音が、"中央ハ"と言われる音で、これは女性や変声前の男性が出せる最低のドらしい。おっさんが思う開始のドはたぶん"中央ハ"より1オクターブ低いド。カラオケでよく低く調整するやつ。子供時代ドレミや和音を覚えた時のドは""

そういえばこの楽譜はC4からG3の低い方へ音が変化していく。
C4がドレミファの開始のドだとすると、G3は普通のドレミファソラシドの鍵盤より、左の外の音になる。
あれ?普通の鍵盤の範囲で引くなら、C4は高いドじゃないと全部入らないよ。
C4が
これC4じゃなくてC5から始まるんじゃないかな。
そうするとすべて数字が1つ増えた楽譜になる。

つまり元の楽譜は海外のキーボードで弾けば、正しく高いドが鳴るはずなのか。
C4と指定すればYAMAHAより低く鳴ってしまう。そして世界標準ではそれは正しい。
そして「タンタタタンタン、タンタン」という楽譜は日本人が作ったもの。
元のサンプルで、4,4,4,...と書いてあるのはド、ドド、とひく

こんなところにずれがあるとは。tone関数自体は間違ってないのに、サンプルの楽譜をYAMAHAのキーボードで弾いたため、実際に発生する音階(世界標準)と合わなくなったのだろう。そしてpitches.hで定義してある音程はYAMAHA向けに変わってる?

正しい楽譜は次のようになる。
NOTE_C5, NOTE_G4,NOTE_G4, NOTE_A4, NOTE_G4,0, NOTE_B4, NOTE_C5,0};

日本と海外のWebピアノのサイト様を以下に示す。やはり海外はC3、日本はC4が開始のドと印字されている。
(音色は違うが音程は同じ)
日本:Web Piano
a0034780_23192939.png

a0034780_23195835.png
以前は修正後の音で鳴っていた。あれから何が変わったのだろう。

by k1segawa | 2018-01-20 21:59 | arduino, AVR | Comments(0)
2018最新 Arduino 1.8.5 と ATtiny13A と Japanino Arduino ISP で 100均ブザーを鳴らす。

元作成者maris_HY様のbitDuino10/13定義ファイルをkosakalab様がArduino 1.8.5のボードマネージャ対応に再構築されていたので、クリーンインストール ~ toneMelody_13A (maris_HY様 - bitDuinoでメロディを奏でてみた | 構想100年)で演奏までの手順を示す。

[環境]
Arduino 1.8.5
ATtiny13A
Japanino(またはArduino)
Windows10 Pro 64bit (Fall Creators Update 1709)

[手順]
(1) Japanino ドライバ(Arduinoなら不要)
(新版)
SILICON LABのサイトからCP210xドライバ - VCP(デフォルト)をダウンロード。
Windows 7/8/8.1/10 (v6.7.5) 用ダウンロード
a0034780_22242138.png
CP210xVCPInstaller_x64.exeを実行。インストール後、下記の(続き)へ進む。

(旧版)
学研のJapanioのサイトからCP210xのドライバを含む zip をダウンロード。
【Windows】ボタンをクリックしてダウンロード後、解凍し、
arduino-0018-japanino-2/arduino-0018/drivers/CP210x VCP Driver/CP210x_VCP_Win_XP_S2K3_Vista_7.exeを実行する。必要なのはドライバのみ。

インストール中、"□ Launch ~ Installer" と出るが、チェックを外して進む。再起動不要。

(続き)
USBケーブルを差すと画面右端から通知メッセージが現れ、自動的にインストールされる。再起動不要。

(2) Arduino 1.8.5 のインストール
以下の Arduino.cc 公式から【Windows Installer】/【Windows_zip】のいずれかを選び、次画面末尾の【JUST DOWNLOAD】をクリックしすぐにダウンロード(もちろん寄付もOK)。
インストール後、起動し、メニューの[File][Preferences](環境設定)を開くと、"Editor Language:"(言語設定)があるので【System Default】か【日本語 (Japanese)】を選び、OK押下後にIDEを再起動する。
a0034780_18390331.png
再起動後日本語化されている。

(3) ボードマネージャー
kosakalab様の次のサイトでjsonのURLをコピーする。
Arduinoの[ファイル][環境設定][追加のボードマネージャのURL:]の、右端のコピーアイコン(重なった□)をクリックし、出てきた貼り付け画面でURLを貼り付ける。
a0034780_18444245.png
OK押下後、[ツール][ボード:"Arduino/Genuino Uno"]を選び、先頭行の"ボードマネージャ"を選択する(画面はインストール後)。
a0034780_18511813.png
a0034780_18512621.png

ボードマネージャ画面が表示されるので、末尾の【bitDuino13 by maris_HY / modified by Kosaka.Lab.】のエリアをクリックする(画面はインストール後)。
a0034780_18524484.png

すると、そこが灰色になって選択状態になり、右に【インストール】ボタンが表示されるので、押下する。【バージョンの選択】ボタンは最新でよい。

インストール後、[ツール][ボード:Arduino/Genuino Uno]を選び、末尾の"ATtiny13 (bitDuino13)"を選択する。
a0034780_18541323.png

するとメニューは[ツール][ボード: "ATtiny13 (bitDuino13)"]に切り替わる。
a0034780_18553676.png

(4) Japanino を AVR ライターにする
Japanino(Arduino)は標準のスケッチを書き込むだけでAVR ライターになる。

そのため前の画面は以下のような設定にする。
これは学研の同リンク先にあるFAQ(よくある質問) Q24.の情報から。
※Arduino UnoならボードでArduino/Genuino Unoを選ぶだけでよい。

ボード: "Arduino Pro or Pro Mini"
プロセッサ: "ATmega168 (3.3V, 8MHz)"
シリアルポート: "(JapaninoをUSB接続した後、各自の環境に従う)"
書込装置: "AVRISP mkII"
※書込装置はこの時は無関係なのでなんでもいいはず。一応デフォルトにする。
a0034780_19360968.png
a0034780_19400454.png

するとこのような画面になる。
a0034780_19405540.png

そしてメニューから[ファイル][スケッチ例][11.ArduinoISP][ArduinoISP]を選択。
a0034780_19482410.png
そしてこのスケッチをコンパイル・書き込みする(【検証】・【マイコンボードに書き込む】ボタンを押す)。

スケッチが書き込まれ、Japanino(Arduino)が汎用AVRライターに変身する。
※ただし高電圧書き込みや特殊なモードは書き込めない。そしてこれ以降このライターにする操作は、間違って書き換えない限り1回きりである(よく間違えるが)。

(5) Japanino ISP(汎用AVRライター)をATtiny13用に設定する
ライターになったので今度は対象のATtiny13に書き込む設定をする。

通常工場出荷直後のATtiny13Aは8分周(システムクロックが通常(9.6MHz)の1/8=1.2MHz)なので次のように設定する。
a0034780_20061784.png
(もしクロックが工場出荷状態と異なるなら、上記の状態で"ブートローダを書き込む"を行う。ATtiny13のFuseビットが選択したクロックに従って書き換えられる)

(6) toneMelody関数を使ったスケッチ
対象のスケッチはmaris_HY様のサイトにある。

このページの次のリンクとなる。
「toneSampleSketch.zip」をダウンロード

なのでサイト様のページに移動してダウンロードする。

解凍して、IDEのメニュー[ファイル][開く]で、toneSampleSketch/toneMelody_tiny13A/toneMelody_tiny13A.inoを読み込む。
a0034780_20195456.png
すると必要なヘッダをスケッチから読み取って一緒に読み込まれる。

コンパイルすると次のようなメッセージが表示される。

Archiving built core (caching) in: C:\Users\<ユーザ名>\AppData\Local\Temp\arduino_cache_437240\core\core_bitDuino13_avr_bitDuino13-9_clock_internal-12_b7d34594cdd99a1f25e129b42b9fe3ab.a
最大1024バイトのフラッシュメモリのうち、スケッチが776バイト(75%)を使っています。
最大64バイトのRAMのうち、グローバル変数が37バイト(57%)を使っていて、ローカル変数で27バイト使うことができます。

エラーではないので回路を組めばそのままATtiny13に書き込むことが出来る。

(7) 回路組み立て
ブザーは100均のキッチンタイマーから拝借する。
繋ぎ方は次の通り。
a0034780_22253094.png
部品がないので、Japaninoの代わりにArduino Uno、ATtiny13の代わりにATtiny85。ピンソケットでライター部分を取り外し可能に。ブザーはソースを参照してPB3に繋ぐ。抵抗は100Ω。

書き込み終わるとブザーから"タン、タタタンタン、タンタン"とリズムよく音が鳴る。USBケーブルの抜き差しで電源ON/OFFするたびに音が再生される。


by k1segawa | 2018-01-16 15:33 | arduino, AVR | Comments(0)
arudino 界隈で 中国製の安いやつ(300円前後)がよくamazonで出ているが、ドライバがCH340なので、中国のチップドライバが必要。
なので、正式なドライバにもかかわらず、不安に思っている一般ピーポーがいるが、心配ならWindows10で標準で入っているwinchiphead.com(WCH)社のドライバが同じなのでそちらからダウンロードするといい。Microsoftデジタル署名も入っておりびんぼうでいいのの、CH340Gチップで利用中。

キーワード「CH340G」で検索して見つかるのはいくつかあるが、スイッチサイエンスさんのサイトが良いかも。(zipだし、ダウンロードの際に余計なプログラムをインストールされる事も今のところない。arduinoで有名なSparkFun社のサイトらしい)

Macも64bitもLinuxもあるので特に最新でなくても良いならこれでOK。
まあ最初に見つかるCH340の中国サイトは極めて有名な企業なので、心配する必要もないのだが。

詳しい事はこちらのサイト様で。ずーと下の方にCH340はある。

CH340のドライバのサイト=WCH社である事がわかる。ちゃんとMicrosoft社に認められているのだ(当時と今2017では違うのだ)。
ねむいさんの所の説明を読めばわかるが、ドライバうんぬんより、300円の安いハードには理由がある(内部配線が通電で切れる)ので、せいぜいムダ金にならないよう気を付けたい。


by k1segawa | 2017-09-06 14:42 | arduino, AVR | Comments(0)
Arduino のソフト開発で、ハード(回路)に問題があるのか、制御ソフトに問題あるのか切り分けるのに、VSのような高度なデバッグ機能があると変数の値やピンへの入出力が正しく行われているか解かって嬉しいのだが、標準のArduino IDEでは残念ながらそこまでの機能は無い。

で、UnoArduSimというシミュレータソフトがある。

名前からUnoをシミュレートしており限定されるのだが、それはそれでソフトのアルゴリズムが確認できればあとはピン配置やレジスタ置換などで済み、そのマイコン専用の機能以外は一般的なマイコンの機能はデバッグ出来そうな感触がある。

起動すると以下のような感じ。
a0034780_17555100.jpg
左がデバッガのトレース画面で、右がシミュレータ画面。左下は変数のトレースを示す。

詳しい使い方はメニューの[Help][Quick Help]や、よそのサイト様に譲るが、概略としてまず左のトレース画面は "編集画面ではない" 事。シミュレータ画面ではダブルクリックや左右シングルクリックで機能を呼び出すようになっている。

ツールバーはいわゆるIDEのボタンが配置されており、まずはチュートリアルとして以下の方法を示す。

【サンプルスケッチ Blink の実行】
Arduino IDEのサンプルで最初にやるLチカのサンプルスケッチ Blinkを使って基本的な使い方を学ぼう。

まずArduino IDE のどのバージョンでもいいので起動し、[メニュー][スケッチ例][Basic][Blink]でスケッチを表示させる。
a0034780_18044780.jpg
これをUnoArduSimに読み込ませるのだが、すべて選択しコピーする。そしてUnoArduSimの[メニュー][Edit/View]から編集画面を開き、そこにペーストする。
a0034780_18070463.jpg
この画面では対応するカッコや予約語がハイライト表示されているが、これは画面左下の「BOLD HIGHLIGHTING」を押したため。
a0034780_18090971.jpg
その他のボタンで特徴的なのは「コンパイル」「適用」「保存」ボタン。この画面がソースの編集画面なのでここでスケッチの変更を行える。
「保存」してもいいし、「適用」してもいい。適用後はメインメニューで「Save As」保存を忘れない事。ここではコンパイル&適用ボタンを押しメイン画面に戻った様子を示す。
a0034780_18132725.jpg
BlinkはUnoの13ピンに繋がったLEDを点滅させるスケッチで、次のように右上の「LED」の空白の欄に「13」と直接入れてやれば、LEDを接続した事になる(青い吹き出し)。
a0034780_18165617.jpg
もうちょっと詳しく説明すると、LEDのRYGはRed,Yellow,Greenの略でLEDを3色から選べ、丸いラジオボタンは、ピンに電流が通ったら(1になる)光る正論理か、逆に消える負論理かを選択する。たぶんプルダウン(1で光る)かプルアップ(1で消える)で繋いだという事だろう。そしてメニューには基本的な実行とストップ、リセットボタンなどがある。

左のトレース画面にはUnoArduSimが勝手に追加したメイン関数がある。これはArduino IDEでは隠蔽されているが、多少違う(init関数が無い)がほぼ同じ物が実はコンパイルされている。
a0034780_18230113.jpg
左下には変数ledがその値とともに表示されており、ダブルクリックすると以下のように値を変更できる。キャンセルは×ボタン。
a0034780_18291705.jpg
また右画面のピン、例えば13番ピンの値を左クリックすると、デジタル値としてみたピンの値を示すオシロスコープ、右クリックするとアナログ値としてみたピンの値を示すオシロスコープの様子が表示される(前の画面の青い吹き出し)。
a0034780_18325511.jpg
a0034780_18330208.jpg
同じように「SERVO」という欄に「13」と入れてやるとサーボモータに13ピンを繋いだことになり、実行するとサーボモータが回転する。画像は2回LEDを光らせるのと同じ回数実行した様子。
a0034780_18361599.jpg
ピン番号を入れる時次のようなエラーメッセージを表示する事がある。
例えば次に説明する「PUSH」ボタンに13と入れた場合、入力なのにpinMode関数でOUTPUT指定されているため。
a0034780_18420490.jpg
すでに「SPISLV」で使用済みの12を「LED」で12と入れた場合は、ピン番号が重複しているため。
a0034780_18440596.jpg
また「PUSH」はプッシュボタン(タクトスイッチ等)で、latch(ラッチ)というのはボタンを押したままにするのか、手を離すとスイッチOFFにするのかを決める。latchを押すとすぐ下の黒いボタンは手を離しても押したままになる。そしてラジオボタンの上を選択すると、押すとONになり、下は押すとOFFになる。ついでに13番を指定したLEDもRからYに変えて、ラジオボタンは下方向(↓)の正論理にしておこう。
a0034780_18511441.jpg
さて、ここでは青い枠に示すようにEdit/View画面でソースを変更し、PUSHボタンの動きを確かめてみよう。まず以下のように、一度スケッチBlinkを[File][Save As]で保存し、UnoArduSimを終了、再起動しよう。simple.inoという最初のサンプルが表示されるのでそれから青い枠に示すソースを追加する。コンパイルして正しい事を確認するのを忘れないように。
a0034780_18565545.jpg
すると、前の画面の通り実行後、PUSHボタンを押すと13を指定したLEDが黄色く光り、Unoのピンも0から1に変化するのがわかる。基板上の13番ピンのLEDも光っている。


あとは以下のようにスライドスイッチとブザーを示す。クリックでON/OFF、抵抗値1KΩでつながっているらしい。ブザーはtone関数のサンプルスケッチで動くようだ。
a0034780_19100086.jpg
ヘルプにあるような他の部品は[メニュー][Configure][I/O Devices]で、画面で0になっているところを1にすると出現する。
a0034780_19121151.jpg
その他の部品も以下の通り。
a0034780_19132288.jpg
「SERIAL」や「SFTSER」を右クリックするとシリアルモニタが、「SPISLV」「I2CSLV」を右クリックすると送受信バッファの内容が表示される。
a0034780_19163174.jpg
a0034780_19171659.jpg
ちなみに、日本語でぱっと見わからないところはこんな所かな~。あとはヘルプなり、フォーラムなりをのぞくといいかも。
これでソフトが正しくピンのON/OFFをしているか、変数は正しいかをハードをくっつけなくてもデバッグ出来るな~

by k1segawa | 2017-09-05 18:36 | arduino, AVR | Comments(0)
100均のキッチンタイマーでちょっと作成しようとしているので、それに付いていたブザーを調べるのにATtiny13でブザーを鳴らしてみる。

ブザーには電子ブザー、圧電ブザーの2つがあって、電子ブザーなら電圧をかけるだけで音が鳴るのに対し、圧電ブザーは矩形波を発生させて音を鳴らしてやらなければならない。
どちらのブザーなのかよくわからなかったので、単三電池を繋いで見たが、接触時のみ雑音のような音が一瞬出るだけで、抵抗が必要なのか電子ブザーでなかったのかわからない。Arduinoのtone関数(IDEに存在するスケッチ例でいうtoneMelody内の関数)で鳴らして鳴るようなら、作成例からも圧電ブザーのような気がする。

ということで、ATtiny13にArduinoを載せるbitDuinoの出番。
ついでに最新のArduino IDE にする。
Arduino 1.8.3に最新のbitDuinoがいつものサイト様にある。

こちらからbitDuino_2017がArduino 1.6.x と 1.8.xに対応しているので、これを説明の通りにDocuments/Arduino/hardwareにコピー。
IDEを再起動すると有効になる。それぞれ設定は以下の通り。ボードマネージャやライブラリインクルードなどは使わない。
a0034780_22422380.png
tone関数もATtiny13に対応したものが、同じページの示すサイト様にある。

ATtiny10とATtiny13の両方に対応しているが、ATtiny10はまだ未完成だがATtiny13にはそのままで対応しているようだ。
ただし、tone関数の第3引数は削除されているようだ。その新たなライブラリは同サイト様の以下のページにある。

そこにある「toneSampleSketch.zip」をダウンロードというリンクからATtiny13のスケッチを取得。
同ページに表示されているソースはATtiny10の物なので今回は無関係。つまりtoneCycleMelody関数、メモリが少ないうんぬんはATtiny10の事なので、ATtiny13はIDEに内蔵のtoneMelodyのスケッチとほぼ同じ。

ダウンロードしたスケッチを開き、回路を組んでNew ATtiny13をセット(8分周のままなので1.2MHzを選んだ)。
抵抗は100均のチップ抵抗を見ると102なので10x10^2=1000Ω=1kΩを。ピンはソースからspk=4よりPB4をブザーのプラスにGNDをブザーのマイナスに。そのどこかに抵抗をはさむ。
コンパイルもそのまま通り書込みもOK。

「最大1024バイトのフラッシュメモリのうち、スケッチが788バイト(76%)を使っています。
最大64バイトのRAMのうち、グローバル変数が25バイト(39%)を使っていて、ローカル変数で39バイト使うことができます。」
メッセージも日本語で凄く親切。

実際鳴らすと音が小さい。100Ωにするとずいぶん大きくなる。きっとキッチンタイマーの省電力対策なのだろう。

これで圧電ブザーという事がわかった。同じようなものは 秋月電子通商のUDB-05LFPN 80円か。ボタン電池LR1130(1.5V)やレギュレータも載って液晶まで付いて凄いコスパだ。

Arduino(Japanino)ライタを使ってるのでbootloaderを使ってないので容量は788バイトで済んでるが、さらに少なくするならArduino IDEの関数を使わず直接ポートをアクセスするようIDE上で書けば削減される(pinModeなど)。この時bitDuinoの関数を使わなければbitDuinoのインストールは関係なくなる。

P.S.
書込み装置:Arduino as ISPならbootloaderは不要だが、Fuseビットを書き換える処理もしているので、9.6MHz(Internal)を選んでブートローダ書込みを実行後にマイコン書込みすれば指定のClockで動作可能。

P.S.2
今回bitDuinoをインストールしているのはATtiny13用のArduino IDE関数(pinMode,tone)がbitDuinoによって置き換えられているからで、今までの1.5.2の環境などではこれらの関数を使わず、その代わり直接ポートやレジスタをアクセスするavr-gccの関数を使用しているのでbitDuinoはインストール不要。正確にはmain関数がinit関数を呼び出しているので、多少のArduino IDE関数を使っている。
avr-gcc関数:avrの標準C/C++関数
Arduino IDE関数:avrの関数に使い勝手が良いようにどんなavr MCUでもソースが共通になるようなラッパー関数
bitDuino:そのラッパー関数をATtiny13/10でも使えるように書き換えたもの

by k1segawa | 2017-08-14 22:03 | arduino, AVR | Comments(0)
ATtiny13をメインに電子工作していたが、特に何か作りたい物がネットを徘徊してもなかったのだが、海外に目を向けると色々あって面白い。
前の記事 Pinterest と 電子工作 (6/17)もそうだが、下記のサイト様はATtiny13のマイコンとしての基本機能をいくつか網羅していてマイコン初心者に便利。

a0034780_17395410.png
Links

というリンクに100個色んなプロジェクトをやってみるというのがあり、ここにATtiny13による「ソフト UART」や「ウォッチドック」、「dance lights with FFT」 など基本から応用がまとまっている。

100個はないがそれでも回路図が簡単で、プログラムもCソースが短くて、簡単にArduino IDEに流用できる。

例えば「ウォッチドック」の「[005] ATtiny13 – blinky with Watchdog Timer」なんかは、
[回路図]
a0034780_17202373.png
[元ソース]
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>

#define LED_PIN PB0

ISR(WDT_vect)
{
PORTB ^= _BV(LED_PIN); // toggle LED pin
}

int
main(void)
{
/* setup */
DDRB = 0b00000001; // set LED pin as OUTPUT
PORTB = 0b00000000; // set all pins to LOW
// set prescaler to 0.5s and enable Watchdog Timer
wdt_enable(WDTO_500MS);

// enable Watchdog Timer interrupt
WDTCR |= _BV(WDTIE);
sei(); // enable global interrupts

/* loop */
while (1);
}

となるのだが、
/* setup */をsetup()内に移植し、/* loop */がwhile(1);なので単にloop()を呼び出す。それ以外はそのまま記述するだけ。

[Arduino IDE用 新ソース]
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>

#define LED_PIN PB0

ISR(WDT_vect)
{
PORTB ^= _BV(LED_PIN); // toggle LED pin
}

void setup() {
/* setup */
DDRB = 0b00000001; // set LED pin as OUTPUT
PORTB = 0b00000000; // set all pins to LOW
// set prescaler to 0.5s and enable Watchdog Timer
wdt_enable(WDTO_500MS);

// enable Watchdog Timer interrupt
WDTCR |= _BV(WDTIE);
sei(); // enable global interrupts
}

void loop() {
}


色々まとまってて面白いわー

[相互変換]
Cソース → Arduino IDE ソースは上のような感じで。
Arduino IDE ソース → Cソースは以下の記事のように。


by k1segawa | 2017-07-28 17:01 | arduino, AVR | Comments(0)