2018年1月17日水曜日

【AVR】 My first steps in Arduino

Arduinoをいじってみる
とりあえずArduino入門
 1月6日の秋葉原QRP懇親会の2次会でした。 拝見した自作品にはArduinoがとてもうまく活用されていました。それが目に止まったのが切っ掛けだったように思います。 もちろんArduino(←wiki)がどんなものか幾らかは知っていたのですが開発に使ったことはありません。それで少し突っ込んだ質問をしてみたのです。

 これは「脈あり」との判断だったのでしょうか? 数日と開かずにArduinoの幾つかと入門書のセットが郵送されてきたのです。(JA6IRK/1岩永さんいつもありがとうございます。そう言えばBASCOM-AVRの時もお世話になりましたね)

  手紙は入っていませんでしたが、これを読んで手を動かせばあなたの疑問は解消して上手く使えるようになりますよ・・・と言う意味なのでしょう、たぶん。 でも、BASCOM-AVRでワンチップ・マイコンをいじり始めたのは2006年10月でしたから、もう12年も前です。そのころでさえ覚えるより忘れる方が早いくらいでしたから、今ごろ始めて何とかなるものでしょうか? モノにならない可能性は大ですけれど新春は何か始めるのには良いときです。 炬燵(こたつ)から抜け出してやってみることにしました。

                    ☆

 まずはArduino互換ボードを用意してマイコン入門の定番になっている「LEDチカチカ」・・・通称「L-チカ」を目標にやってみます。 既に使っている人にはアタリマエ、よく考えれば「それって違うだろーーぼけ!」と言うような回り道をしながらLEDがチカチカするまでを扱います。もちろんどこにでも書いてあるようなつまらん話しの連続ですが忘れっぽい私の備忘録としてまとめましょう。おひまでしたらお付き合いでも。(笑)

 【色々ある互換ボード
 整理してみたらArduino関連のボードがたくさん出てきました。 先日のBlogで使った秋月の互換ボード(←リンク)も仲間の一つですが、Arduinoとしては使ってませんし部品キットも揃っていないので省きました。

 あとからわかることですが、サイズや機能、コストなどからみて手前左側に2つ同じものが並んでいるArduino nanoが使い易いようです。 その奥にあるPro-miniも組込み用途には良さそうですが「学習用」には向いていないように感じます。 多くの参考書ではArduino uno(ウノ)と言うのを標準にしているようです。 初心者としては参考書と同じものが欲しくなるものです。 入門を機会に購入しても良いのですが、unoの互換品が作れそうな右手前にある「びんぼうでいいの」と言うaitendoの互換ボードキット(赤い基板)で何とかならないかと言うのが当面の願望です。(あるいは目標です)

 実はこれらArduino関連の基板はみんな頂きものです。ずいぶん前からArduinoへのお誘いがあったのですがボードを溜め込んで死蔵してきたのでした。まったく面目ありません。(笑)

Arduino uno互換が
 aitendoの「びんぼうでいいの」*1をよく見ると、Arduino unoと完全に同じではないものの、引き出されているポートや機能は類似しているようです。(*1:なんかすごい商品名ですね・笑)

 Arduino遊びを始めてみたものの、はたしてモノになるのかわからないので取りあえず手持ちを使って勉強しましょう。 それでどうしても不自由そうになったら正規品を求めてもムダではないでしょう。しかし、ネットの情報を総合するとこの「貧乏Arduino」でも一通り同じようなことができそうでした。

  Arduino uno互換にするにはAVRマイコン:ATmega328P-PUをソケットに搭載し、そのマイコンに「ブートローダ」と称する自己書き込み用のプログラムをあらかじめ書き込んでおく必要があります。 そのブートローダの書込みを行なって動作確認を行なうまでが今回のBlogの目標範囲です。 具体的にはノートPC上のArduino開発環境からUSB接続でプログラム(Arduinoではスケッチと呼ぶ)を書き込んで「L-チカ」の成功をめざします。w

Arduino unoのポート
 ネット上にArduino unoのポート(引出し端子)について上手に説明されている図があったので参考にしてみます。

 L-チカをやる今の段階では必要ありませんが、ボード外に何かを接続する時に重要になります。 ATmega328Pのほとんどすべてのピン(=ポート)が引き出されているのがわかりました。

 マイコンなんて所詮どこかのポート(ピン)の状態を読み込んで、ちょっと細工したら別のポートに出力するだけの仕事しかやっていません。コンピュータだと思うと何だか難しそうですがやってる事はごく単純です。 この図は各ポートがどんな信号のやり取りに向いているのかごく簡潔にまとめてあるわけです。

 なお、本物のArduino unoにはUSBインターフェース用にATMEL社製のATmega8U2と言うAVRマイコンが使われています。 貧乏Arduino unoではCH340と言うUSB-IF専用のチップになっておりコストダウンされています。 しかしArduinoの開発環境(Arduino-IDE)からみて、おおむね本物のArduino unoと同じように使えるそうです。

