JJ1WKN Log

自作や移動運用関連のログです。

Tanukino デジット32x16ドットマトリクスLED 単体版の製作

2013-07-13 | Tanukino
今までは、Tanukino2からケーブルをつないでテストをしていましたが、ソフト開発も一応終わったので単体で動作できるように基板を作りました。

できた基板です。
USB接続用の5ピンコネクタ、電源コネクタ、Digit32x16LEDマトリクス接続用の8ピンコネクタがあります。


基板レイアウトです。チップ部品を使ってコンパクト化しました。


Digit32x16LEDマトリクスとは、コネクタで合体します。


裏側です。


全体です。電源コードが出ているだけです。


表示させてみました。すっきりしてますね。

Tanukino デジット32x16ドットマトリクスLEDで漢字表示!全角半角混在サポート

2013-07-11 | Tanukino
全角半角混在文字列をサポートしました。

半角フォントに合わせるため、全角フォントの並びを変更して、左半分の8バイト、右半分の8バイトの順番にしました。
こうすると全角を左右半分に切った半角が2つ並んでいることになりますので、半角フォントを任意の場所に混在することができます。
==========
/* 8367 ト */ 0x00,0x02,0x02,0x02,0x02,0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x70,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 33 3 */ 0x00,0x00,0x3c,0x62,0x02,0x02,0x1c,0x02,0x01,0x01,0x43,0x3e,0x00,0x00,0x00,0x00,
==========

インデクスファイルは先頭に半角を配置しましたが、全角と半角のバイト数が違うので、サーチプログラムは少し複雑になりました。
半角は7ビットの範囲のみをサポートしました。
==========
s = "Tanukinoとデジット32x16ドットマトリクスLEDで漢字表示!全角半角混在supportしました。"
==========

動画です。
このスケッチで3784バイト。16kのAVRでもまだまだ入ります。

Tanukino デジット32x16ドットマトリクスLEDモジュールで漢字表示

2013-07-10 | 無線機
デジット32x16ドットマトリクスLEDモジュールのテストが終わったので、早速漢字を表示できる電光掲示板にしてみました。

こんなかんじで例が漢字でないのが残念!
漢字の表示例は動画を参照してください。



漢字フォントファイルはコード順に1行1文字で定義してあります。
==========
<前略>
/* eaa1 遙 */ 0x0020,0x607e,0x3184,0x1648,0x0130,0x00c0,0x0700,0xf1fc, 0x1320,0x1020,0x17ff,0x1020,0x1222,0x33fe,0x6800,0xc7ff ,
/* eaa2 瑤 */ 0x0020,0x007c,0xf8c4,0x23ac,0x2058,0x2030,0xf8e0,0x2380, 0x20fe,0x2120,0x2020,0x3bff,0xe020,0x0122,0x0122,0x01fe ,
==========

全漢字を並べたインデックスファイルを作ります。
==========
 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇
<後略>
==========

表示したい文字列を定義して、インデックスファイルを引いてフォントファイルの何行目かを求めて、フォントファイルの該当する行をkanji.hファイルへ出力します。
検索プログラムはHSPで書きました。
==========
s = "JJ1WKN ☆★○●◎◇◆□■△▲▽▼ "
==========

出力したkanji.hファイルです。漢字フォントを定義した配列です。
PROGMEMにしたので、Flashの容量一杯までフォントを置けます。
==========
PROGMEM prog_uint16_t kanji[] = {
/* 8269 J */ 0x0000,0x00f8,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020, 0x0020,0x0020,0x0020,0x1020,0x1840,0x0f80,0x0000,0x0000 ,
/* 8269 J */ 0x0000,0x00f8,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020, 0x0020,0x0020,0x0020,0x1020,0x1840,0x0f80,0x0000,0x0000 ,
/* 8250 1 */ 0x0000,0x0100,0x0300,0x0500,0x0900,0x0100,0x0100,0x0100, 0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x07c0,0x0000 ,
/* 8276 W */ 0x0000,0xf99f,0x2184,0x2184,0x23c4,0x324c,0x1248,0x1668, 0x1428,0x1428,0x1c38,0x0c30,0x0810,0x0810,0x0000,0x0000 ,
/* 826a K */ 0x0000,0x3e7c,0x0830,0x0860,0x08c0,0x0980,0x0b00,0x0f00, 0x0980,0x08c0,0x0860,0x0830,0x0818,0x3e3e,0x0000,0x0000 ,
/* 826d N */ 0x0000,0x783e,0x1c08,0x1408,0x1608,0x1308,0x1108,0x1188, 0x10c8,0x1048,0x1068,0x1038,0x1018,0x7808,0x0000,0x0000 ,
<中略>
/* 81a5 ▼ */ 0x0000,0x0000,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff0,0x0ff0, 0x0fe0,0x07e0,0x07c0,0x0380,0x0380,0x0100,0x0000,0x0000 ,
/* 8140   */ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 ,
};
==========

