2016年8月27日土曜日

Arduino [どこでもいーの] [Docodemoino]

 Arduinoはなかなか優れものである。専用書き込み器等不要であり、USB電源で駆動できる。IDEがインストールされたPCがあれば場所を選ばない。まさに「どこでもいーの」である。
 そこで持ち運びが便利なようにケースに組み込んでみた。ケースは秋月で販売しているABS樹脂(蝶番式・中)112-TSというものを使用した。これにちょうど入るユニバーサル基板に
・Arduino nano
・スイッチ 4個
・LED 4個
・1.8inch TFT LCD
あとはボリューム(10KΩ)とジャンパ線を入れることができる。


これだけあればそこそこスケッチが作れると思う。必要に応じでエンコーダーや各種センサーを入れればさらに色々できそうだ。
くれぐれも仕事先でやらないように (笑)




[Docodemoino] is Japanease. Its meaning is at everywhere ok.
Arduino is compact, so when there is a PC, everywhere can play.
Don't do during work. Hi !!



2016年8月22日月曜日

Arduino DDS VFO Controller Bug FIX(2)

 今回はスケッチのBugではなくTFT-LCDに関してである。
新たに2.2inchTFT-LCDを入手したので動作試験をしたところ写真のような表示となった。
上段周波数表示の白枠右端が表示されないのだ。同じスケッチを使っているので、ソフトウェアの問題ではない。ハードウェアの問題である。詳細のTESTはしていないが、個体差があるということだ。困ったものである。


周波数表示白枠の右端が切れている。













周波数表示白枠の右端は表示されている。














 取り敢えずスケッチを修正し、Download SiteにUPした。
 

2016年8月11日木曜日

Arduino DDS Controller Bug Fix

 Arduino DDS controllerにバグが見つかった。これは、1.4,1.8,2.2総てのTFTタイプのものに共通である。
内容は、送信時の周波数シフトがうまく制御されないと言うものである。
 今回試作試験をしてくださったSさんからの情報である。感謝。
一応総ての動作確認を行い、問題ないと思われるので、FIX版としてDownloadサイトに掲載した。
 掲載にあたり、過去バージョン等混乱しそうなことと、ファイル名が今一分かりにくいこと、更にこれを基に改良をされている方もあることから、今回のBugFix版をマスターとしてファイル名を変更しUPした。基本型として以下の3種である。


 The bug was found in Arduino DDS controller. This is common to something of 1.4,1.8,2.2 all TFT type.
The contents say that the frequency shift when trancemit_mode, isn't controlled well.
 Information from Mr. H who did an experimental production test this time. Thanks Mr.S.
I checked the operation of everything just in case, and it seemed no problem, so it was carried in a Download site as FIX edition.
File name is changed as a [master]. It's the following 3 kinds type.

 
1.44inch TFT Type (NKDVFO14.master.ino)

1.8inch TFT Type (NKDVFO18master.ino)

2.2inch TFT Type (NKDVFO22master.ino)


 

2016年8月9日火曜日

Arduino DDS Controller with TFT LCD

 Peterさん(GW4ZUA)から嬉しいメールを頂いた。2.2inchTFT DDS VFOを作られたのだ。自分の作ったVFOコントローラーを実際に作ってくれているHAMがいるというのは、本当に嬉しい。
 しかも非常に丁寧な作りである。実際に機器に組み込んで使用するのは、私よりも早いかもしれない。頑張らねば。
 ルーマニアの Nic(yo6qcm)さんに続きイギリスからもこのような報告があるということは、自作が更に楽しくなる。今後も世界の友達と楽しく自作を続けて行きたいものだ。
Peterさん有難う。

  I received a wonderful mail from Mr. Peter (GW4ZUA). He made 2.2inchTFT DDS VFO.
 He may make a transceiver using this VFO earlier than me.
 I'll exert myself, too.
 I'm really happy to have got a report from Mr.Peter(GW4ZUA) following Mr.Nick(YO6QCM).
 I'd like also to continue the making happily with a friend of the world wide.
 Thank you very much for Mr. Peter.






2016年8月6日土曜日

Arduino LCD Interface

 Arduinoに使用されているLCDは、かなりの種類がある。これらのLCDは、携帯電話等に使用されたもののようであるが、その仕様についてはあまり詳しい情報がない。
 いままでのVFO製作に使用したLCDは、ILIと言う記号のついたドライバーICを採用したものだ。これを使った製作例が多くあることと、ライブラリーが容易に入手できたから使っている。そこで、これらLCDについての備忘録として端子記号とインターフェースについて記録しておく。

 使用してきたLCDの外観を示す。同様なイメージでもバージョンが違う等幾つか存在する。総てを使用したわけではないので、どれも同じとは言えない。販売者が掲示している情報を注視して選択するしかない。


 これらLCDとarduinoを接続し、スケッチにライブラリーを設定し使用することになるわけであるが、これがまた、LCD,ライブラリー、arduinoとそれぞれ記号が違う。誤配線やスケッチで毎回混乱する。そこで早見表を作ってみた。この接続は、ハードウェアSPIという通信方式で、arduinoに標準的に組み込まれているライブラリーで使用する方式だ。これ以外にもソフトSPIといって汎用DI/Oを使用しても可能であるが、SPIの方がスピードが圧倒的に早い。その代わりDI/Oが固定されている。ILI系以外にも使用例の多いST系LCDも参考に入れてある。
 見方としては一例として、