注:開発環境のArduino-IDEはあらかじめパソコンにインストールしてあります。www.arduino.cc/en/Main/Softwareから無償でダウンロードできました。Windows版、Mac版、Unix版があります。 ここではWindows 7のノートPCで試しています。バージョンは2018年1月の時点で最新のVer.1.8.5です。
 実はIDEのインストールにもちょっとトラブルがありました。最初はJavaのRuntimeルーチンがないので云々というエラーが出ました。 しばらく調べてみたのですが原因は良くわかりません。 結論からいうとダウンロードした.zipファイルの展開が不完全だったようです。はっきりはしませんが最初の展開中にちょうどWindowsのアップデートが自動起動したのが原因のように思います。中途半端に展開されていたIDEが入ったフォルダを廃棄し、あらためて.zipファイルを展開しなおしたら正常に起動できました。とんだ回り道でした。普通はすんなりと展開できてただちに起動できるでしょう。

 【Arduino unoの回路
 Arduino unoの回路図です。 普段はブラックボックス扱いでも良いのでしょうが、何らかのトラブルがあった時には回路に帰ってトラブルシューティングが必要なこともあるでしょう。

  ハードウエアになじみがあるなら回路図を用意しておくと何となく安心できます。 但し、これは本物のArduino unoですから・・・・。(笑)

 【Arduino nanoで
 良く出回っているArduino nanoの互換基板には既にブートローダが書き込まれており、しかも「L-チカ」まで書いてあるようなのです。

 ATmega328は写真のように基板に面実装されていますので取り外して単独で書き込むことはできません。 非正規な互換基板とは言え買ってすぐ使うにはブートローダが書き込んでなくてはだめです。 購入したなら取りあえずUSBに繋いでテストしてみるはずです。しかし何も起こらないブートローダだけでは不親切でしょう。 最も基本的なL-チカを一緒に書いておけば基板が動作することの証拠になります。 プログラム・メモリはフラッシュメモリなので書き換えは自在ですから事前に何か書いてあっても支障はないわけです。

 【Arduino nanoの回路図
 Arduino nanoの回路図です。 USB-IFを内蔵しています。 FT232と言うUSB-IFチップが標準のようですが互換品(にせもの?)ではCH340と言うUSB-IFチップが使ってあることが多いようです。

 機能はほぼ同じと言えますが、USBドライバに互換性はありません。各チップ個々に必要です。 従って開発に使うパソコンにはCH340用のドライバをインストールしておく必要があります。また互換品のnanoだけでなく「びんぼうでいいの」の方もUSB-IFのチップはCH340ですからドライバのインストールは必須といえます。 CH340のドライバは検索で見つかりますが、aitendo(←リンク)にて該当製品(USB-IF関係)のところにリンクがありダウンロードできます。 なお、CH340のドライバ・インストールでハマる人も結構あるようなのでトラブったら検索すると解決策が見つかります。

 【nanoのプログラムを吸い上げる
 開発に使うパソコンには既にCH340のドライバが入っていました。 おそらくGPS-DOを開発していたときにUSB-IF基板のドライバとしてインストールしてあったのでしょう。

 従ってただちにArduinoの開発環境から動かしても良かったのですが、次項のように搭載されているマイコン:ATmega328に入っているプログラムを吸い上げたかったかったので、汎用のプログラム・ライタを経由してテストしてみました。

  電源が加わるともちろん正常に動作し、LEDがチカチカします。 ここでは汎用のプログラムライタにはHIDaspxを使いました。BASCOM-AVRで使い慣れたものです。 USBaspライタなどでも良いはずです。

 なお、このような面倒なことをしようと思うのはごく僅かの人でしょう。AVRマイコン用の汎用プログラム・ライタの詳しいことは省きます。検索すればたくさん見つかるのでそちらを参考にしてください。ここで使ったHIDaspxやUSBaspといったライタは既に流行を過ぎているようでネット上から消滅したかあるいは最近では更新もされていないようでした。

 【nanoのhexファイル
 nano基板に載っているAVRマイコンのプログラムメモリは読み出し禁止ではありません。従って簡単に吸い上げることができます。 HIDaspxを接続しhidspx-GUIと言うパソコン側の操作ソフトを起動します。 画面からDumpボタンをクリックすればプログラムメモリの内容が取り込まれます。それをHEXファイルとして一旦保存しておきます。

 名前は何でも良いのですが「Arduino-01.hex」としてみました。写真のようにファイル名記入欄にインプットします。 インプットしたらSaveボタンを押します。

 【HEXファイルはできた
 hidspxと言うフォルダ内を見ましょう。 Arduino-01.hexができていることがわかります。 これをライタを使って新品のATmega328Pに書き込めばArduinoのクローンが作れるハズと踏んだのですが・・・・・

 そうは甘くないことがすぐにわかるのです。まあ、良く頭を冷やして考えたらここまでの情報でもあまり旨くなさそうなことはわかるんですけれど。結論をあせらずもう少しやってみましょう。(笑)

#それで非常措置用の.hexファイルも用意してあったような訳なんです。

 【びんぼうでいいのに書き込み
 さっそく貧乏Arduinoに「Arduino-01.hex」を書き込んでみましょう。

 「びんぼうでいいの」基板には6ピンのISP(=ICSP)コネクタが付いています。これを経由すれば一般的なインサーキット・ライタからプログラムの書込みや消去などすべての操作が可能です。もちろん、HIDaspxからも可能です。 電源もUSB側から供給できるのでこのような作業には便利です。

 貧乏ArduinoにHIDaspxを接続したらhidspx-GUIのファイルメニューから「Arduino-01.hex」を開きます。 操作画面のWriteボタンを押せば書込みが始まり、ベリファイ(比較照合)されてエラーがなければ正常に終了します。 ライター側の+5V電源をONにして貧乏Arduino基板にも電源を与えておくのを忘れないように。 (書込みが正常に終われば、ただちにL-チカが始まるはずですが、とても遅いチカチカでしょう)

 【ヒューズビットも忘れずに
 まっさらのAVRマイコンは内蔵のクロック発振器(1MHz)で動作します。これが初期状態と言うわけです。一方、Arduino unoは外付けの水晶発振子を使い16 MHzのクロックで動作させるのが基本です。

 従って、搭載するAVRマイコンのヒューズビットを操作して外付けの水晶発振子がクロックとして使われるように設定しなくてはなりません。 図のようにhidspx-GUIの画面からヒューズビットの書き換えを行ないました。

 ヒューズビットの扱いについては過去のBlog(←リンク)にもありますが注意を要します。 上記のように予め水晶発振子が載っている基板上で書き換え操作を行なうのなら大丈夫ですが、水晶が載っていない・・・例えばブレッドボードのような・・・環境で書き換えると書き換えたとたんにAVRマイコンの応答がなくなります。 要するに内蔵の発振器をやめて外付けの水晶発振子や外部クロックに切り替えたら、それを与えないとまったく機能しなくなります。反応がなくなってもAVRマイコンがお釈迦になった訳ではないのでクロックを与えれば復活します。まずは慌てず冷静に。