Arduinoのスケッチでは縦に切り出して左シフトしていきます。
==========
// kanji txt scroll by JJ1WKN 2013-07-09
#include <MsTimer2.h>
#include <Digit32x16.h>
#include <avr/pgmspace.h>
#include "kanji.h"
void setup(){
Digit32x16::Init();
}
int len = sizeof(kanji)/sizeof(kanji[0]);
void loop(){
 for(int j=0; j < len; j+=16) {
  for(int x=0;x<16;x++) {
   for(int y=0;y<16;y++) {
    unsigned int wk = pgm_read_word_near(kanji+j+y);
    Digit32x16::Set(31, y, bitRead(wk,15-x));
   }
   delay(60);
   Digit32x16::ShiftLeft();
  }
 }
}
==========

動画です。

漢字表示してみました。


試してみたい方は、jj1wknあっとじゃーるへご連絡を。

TOCOS 無線マイコン TWE-Lite DIPのテスト

2013-07-08 | Tanukino
無線モジュールというとZigBeeやXBeeが有名ですが、いいお値段もしますし、設定など敷居が高いものがあります。

そこで、超簡単なTOCOSの無線マイコンのTWE-Lite DIPを試してみました。
TWE-Lite DIPは2.4GHz帯を使用する無線モジュールとして使えますが、無線マイコンというだけあって、デジタルとアナログのI/Oを親機・子機間で飛ばすことができます。

例えば、親機のデジタル入力にSWをつないで、子機のデジタル出力にLEDをつなぐと親機のSWで子機のLEDを操作できます。
また、親機のアナログ入力にVRで電圧を入力すると、子機のPWM出力に出力されるので、LEDをつないでおけば、親機のVRで子機のLEDの明るさを可変できます。
もちろんシリアル入出力のポートもありますので、Arduioなどのマイコンをつなぐと親機・子機間で通信ができます。
TWE-Lite DIPの詳細はこちらをご参照ください。

キットは税込み1575円で、付属アンテナと必要ならピンヘッダを半田付けする必要があります。
完成品もあるようです。
赤いキャップがついたマッチ棒みたいなのがアンテナです。
ブレッドボードでテストしてみました。上が子機、下が親機で、電源のみ共有しています。
親機はデジタル入力としてSW、アナログ入力としてVR、デジタル出力としてLEDをつなぎました。
子機はデジタル入力としてSW、デジタル出力としてLED、アナログ出力としてLEDをつなぎました。


回路図です。


先ずは、デジタル入出力のテストです。
親機のSWを押すと子機のLEDが点灯します。逆に子機のSWを押すと親機のLEDが点灯します。


次にアナログ入出力のテストです。
親機のVRを回すと、子機のLEDが徐々に明るくなっていきます。


このようなデジタル入出力が4ポート、アナログ入出力ポートが4ポート、さらにシリアルポートもあって、双方向の通信ができるので、マイコン無しでもそれなりに応用することができます。
ちなみに到達距離は、双方地上3mの高さに設置して、周囲に何も無い見通しの場合1km飛ぶとのことで、1ホップのみですが中継機として動作する設定もあります。

実際にはどのくらい飛ぶのでしょうか?
子機SWのI/Oを親機で受けて親機のデジタル入力に接続して子機のLEDを制御します。
こうすれば親機を家に設置して、子機を持って歩き回って、SWを押したときにLEDが点灯すれば、親機からの返答があったことを確認できます。
電源を別々にしてテストしてみました。
アンテナが見える範囲では応答があるのですが、家の影になったりするととたんに応答がなくなりました。

Tanukinoでデジット32x16ドットマトリクスLEDモジュールのテスト

2013-07-07 | Tanukino
デジットの32x16ドットマトリクスLEDモジュールを入手したので、早速ケーブルを作ってTanukinoに接続してみました。
これで500円なので格安ですね。
「6/6デジットBlogに掲載された32×16ドットマトリクスLEDモジュール」で未登録商品の見積もりを依頼すれば在庫次第ですが、登録済み商品と同様に通販して頂けます。

このモジュールのコネクタは2.0mmピッチなので、表示面に2.54mmピッチの8ピンコネクタを増設しました。
小さくて分からないと思いますが、TanukinoラベルをAVRに貼ってあります。


テスト表示はikkeiさん作成のライブラリのサンプルです。
ダイナミック点灯なので、デジカメでうまく撮影できていません。


動画です。