ILI系のLCDでSCK端子は、UCGライブラリーを使用してarduinoに接続する場合は、SCK端子をインターフェース(後で説明)を経由してD13に接続する。スケッチではSCLKとして設定する(されている)。
 

インターフェースについて
 LCDは3.3V動作である。Arduino UNO,NANOは5V動作である。従って直接接続することは出来ない。Arduinoから0-5Vのデジタル信号が出てくるので、これを0-3.3Vのデジタル信号に変換してLCDに接続するわけである。
 そのインターフェースには幾つか方法がある。その一つがCD4050やCD4010といったコンバーター用のICである。これらは、TTLとCMOSICを接続するためのバッファ用ICである。その使い方は以下の回路図を参照にしてほしい。注意点は片方向通信となるので、ArduinoからLCDへの一方通行である。表示するだけであればこれで問題ない。将来SDカードやタッチパネルが付いた物を使用する場合は、逆方向も必要となるので注意。
 次にVFOでも仕様しているが、FXMA108という8bit双方向ロジックレベル変換ICである。これは、8bitの双方向が可能で入出力も左右対称になっているので、結線や、P板パタンが簡単となる優れものである。幸いDIP基板化したものが秋月で販売されている。
          http://akizukidenshi.com/catalog/g/gM-04522/
 これを使用しておけばひょっとして逆方向に使うときも気にすることが無くなる。
 最後に抵抗分割で接続する方法で、arduinoの端子から3.3KΩを直列に接続し、LCDに接続する。その端子から6.8Kオームでアース(GND)に接続する。これで5Vから3.3Vくらいに分圧されて接続できるはずである。実際の使用例も幾つか見られる。試しに実際にやってみたが動作した。まあ、緊急避難方法と考えたほうが良いと思う。
 お勧めはFZMA108である。

LCD電源について
 LCDの内部は3.3V動作である。上記LCDは5V供給、3.3V供給どちらにも対応できるようになっている。標準は5V供給であるが、基板上のJ1をジャンパすれば、3.3V供給が可能である。
LCDのバックライトとLCD本体の電源をどうするかであるが、本体の消費電流は20mA以下のようなので、私は、arduinoから3.3Vを供給し、バックライトLEDは別電源としている。

LEDバックライトについて
 LCDバックライトにはLEDが使用されている。電圧は3.3Vである。実際に測定してみると
 1.44inch-30mA 1.8inch-40mA 2.2inch-70mAであった。
使用例を幾つか見ると3.3Vをarduinoから供給している場合が多い。そこでaruduinoの仕様を調べてみたが、どうも50mAくらいらしい。本家では明確な記述が見つからなかった。
LCD本体の電源等を考えた場合LEDの電源は別に用意したほうが良さそうである。少なくとも2.2inchはオーバーする。そこで別に用意した5Vから抵抗を介して接続するようにしている。抵抗値は回路図に記しておいた。(但し私の持っているものの測定)


以上 自分自身の備忘録としてのUPです。お気づきの点があればコメントをお願いします。

2016年8月3日水曜日

Arduino about library

 Arduinoを始めて3ヶ月になったが、色々なトラブルに遭遇した。特にライブラリーについてのトラブルが目立つ。そこで経験したライブラリーに関してまとめておくこととした。
尚、以下のことはArduinoIDE1.6.5においての内容である。

【ライブラリーのインストール】
 以前のバージョンでは手動のようであったが、現バージョンでは、IDEの中でインストールが出来るようになっている。標準の手順は以下の通り。
  1.  必要なライブラリーZIPをダウンロードし、適当なフォルダーに保存
  2. メニューバーの「スケッチ」をクリック
  3. 「Include Library」をクリック
  4. 「Add ZIP Libraly」をクリック
  5.  表示されたダイアログで、保存したフォルダーに移動し、該当のライブラリーZIPを選択
  6.  ArduinoIDEを一旦終了し、立ち上げなおす。
 以上でライブラリーリストに表示されます。
 然しながらこれで旨くいかない場合がある。登録時にエラーが出るときもあれば、インストールされ、リストに出るが、コンパイル時にエラーとなることがある。
 又、Windowsのバージョンによっても挙動が違う。
 どうもライブラリーの作り方、特にZIPの作り方で問題があるような気がする。
 そこで私は、以下の手順としている。
  1. 必要なライブラリーZIPをダウンロードし、適当なフォルダーに保存
  2. ZIPファイルを解凍する。
  3. 解凍されたライブラリーフォルダーをドキュメント→arduinoフォルダー→Library内に移動
  4. ArduinoIDEを立上ライブラリーがリストにあることを確認する。
 Arduinoのライブラリーは、ドキュメントのarduinoフォルダー内のLibraryフォルダーに入れるのであるが、arduinoIDEのフォルダー内にもLibraryフォルダーがある。ここにおいても同様に使用できる。ここにはarduino標準のライブラリーがあるので、ユーザーが登録するライブラリーはドキュメントのほうに入れるほうが、将来IDEのバージョンアップの再にも楽である。