重要:画面ではATmega328PのヒューズビットLoだけを書き換えているように見えますが、実際にはヒューズビットHiとヒューズビットExの書き換えも必要です。 Arduinoとして使うためには、Lo=FF、Hi=DA、Ex=F8に書き換えます。 なお、参考までにATmega328Pを工場出荷時の初期値に戻すには、Lo=62、Hi=D9、Ex=FFとなります。

                   ☆

 さて、プログラムは書き込めましたしヒューズビットも書き換えました。 Arduino unoの互換基板になったのでしょうか? 汎用ライタをISP端子から撤去したら、さっそくUSBケーブルにつなぎ換えて電源を与えてみました。 書き込んだブートローダに合わせて入っていたL-チカのプログラム(=スケッチ)が起動してただちにLEDがチカチカしました。また、パソコンから見てUSB接続もCOMポートとして認識されました。

 しかしこれで成功ではありません。Arduino-IDEからはArduinoとは見なされないのです。従って新たなプログラムの書き込みはできませんでした。書き込んでもできなかったと言うエラーが表示されます。 わかってしまえばアタリマエですがハードに合わせたブートローダを書き込む必要があるみたいです。Aruduino nanoとArduino unoは良く似た回路構成なのですがnano用をそっくりそのままunoに移植しても旨くなかったようです。

                   ☆

 ではどうしましょうか? 調べたら「びんぼうでいいの」用のブートローダがネット上にありました。 同じようなことを考える人はいるもので便利な世の中です。(笑) 以下のテキスト行を選択してコピーしたら何か任意のテキストエディタを起動してそっくりペーストします。そのあと適当な名前を付けた.hexファイルとしてセーブしておきます。
 ライタにHIDaspxを使うのでしたら「hidspx」と言うフォルダ内に作ったその.hexファイルを入れておきます。あとはライタの制御ソフト:hidspx-GUIのファイルメニューからその.hexファイルを選んで読み込み、ATmega328Pに書き込めばOKです。もしまだでしたらヒューズビットの書き換えも忘れずに行ないます。

=================================
:107E0000112484B714BE81FFF0D085E080938100F7
:107E100082E08093C00088E18093C10086E0809377
:107E2000C20080E18093C4008EE0C9D0259A86E02C
:107E300020E33CEF91E0309385002093840096BBD3
:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4
:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7
:107E6000A2D0813461F49FD0082FAFD0023811F036
:107E7000013811F484E001C083E08DD089C08234E0
:107E800011F484E103C0853419F485E0A6D080C0E4
:107E9000853579F488D0E82EFF2485D0082F10E0AE
:107EA000102F00270E291F29000F111F8ED06801E7
:107EB0006FC0863521F484E090D080E0DECF843638
:107EC00009F040C070D06FD0082F6DD080E0C81688
:107ED00080E7D80618F4F601B7BEE895C0E0D1E017
:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8
:107EF00018F0F601B7BEE89568D007B600FCFDCFD4
:107F0000A601A0E0B1E02C9130E011968C91119780
:107F100090E0982F8827822B932B1296FA010C0160
:107F200087BEE89511244E5F5F4FF1E0A038BF0790
:107F300051F7F601A7BEE89507B600FCFDCF97BE46
:107F4000E89526C08437B1F42ED02DD0F82E2BD052
:107F50003CD0F601EF2C8F010F5F1F4F84911BD097
:107F6000EA94F801C1F70894C11CD11CFA94CF0C13
:107F7000D11C0EC0853739F428D08EE10CD085E9AC
:107F80000AD08FE07ACF813511F488E018D01DD067
:107F900080E101D065CF982F8091C00085FFFCCF94
:107FA0009093C60008958091C00087FFFCCF809118
:107FB000C00084FD01C0A8958091C6000895E0E648
:107FC000F0E098E1908380830895EDDF803219F02E
:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA
:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6
:047FF000FF270994CA
:027FFE00040479
:0400000300007E007B
:00000001FF
==================================
上記の先頭が:(コロン)の行をすべてコピペし適当な名前を付けて保存します。 Inetel-HEXコードで記述されていますので必ず拡張子が.hexになったファイル名にします。(例:binbohaokiraku.hexとか)

 これを「びんぼうでいいの」に載せたATmega328Pに書き込んで、あとはヒューズビットを確認すればすべてOKです。 こんどはArduino-IDEからUSBケーブルの接続だけでプログラムの書き込みができるはずです。 もう汎用プログラムライタの出番はなくなります。

参考・1: ネット上を探すと、Arduino uno用というuno.hexという.hexファイルが見つかります。上記のリストは「びんぼうでいいの」で動作実績があるものですが,2つを比較したところ同じ内容でした。従ってネットで見つかる「uno.hex」と言うファイルを書き込んでも大丈夫だろうと思います。

参考・2:Arduinoを使ってブートローダを書き込む方法
 既にブートローダが書き込まれておりArduino-IDEで操作できるArduinoが存在すれば(特別なプログラムライタなしで)まっさらなATmega328Pが載ったボードにブートローダを書き込むことができます 。単体のATmega328Pをブレッドボードに載せたようなものでも書込み可能です。 ネット上に詳しい方法がたくさん見つかります。 初めてArduinoでAVRマイコンに触れるなら汎用のプログラムライタなんで持っていないのが普通でしょう。既存のArduinoを使う方法が正攻法だと思います。 結局のところ、ここでも鶏が先か卵が先か?・・・と言うような話しになるわけですね。 Arduino nanoの互換品はたいへん安価ですからまずは一つ買ってしまうと問題解決です。

参考・3:「びんぼうでいいの」用のブートローダが書き込まれたCPUが 欲しいけれど・・・。 プログラム書込み環境がないので困っているのでしたら、ATmega328Pをお送りいただければ書き込んでお返しします。必要でしたら遠慮なくどうぞ。

 【Arduino IDEで書込み成功
 写真はArduino-IDEの画面です。 こんどは「びんぼうでいいの」もArduino-IDEに認識され、定番の「L-チカ」プログラム(=スケッチ)も無事に書き換えできました。 スケッチの一部をいじってうんと早いLEDチカチカを入れてみました。(笑)

 こんどこそ成功です!

 【びんぼうでいいののセッティング
 Arduino-IDEで正常に認識されるようなボードなら自動で設定されるようです。 従ってメモっておく必要もなさそうですが、図のような設定で うまく動いてくれました。 但しCOMポートの番号は開発に使うパソコンによって個々に変化するでしょう。

 ブートローダが書き込めた「貧乏Arduino uno」を何回かノートPCのUSBに付け外しして確認してみました。 何度やってみても正常に認識されるようですから問題なく使えそうです。 これで当面の目標である教材用のArduino unoと同等のものが手に入ったことになります。


                   ☆

コラム:Arduino nanoで十分では?
 手間をかけてArduino unoと互換の「びんぼうでいいの」を作ったのですが特にその必要はなかったのかも知れません。 Arduino nanoの互換基板があったわけですからそれを活かせば十分そうです。そもそも多少のハードの違いはカバーして動かせるのがArduinoの良さでしょう。nanoもunoもポートの引出しは概ね同じですから使う上の制限はほとんどないでしょう。オンボードのLEDは同じところに付いていますし、配線を引き出す際には同じ名称のポートを使えばOKです。
 プログラムの学習や試作にはブレッドボードを使います。そのときには小さなサイズのArduinoが便利ですからたぶんnanoの方を多用するはずです。 いまでは中華通販のnano互換基板(←参考リンク)はATmega328Pチップ単品を秋葉原で買うよりお手軽なほどです。そのまま組み込みに使っても不経済ではありません。オンボードのUSB-IFが必要なければPro-miniならさらに小型です。こちらも安く出ていました。 もちろん、何かの都合でArduino unoと互換の基板が欲しくなったら書いてきた手順で作れるわけです。


L-チカ成功
 L-チカ のソースファイル(=スケッチ)をいじって、チカチカの周期を変えたりして遊んでみました。

 L-チカはマイコン遊びの第一歩です。 だれでもここまではやるようですがその先まで進むにはハードルは結構高いものでした。 しかし、Arduinoの場合、ハードウエアがある程度標準化されており、外付けする回路もだいたい定型化しているようです。 従ってそれを動かすプログラム(スケッチと言う)もネットに落ちている物が見つかればほとんど手直しせずに使えるでしょう。 あまりマイコンには詳しくなくても面白いものが簡単に作れる可能性があります。互換ボードがたいへん安価に手に入るのも有難いです。 まずはL-チカが第一歩ですが、何かマネをしてでも歩みを始めたいですね。

このBlogを作成するにあたり様々なサイトやBlogを参考にさせて頂きました。個々にリンクは致しませんが初心者向けの情報発信に感謝します。

                   ☆

 年末の予定とはぜんぜん違う方向へ行ってしまいました。 ダイオードDBMとかAD603などのアナログな話題を期待されていたようでしたら申しわけないです。 例によってマイコンやデジタルがテーマの時は敬遠ぎみかと思いますけれど・・・たぶんコメントも少々でしょう。無理に好きになっていただく必要もありませんので。(笑)

 最近は思いついたり急に思い立ったようなテーマで何かランダムに始めるケースが多くなっています。アナログな話題も好きですからまたやりますので。 まあ遊びですからその時々で自分がオモシロイのが一番かと思ってます。

 ノートPCとArduino、それに小さなブレッドボードと幾つかの電子部品があれば炬燵でチマチマ遊びを始められます。寒い冬の電子工作にはうってつけかも知れませんね。

 少々周回遅れではありますがArduinoは最近話題のIoTとのからみでまた注目されてきたと言う話しも聞きました。AVRマイコンだけでなく、より高性能なARMマイコンを搭載したボードも激安で登場しています。 汎用の制御用マイコンと考えて工夫して作りたい人には便利でありがたい存在として定着したようです。 ソフトウエア資産がだいぶ溜まってきたArduinoはちょうど美味しい「旬」なのかも知れませんね。

  それでアマチュア無線の視点で調べてみました。Arduinoを使ったいろいろなプロジェクトが世界中から検索ヒットします。 機能を定型化しやすいエレキーのようなものは完成度も高いようです。 ですが、いろいろ内容を見ると習作のたぐいが多いようでいま一つな感じでした。 それらを土台に自ら改造して行けば良いのでしょうが、こんどはプログラミングの知識を要求されます。意外にハードルは高いかもしれません。 Arduinoをいじることが目的ではありません。何かに活かすことです。 すこし遊んでみてこの先どのように使って行くのか構想してみたいと思います。 初心者に何かサジェスチョンなど頂けたらありがたいです。 ではまた。 de JA9TTT/1

(おわり)

14 件のコメント:

T.Takahashi JE6LVE/JP3AEL さんのコメント...

加藤さん、おはようございます。