【ライブラリーについて】
 ライブラリーには色々なものがある。どれを選択するかが難しい。使用例などを見て選択するといいと思う。同じライブラリーでも、arduino用とそうでないものがある。注意を要する。
 スケッチを作る場合、これら使用ライブラリーの入手先を明示することが親切である。私もスケッチ内に記述するよう心がけることとした。
 また、該当ライブラリーでコンパイル時にエラーとなることがある。
 以下にいままで使用したライブラリーでの注意点をまとめておく。
  • ロータリーエンコーダ用ライブラリー
     「rotary.h」と「Rotary.h」と2種類ある。内容は同じであるが「r」と「R」の違いである。使用するときに大文字小文字を間違えないようにする。Arduinoは大文字小文字を明確に判定する。
  • DDS AD9851用ライブラリー「EF_9851.h」と「AD9851.h」と2種類ある。命令の書き方も違うのでサンプルファイルで確認のこと。 いままでのVFOでは「EF_AD9851.h」を使用してきた。このライブラリーにも注意事項がある。そのままでは、コンパイル時にエラーが出る。以下の対応が必要である。ライブラリー内のEF_AD9850.hをテキストエディター等で開き以下のように修正する。
    27行目 #include "WProgra.h" →#include "Arduino.h"
  • TFT LCD用ライブラリー(ILI9163C)
     「TFT_ILIILI9163C.h」という1.44inchTFT LCD用ライブラリーであるが、1.44inch (128x128)LCDにおいて、そのまま使用すると画面が32dotずれて表示される。これは、(128x160)のTFT LCDと(128x128)との違いと思われる詳しくは分からない。対応としては以下のように変更を行う。

    TFT-ILI9163CLibrary内の「-settings」フォルダー内の「TFT_ILI9163C_settings.h」ファイルをワードパット等TEXTエディタで開き下記赤字32を0にする。

    #define _TFTWIDTH 128//the REAL W resolution of the TFT
    #define _TFTHEIGHT 128//the REAL H resolution of the TFT
    #define _GRAMWIDTH 128
    #define _GRAMHEIGH 160//160
    #define _GRAMSIZE _GRAMWIDTH * _GRAMHEIGH//*see note 1
    #define __COLORSPC 1// 1:GBR - 0:RGB    
    #define __GAMMASET3 //uncomment for another gamma
    #define __OFFSET 0 32//*see note 2   //32を0 にする
  • TFT LCD用ライブラリー(Ucglib.h)
    2.2inchTFT VFOで採用したucglib.hというライブラリーであるが、ILI9163Cと同様1.44inchTFTで使用すると、32dotのずれが発生する為、やはりライブラリーの中のファイルを一部修正する必要がある。修正箇所は以下の通り

    Ucglib_Arduino-master → src → clib → 「ucg_dev_ic_ili9163.c」ファイルをワードパット等TEXTエディターで開き 32を0に変更する。

    134行目
    ucg->arg.pixel.pos.y +=0 32;
    ucg_com_SendCmdSeq(ucg, ucg_ili9163_set_pos_dir0_seq);
    ucg->arg.pixel.pos.y -=0 32;
    以下同様の32とある部分を総て0に変更する(14箇所ある)
    もし分からなければ、変更したものをメールで送ることも可
以上いままでに遭遇したライブラリーでのトラブルである。これらのことをまとめておくフォーラム(海外はフォーラムが沢山ある)が期待される。またご存知の方があればお教えいただきたい。


2016年7月30日土曜日

Arduino DDS Controller with TFT LCD

 今後メインのBlogをこちらに変更いたします。「JA2NKD無線工房(その1)」も当分は存続します。情報は少しずつブラシアップして移行させたいと思います。今後ともよろしくお願いします。

さて、(その1)で掲載したArduino TFT-LCD VFOコントローラーにさらに仲間が増えました。いつもお世話になっているKさんがVFO2の派生でなんと1.44inch対応としてくれた。ありがとう。

1.44inch VFO2 Type
1.8inch VFO2 Type
左が、1.44inchTFTを使用したもの。フォントの関係でMHz台が一桁であるが、フォントを小さくすれば2桁にすることは可能である。
 右が1.8inchTFTを使用したもの。何れもKさんがリサイズしてくれた。感謝

2.2inch VFO2 Type


左がオリジナル2.2inchTFTのもの。








1.44inch VFO1 Type


 左が最初に作った1.44inchTFTを使用したもの。
Kさんがリサイズしてくれたので今後はVFO2 Typeしか使わないと思う。








 これらの制作については「JA2NKD無線工房(その1)」に掲載されているので、そちらを参照してください。尚、Arduino スケッチと回路図については、新たにDownload Siteを作ったのでそちらを見てください。
 Arduinoを使い始めて2か月ほどであるが、何とかできるものである。