arduino、まだ自作品に組み込んで使ったことはないのですが、
ライブラリーも豊富なので初めてのパーツの確認などに重宝しています。

単体で使うのでしたらnanoで十分なのですが、UNOですとネットワークやWifiなどのシールドがそのまま使えるのが大きなメリットですね。
Aliexpressなどだとシールドも安価に入手出来ますし。

nanoとUnoもAliexpressから互換品を購入して使ってますがもともとオープンハードなので問題無く動作しています。

TTT/hiro さんのコメント...

JE6LVE/JP3AEL 高橋さん、おはようございます。 今朝は少し寒さがゆるんだ感じですね。

早速のコメントどうも有り難うございます。
> 初めてのパーツの確認などに重宝しています。
なるほど、そう言う使い方もあるのですね。 パーツと言っても、機能モジュールののようなものでしょうね。 私も活用してみたいと思っています。 まずは、LCD表示器を繋ぐのが手始めかと・・・。 そう言えばI2C変換基板も頂いていたような・・。

> Aliexpressなどだとシールドも安価に入手出来ますし。
そう言う部分まで互換品ビジネスが進んでいるんですね。 早速探してみたいと思います。少量ならaitendoや秋月でも良いかもしれません。

> オープンハードなので問題無く動作しています。
頂き物や手持ちのAVRを活用しないと勿体ないので今回は何とか使えるようにしましたが、組込みに消費して足りなくなってきたらAliexpressから調達しましょう。 しかし、何でも中華頼みになってしまいますね。(笑)

始めたばかりでまだまだわからないことが多いです。困ったら教えて下さいね。hi

JA9MCH_tanutanu さんのコメント...

加藤先輩 殿

大野市は、えらい大雪でちょうどお袋の慰問に帰ったのですが、名古屋から高速道路途中降雪でノロノロ状態で
通常の倍くらいの時間を要しました。あとは、ひたすら雪かきでひどい目にあいました。

Arduinoの話題ですね。私も2年ほど前に「びんぼうで良いの」のネーミングとお値段に惹かれて、購入しました。
最初の1台は、 中華クオリティで、基板にハード上の問題があるようで、さっぱり動作しません。ブートローダーの
書き方が悪いのか?それともATmegaか散々なやみ、お代わりを購入(基板の色が赤ではなくなってました。)し、
さっくり書き込みができました。中華製は手強いですね。それでとりあえず、LEDチカチカに取り組み、二つ付けて
交互にチカチカとか。そのあとどうするかに、繋がらず。あい天丼で買った、2.8インチ液晶にカラー写真を表示する
とこまでで、見事にスタック。そのあと、ステレオアンプのレストアとか、トリオの5球スーパーの修理とか横道に
それ、トランスレススーパーの修理で漏電遮断器を動作させ、停電は都合が悪いので、絶縁トランスを入れようとし
て、ケースと、どうせなら、ホール素子で電圧電流を測定などと横道にそれまくり戻ることができなくなりました。
またいじってみるかな。

学生時代に、こんなものがあれば、良かったなぁ。と感じました。でもあれば、指導教官からこれで、あれを組め
とかこれを組めとか指示があり、苦労したかも。中村先生から、マイコンで割り算をせよというご命令も、簡単に
こなせたのにと思います。その時は、割り算は非常ーに困難だったので、引き算を引けなくなるまで繰り返し、
その回数を数えるというのを、6502だったかでやった記憶があります。先生もアナログの方だったので、荒技でも
卒業はできましたけど。ソフトがダメだった時のバックアップで、TTLのレジスタとカウンターで組んだ割算回路
のハードが、一番計算が早くコストも良かったのも、40年近い昔の思い出です。もっと安いのは、オペアンプでの
電圧の割算というのもありましたが、さすがに電圧を読んで、換算表は、さすがに怠け者の私でも、作っては見ま
したが、単位は困難と思いボツにしました。

今は、ネットがあり、親切な方が色々なアドバイス、スケッチまでいただけるので、本当に良い時代だと思います。
初心者脱出狙って再度挑戦しようかな。と刺激されてしまいました。

変な場所に改行を入れたら、帰って見にくくなりボツにしました。申し訳ありません。

和田

TTT/hiro さんのコメント...

JA9MCH 和田さん、おはようございます。 ことしの北陸は大雪で大変なことになっていますね。特に大野はすごい積雪量です・・・・。 帰省大変でしたね。お疲れさまでした。

いつもコメント有り難うございます。
> ハード上の問題があるようで、さっぱり動作しません。
aitendoでは最初からパターンにエラーがある失敗作のような基板が売っていたりしますので、何でもアリな感じです。(笑) Aliexpressも同じらしく、友人(JA6IRKさん)がGPS受信基板を買ったら全部いもハンダだったそうです。

> 2.8インチ液晶にカラー写真を表示するとこまでで・・・
早くそのくらいできるようになりたいものです。(笑)

> 横道にそれまくり戻ることができなくなりました。
そのあたりが、趣味の電気工作の面白さですから簡単に戻らなくても宜しいのではないかと思いますよ。その分、いろいろ楽しめた訳ですから。hihi

> 学生時代に、こんなものがあれば・・・
昨今は理工系ばなれだそうですが、いまは面白いものがいっぱいありますから理工系はとっても楽しめると思うんですけれど・・・。

> 荒技でも卒業はできましたけど。
時間はかかりますけど、一番わかり易い方法だと思いますから。卒業させてもらえて良かったですね。(爆)

> 割算回路のハードが、一番計算が早くコストも良かった・・・
当時はマイコン回路の方がお金が掛かりましたし、クロックもせいぜい数MHzではTTLとかのハードで計算する方が早かったでしょうね。 まあ、ハードは他への融通が利きませんから・・・ね。

> オペアンプでの電圧の割算というのもありましたが・・・
これって、「アナコン」ですね。 私のころは選択のようですがまだ授業があったように思います。アナログ回路なのでクロックは関係ないのでスピードは速いんですが精度はせいぜい3桁くらいだろうと思います。スケーリングすればデジタル電圧計で数値の直読も可能ですけどかなり不安定だったでしょうね。(笑)

> 初心者脱出狙って再度挑戦しようかな。
和田さんは初心者でもなさそうですが、ご一緒にもう一度始めてみませんか?

改行の件、了解です。 このコメント欄は端で折り返しますからあまり改行を入れない方が良いみたいですね。hi hi

JG6DFK さんのコメント...

こんばんは。ここ数日は気温が高そうですね。室温はそれほどでもありませんが。
来訪者数カウンターが「ヤクザさんさんさん(0893333)」ですって(爆)。

それはそうと、新年会をお楽しみになられたようで何よりです。

Arduinoは未経験ですが、今年に入って私のところには「PIC32MZ」評価用ボード(部品未実装)が送られてきました。「PIC32あたりを持ち出さないと、目的のハードウェアがもう作れなくなりそうだ」というような話を私が切り出したからだろうと思います。

このご時世、チップメーカーはもはや汎用プロセッサとDSPの区別をしていないように見えます。実際、「PIC32MZ」クラスになると、デジタル信号処理をさせるのにも十分な性能を持っているようです。

少しずつ環境を整え始めていますが、32ビット系の開発は8ビット系の開発とはかなり勝手が違ってきそうです。

この先、もう「マイコンは嫌い」だなんて言っていられなくなるかもしれませんよ。「デジタル信号処理」が避けて通れなくなるかもしれませんから。村田製作所がラジオ・通信機器用セラフィルの大半を生産終了するようです。現行のラジオや通信機器にはほとんど使われていませんからね。

それでも、アマチュアがアナログ回路で遊ぶ分にはまだどうにかなる(代替案はある)でしょうが、「チップ部品もイヤだ」とまで言ってしまったら、いよいよ選択肢がなくなってしまうかもしれませんね。

Arduinoの話が全然できなくてすみません m(--;)m

JA6IRK@岩永 さんのコメント...

JA9TTT/1 加藤さん、こんばんは。

コメントもない品物だけの不躾な送り方をして孟子和得ありませんでした。
久しぶりにお会いして、結構ご質問がありましたので、説明するよりは必要なところを目次で探してみるほうが確実かな?!と、お送りしました。
当局も、最初はサイト検索だけで進めていたのですが、知りたいことを探すのが面倒になり、またすぐ忘れてしまうので、知りたいことが比較的よくまとまっていそうな本を買って使っていました。お役に立てればと思っております。

しかし、いきなりブートローダーの書き込みとは、ハードルの高いスタートでしたね!
素晴らしいです。

今回の加藤さんのBLOGで思い出したのは、素のATMega328に書き込みをするときには、ヒューズビットを変更して前置分周器を1/1にしなければいけなかったことです。
外部クロックの選択も必要ですね1

忘れてしまったのですが、ArduinoIDEのツール -> ブートローダを書き込む でヒューズビットも含めて書き込んでくれていたかもしれません。

写真を見て思い出したのですが、「あちゃんでいいの」もお送りしていましたね!
これは、Arduino Prominiと同じだと思えば使えます。つまり、USBシリアルI/F外付け版です。

UNOは、高橋さんがコメントされているように、シールドといわれるピギーバッグ方式の色々な基板が販売されており、ハードを作らなくても色々遊べるようです。
シールドの一つとして確か430MHz?のTRX基板もあったと思います(笑)

ArduinoISPライタは1個作っとくと便利ですね! 当局も、ArduinoNanoで作っています。
これを使えば、ブートローダを書き込んでいないATMega328にArduinoIDEで作ったスケッチをISP接続で書き込むことができます。
当局の自作品でAVRを使ったものは、すべてシングルラインのISP端子を出していますので、BASCOMで書いていたプログラムをArduinoスケッチに置き換えることもできます。
但し、使っているクロックが16MHzでないとスピードが変わってしまいますけどね(笑)

Arduinoはソフトもハードもすべてオープンソースなので、色々なベンダーさんが互換品を製造して販売しています。
オリジナルよりこちらが圧倒的に安いですから、当局はこちらばかりです(爆)

ArduinoIDEの方も、ATMega328だけでなく、ATTiny45とか、AtTiny2313とATMega644とかいろいろなデバイスに対応するライブラリーも多く出ています。
AVRのみでなく、WiFiモジュールのESP32と、最近ではSTM32C8T6(ARM M3)に対応したライブラリーも出ています。このボードはメモリーも64KBとか128KBでRAMも20KBも載っており、スピードは72MHzで何倍も速いですし、Nanoよりちょっと大きいサイズで価格も200円しません。(勿論中華価格ですが)抜群のコストパフォーマンスです。
まだ、I2CでOLED表示くらいしかやっていませんが。

Nanoだとブレッドボードにさして遊べますので、炬燵の上でボチボチ遊ばれてください。

TTT/hiro さんのコメント...

JG6DFK/1 児玉さん、こんばんは。 こちら、久しぶりの雨です。今夜は比較的暖かいです。

いつもコメント有り難うございます。
> 来訪者数カウンターが「ヤクザさんさんさん(0893333)・・・・
それもあっという間に通り過ぎたようで、先ほど見たら下二桁が52になっていました。いつもご覧頂き有り難うございます。

> 目的のハードウェアがもう作れなくなりそうだ・・・
要求仕様が厳しいのでしょうね。 データ量が多く処理も高速が求められ、しかも開発期間が限られたら高速大容量のチップを使い高級言語で開発しないと追いつかないんでしょう。

> 汎用プロセッサとDSPの区別をしていないように見えます。
汎用プロセッサの能力がアップしたので、DSP処理も普通にできるようになったからではないでしょうか。 あるいはDSPチップが汎用化したと言えるのかも。

> マイコンは嫌い」だなんて言っていられなくなる・・・
もう既にそうなっているでしょう。 昔ながらのデバイスを使って何でもハードだけで実現していたのでは苦労多くして・・・の類いです。 自作で製作可能な範囲も非常に狭くなってしまい進歩もほとんど期待できません。 まあ、趣味の手遊びでしたらそれで良いのかもしれませんが、自分がそうなったら悲しいと思います。(笑)

> ラジオ・通信機器用セラフィルの大半を生産終了する・・・
既にニーズは激減でしょうから当然でしょう。 DSP処理のワンチップラジオが簡単で安価に作れるので昔のようなラジオの作り方は消滅でしょう。 これも時代ですかね。

> いよいよ選択肢がなくなってしまうかもしれませんね。
チップ部品でしか供給されない新製品も多くなってきました。 オーディオの連中はチップ品しかない高性能DACとかOP-Ampなんかも取込んでいますので、ある意味でHAMの自作よりも進歩的かもしれません。 まあ、あちらの世界でも球アンプも残っていますけど。(笑)

> Arduinoの話が全然できなくてすみません m(--;)m
いいえ結構ですよ。(笑) Arduinoの開発環境があると何かの予備的な試作などに役立つかもしれません。 やってみられたら役立つかも知れないですね。

TTT/hiro さんのコメント...

JN3XBY/1 岩永さん、こんばんは。 雨音が静かになってきました。そろそろ上がるのかも。

いつもコメント有り難うございます。
> 必要なところを目次で探してみるほうが確実かな?!
おっしゃる通りだと思います。 よく解っていない者が想像で質問するよりも体系的に書いてある書籍をまずは端から読んだ方がオチが少ないと思います。 ボチボチですが、読みながら進めていますよ。遅々として進んでいない感じもしますが。(笑)

> 比較的よくまとまっていそうな本を買って使っていました。
秋月でも扱っているようですから、かなり利用されている参考書のようですね。まだ読み始めたばかりですが、わかり易いと思います。

> つまり、USBシリアルI/F外付け版です。
あちゃんでいいのはクロックしか載っていませんので、裸のチップを使うのあまり違わない気もします。使い方次第でしょうか。(笑)

> シールドの一つとして確か430MHz?のTRX基板も・・・
それはすごいですね。 実用性があるなら素晴らしいと思います。 いろいろなシールドが既製品で手に入りますから土台になるunoも一つあると便利そうですね。貧乏でもいいでしょう。ww

> 当局はこちらばかりです(爆)
互換品は少々危なっかしい物もあるようですが、手軽に遊ぶには安価なのが一番です。私も互換品派ですよ。(爆)

> ArduinoISPライタは1個作っとくと便利ですね!
了解です。 頂いた互換nanoが幾つかありましたので、作っておこうと思います。

> 16MHzでないとスピードが変わってしまい・・・
BASCOMで開発する方も16MHzのクロックにしておけば問題はない訳ですね。 あるいはクロック係数を入れておいてプログラムを書いておくとか。hi hi

> Nanoよりちょっと大きいサイズで価格も200円しません・・・
どれもこれも本当にビックリなお値段ですね。 しばらくは中華系Arduino互換基板で遊べそうです。 FBなものをご紹介いただきどうも有り難うございます。

> 炬燵の上でボチボチ遊ばれてください。
簡単な製作でしたら電源もUSB経由で済ませられますから炬燵で遊ぶには最適です。

JK1LSE/本田 さんのコメント...

おはようございます。今日は晴れですね。雨の後で気持ちがいいです。

いよいよ始めましたね。Lチカまで行けば、あとはドンドン進むでしょう。Arduinoの良いところは、ハードウェアも隠蔽されていて、特にCPU内部のレジスタとかを意識する必要がないことです。もちろん、内部を知っていた方が、より細かい使い方や不具合対応には役に立ちますが。
互換ボードでARMコアを使った物が安価に手に入り、IDEの選択で比較的簡単に、強力なCPUが動かせるようになります。夢が広がりますね。カラー液晶が使えたり、自分だけではどうしようもないことができます。あんまり、ブラックボックス化してしまうとパソコンと同じになってしまいますが、制御用として色々できるのは、やはり嬉しいです。

と、言っていますが自分自身も遠ざかっているので何かを始めないと、忘れそうです。いかん、いかん。

TTT/hiro さんのコメント...

JK1LSE 本田さん、おはようございます。 今朝は8℃あったので暖かでした。 こちらも晴天ですが少し風が出てきましたね。

いつもコメント有り難うございます。
> Lチカまで行けば、あとはドンドン進むでしょう。
取りあえず、教科書どおりに進めてみたいと思います。 C言語は使った経験がほとんど無いので良く理解できるよう繰り返してみましょう。 なので進みはかなり遅いですよ。w

> レジスタとかを意識する必要がないことです。
まだ良くは見ていませんが、定型的な周辺回路を繋ぐための関数がたくさん用意されているようですからいちいち全部を書かなくても済むようですね。それは非常にありがたいです。 もちろん中身がブラックボックスと言う弊害もあるんでしょうけれど・・・。

> 強力なCPUが動かせるようになります。
高性能なチップを使う前提なら高度なDSP処理なども可能になるかもしれません。 AVRでは難しいと思うので強力なCPUの将来性に期待したいです。

> 制御用として色々できるのは、やはり嬉しいです
スタンドアローンで動くし、ポートの制御もごく簡単にできるみたいですから小規模なロジックの代替にもなりますね。 取りあえず痒いところにも手が届くようで面白いと思います。条件判断で機能を切り替えるなど流石にマイコンらしさが感じられます。

> 忘れそうです。いかん、いかん。
マイコンって使っていないとすぐに忘れてしまいますが、一度やってあれば思い出すのも早いです。本田さんでしたらまったく問題ナシでしょう。

私も読んだ部分を忘れてしまわないうちの手を進めなくては。(爆)

Kenji Rikitake さんのコメント...

Arduino UNOは物理乱数生成ハードなどでいろいろと遊びました。無線への応用ではないのですが、表面実装の抵抗やコンデンサを使ってみたり、いい勉強になっています。GitHubのjj1bdx/avrhwrngというレポジトリに概要は公開しています。 Arduino IDEは使っていません。ガリガリのCのコードになっています。その方がいろいろ楽なので…。さすがにアセンブリ言語の直書きは最近はしていません。一応生成されたコードはざっと読みますが、これだったら自分で書くより良いだろうというものばかりなので(笑)。AVR関連のコンパイラやライブラリはとても優秀です。

かなり昔に買った8bit AVR関連の開発ツールは今でも使えています。その節は加藤さんにもお世話になったような気がします。これらのツールはもちろんArduino UNOやNano相手でも役立ちますが、私の場合は面倒なのでコンパイルしたコードはAVR DragonやAVRISP IIで直書きすることが多いですね。どちらももうMicrochip社のAtmelだった部門でも扱ってないみたいですけど。もっとも、もっとアマチュア的にやるなら、Arduino UNOそのものをISPライターにしてしまうというのがあるみたいです。

今はもうArduinoやRaspberry Piは、エンジニアではなくアーティストの人達が使うツールになりつつあるので、徹底したモジュール化が進んでいるように思います。ただ、だからといって、自作できる人達の楽しみが減るわけではないですし、8bit AVRに限っていえば、結構楽しそうなライブラリも揃っているので、組み込みの勉強にも良いと思います。

本年もよろしくお願いします。
Kenji Rikitake, JJ1BDX(/3)

TTT/hiro さんのコメント...

JJ1BDX/3 力武さん、こんばんは。 ご無沙汰しておりました。こちらこそ本年も宜しくお願いします。

いつもコメント有り難うございます。
> 無線への応用ではないのですが、表面実装の・・・・
ハード、ソフトともにいじってみたようですね。Arduinoはハードも開発環境も簡潔に旨くできていると思います。

> その方がいろいろ楽なので…。
もともとCの扱いに慣れているからでしょうね。 IDEの良さは逆に中身がブラックボックスになることでもあるので歯がゆく感じるお方もあるんでしょう。(笑)

> AVR関連のコンパイラやライブラリはとても優秀です。
そうなのですか。 それは頼もしいと思います。ライブラリがへぼだと苦労しますから。hi

> Arduino UNOそのものをISPライターにしてしまう・・・・
Arduinoの世界ではそう言う方法が定番のようですね。 まあ、汎用ライタもチップはAVRマイコンだったりしますので同じと言えばそれまでですが。(笑)

> アーティストの人達が使うツールになりつつある・・・
容易なプログラミング環境と、定型化したハードで電子系のお方でなくても十分楽しむことができるからでしょう。確かにアート系の話題でもArduinoを見掛けるようになっていますね。

> 組み込みの勉強にも良いと思います。
HAMの場合は無線機や周辺機器の組み込になりますが、十分活用できる能力があると思います。あとは利用者のアイデアとかプログラミングに掛かっていますね。 私も何かにうまく活用できればと思っています。

JH1URH 杉谷 さんのコメント...

JH1URH 杉谷です
初めまして。ARDUINOの記事、楽しく読ませていただきました。
ブートローダー、AVRへどう書くのかなど、良く分からなかったことが
いくつも解決しました。感謝。

私は、CWデコーダーを作成してみようと思って
少し前にCQ出版のIoT Expressボードを手に入れました。

まずは、Lチカを試そうとしたのですが、思いの外苦戦しました。
スケッチ書き込みエラーになるのです。
 1)ブートローダーは書き込まれているのか?
 2)USBシリアルポートのドライバーは大丈夫か?
 3)…

このボードには、ESP32が使われていますが、
ARDUINOのスケッチも走るとあります。

怪しそうなところを思いついても、
ARDUINO初心者には敷居が高く、
思いの外時間を取られてしまいました。

その後、ARDUINO IDEでは、使用するボードを選択する必要があると知って
何とか解決しました。

今度は、ブートローダーの書き込みにも挑戦してみようと思います。

TTT/hiro さんのコメント...

JH1URH 杉谷さん、こんにちは。北関東はすっかり晴れて昨日の雪も溶けています。

初めてのコメントどうも有り難うございます。
> 良く分からなかったことがいくつも解決しました。
それは良かったです。 入門編ですので大した中身はありませんが、
何か多少なりともヒントになったようでしたら幸いです。

> CWデコーダーを作成してみようと思って・・・
デコードしてLCDに表示するような装置をお考えなのでしょうか。
Arduinoでできたら面白そうですね。

> 使用するボードを選択する必要があると知って・・・・
IDEの設定と実際のボードが合っていないとエラーが発生しますね。
私もArduino nanoとunoを切り替えながらテストしていたときに
ホードの設定が合っていなくてエラーが出ました。問題解決で何よりです。

> ブートローダーの書き込みにも挑戦してみようと思います。
HEXファイルが書き込めるPC側のアプリと、インサーキット型のライタを
お持ちならごく簡単に書込みできると思います。是非試してみて下さい。

CWデコーダが旨く行くと良いですね。ご健闘を祈ります。