macsbug

Just another WordPress.com site

Archive for 11月 2014

ソフトウエアーラジオとアンテナ

leave a comment »

付属のアンテナでは、少しのFMしか受からない程度で、航空無線を聞くには、受信場所とアンテナの条件が必要。

エアーバンド・アンテナ(富士無線電機)が正解だろうが1万円程する。乱暴ですが以下を試してみた。

MCX -> F型接栓(F5-MCX)変換アダプターを使用していないテレビ用アンテナへ接続。USB延長コードも使用。

購入先:CompuAce:カモン F5-MCX F型接栓→MCX変換アダプタ(50Ω):税込み300円

購入先:CompuAce:カモン 3AAE-20 USB3.0 延長ケーブル(2m) :税込み340円

F5-MCX

 

信号は弱めですが、東京ATIS(128.79MHz)を受信しています。

ATIS

 

 

 

 

 

 

 

 

他に、120.49, 120.79, 125.99 133.59 MHz 等の航空機の電波を受信する事ができました。

購入メモ:秋葉原のCompuAce(コンピューエース)(末広町交差点の近く)は、コネクター関係の種類が多く便利です。

メモ:東京国際空港(羽田)(HND/RJTT)無線周波数

Written by macsbug

11月 21, 2014 at 9:20 am

カテゴリー: Radio

ソフトウエアラジオ(SDR)

leave a comment »

昔、ちょっとだけやったアマチュア無線をマックで再現。USBドングルで受信ができる進化に感激!!

mrx 361
362 airp

 
名称は、DVB-T+DAB+FM USB チューナー RTL2832U+R820T。
ebayに10月31に14個オーダーしchinaから11月15着。価格は1個1000円。
DVB-TドングルはRTL2832デコーダーチップとR820Tチューナーチップを使うワンセグチューナーで、
gqrxというソフトで広帯域受信機になる。受信周波数範囲は24MHz~1800MHz。航空機無線も聞く事ができる。
左はFMを受信。FMを聞くなんて久しぶりで感激ひとしお。右は羽田空港にて航空機無線を受信。
公式サイト:http://gqrx.dk/
OSX Snow Leopardは、gqrx-2.2.0で動作。Mavericksは、gqrx_8で動作。
DL先:http://sourceforge.net/projects/gqrx/
Windowsは、sdr_installで行う。
無線って直ぐ飽きたり、それほどまでお金を出費したくない人が多い。
捨ててもいい価格としてebayで1000円以下を探し共同購入。
価格詳細:13989円:$115.78=$8.27*14個+$5.18(Shiping)
参考:超かんたんSDR(ソフトウエアラジオ)入門受信記録のブログPlus RTL-SDRSHAFT CORPORATIONのblog

Written by macsbug

11月 16, 2014 at 4:07 am

カテゴリー: Radio

FM+DAB USB DVB-T RTL2832U+R820T

leave a comment »

USBドングルの無線受信機

1000円以内の条件で共同購入を呼びかけ、eBayで14個オーダー(2014.10.31)。支払いはPaypal、輸送は一ヶ月位。

353

 

 

 

 

 

 

 

購入先:eBay
__ この業者(trail-blazer21)は、16日で到着したが1個欠品(14個が13個)。今後ここからは購入しない。

メモ:価格、ミニマムオーダー、販売数の件で制限が多い。AliExpressは、$12とかで高く選択せず。
__ 幾つかのバージョンがあるようだが、細部まで調査できずこれでよしとした。

動機:無線機がUSBタイプでIC2個でできている技術に感心し購入を考える。ただし、直ぐ飽きると思う。
__ 昔、トリオの受信機で技術に感心したが会話がたいした事無くやめる。

価格:Amazonでは、2200〜6000円位。低格安なら aitendoで 250円のDSPチップ(AM,FM)がある。
__ 興味はあるが、2000円以上では買わない程度。そこで、捨ててもいい値段は1000円らしい。

受信範囲:空港近くなら航空機無線を受信できるが自宅では聞く事はできない。外部アンテナが必要?

付加価値:勉強になる題材が沢山盛り込まれている。簡単に分解できる。
__ 例:USBとドライブ認識、受信感度、高温対策、周波数安定化対策、スマホやタブレットで表示する方法(SDR)。

アプリ:Computer Radio RF Tech:MacでSDRするならgqrxがとても簡単

Written by macsbug

11月 16, 2014 at 3:38 am

カテゴリー: Radio

1GB ROM READER of Arduino Mega 2560

leave a comment »

EEPROM 1GByte(27C1001) の ROM READER を Arduino MEGA 2560 で製作。

配線:プログラム中に記載。

出力:Arduinoのシリアルモニターに、INTEL HEX Format 又は HEX表示。

Reader

 

 

 

 

 

 

メモ:EEPROM 1GByte(27C1001)を解析する為に製作した。

_ 以前に基盤で製作した512kBのROM READERを1GB用に改修。内容はアドレス線をA16まで追加。

_ ブレットボードやジャンパーワイヤーは不安定である。特にグランドワーヤーが問題。

_ 基盤で配線をした形が良い。

_ 解析:ブラウザーで Disassemble する事ができる場所 -> ODA – The Online Disassembler

__ 例:CPU 8088:HEXを左に入れ、Arch=i8086、必要ならばBase Addressを入力。Disassembllyを押す。

_ 解析:Disassemblerアプリは、Windowsで、DIS8051,disasmx,disasm-1.0.0,dasm153m等で解析可能。

 

//=========================================================================
// Arduino Mega 2560 27C1001 ROM READ Program
// ORG : INTEL HEX FORMAT & HEX DUMP               2014.11.11 s.ono
//=========================================================================
//   Arduino Mega 2560 ROM READER SCHEMATIC
//          ARDUINO MEGA                           ROM 27C1001
//   +5V    -----------                            -----------
//   |      |     PE1 |  1 -> Serial Tx         32 | VCC     |
//   -| SW  |     PE0 |  0 <- Serial Rx         16 | GND     |
//   |      |     PB6 | 12 -> 330ohm - LED - GND   |         |
//   +----> | 11  PB5 |        +5 -- 10Kohm --> 31 | P_      |
//   |      |         |                            |         |
//  10Kohm  |     PL0 | 49 ------------------->  2 | A16     |
//   |      |     PF7 |  7 ------------------->  3 | A15     |
//  GND     |     PF6 |  6 -------------------> 29 | A14     |
//          |     PF5 |  5 -------------------> 28 | A13     |
//          |     PF4 |  4 ------------------->  4 | A12     |
//          |     PF3 |  3 -------------------> 25 | A11     |
//          |     PF2 |  2 -------------------> 23 | A10     |
//          |     PF1 |  1 -------------------> 26 | A9      |
//          |     PF0 |  0 -------------------> 27 | A8      |
//          |     PK7 |  8 ------------------->  5 | A7      |
//          |     PK6 |  9 ------------------->  6 | A6      |
//          |     PK5 | 10 ------------------->  7 | A5      |
//          |     PK4 | 11 ------------------->  8 | A4      |
//          |     PK3 | 12 ------------------->  9 | A3      |
//          |     PK2 | 13 -------------------> 10 | A2      |
//          |     PK1 | 14 -------------------> 11 | A1      |
//          |     PK0 | 15 -------------------> 12 | A0      |
//          |         |                            |         |
//          |     PA2 | 24 -------------------> 24 | OE_     |
//          |     PA0 | 22 -------------------> 22 | CE_     |
//          |         |                            |         |
//          |     PC7 | 30 <------------------- 21 | Q7      |
//          |     PC6 | 31 <------------------- 20 | Q6      |
//          |     PC5 | 32 <------------------- 19 | Q5      |
//          |     PC4 | 33 <------------------- 18 | Q4      |
//          |     PC3 | 34 <------------------- 17 | Q3      |
//          |     PC2 | 35 <------------------- 15 | Q2      |
//          |     PC1 | 36 <------------------- 14 | Q1      |
//          |     PC0 | 37 <------------------- 13 | Q0      |
//          -----------                            -----------
//=========================================================================
/*   Arduino Mega 2560 ROM READER PIN LAYOUT   []  AREF
                  ( Parts SIDE )               []  GND 
                                               []  PB7 
     RESET []                                  []  PB6 
     3V3   []                                  []  PB5 
     5V    []                                  []  PB4 
     GND   []                                  []  PH6 
     GND   []        1 ()VPP     5V() 32       []  PH5 
     VIN   []        2 ()A16     P_() 31       []  PH4 
                       ()A15     NA()          []  PH3 
     PF0   []          ()A12    A14()          []  PE3 
     PF1   []          ()A7     A13()          []  PG5 
     PF2   []          ()A6      A8()          []  PE5 
     PF3   []          ()A5      A9()          []  PE4 
     PF4   []          ()A4     A11()          []  PE1 TX 
     PF5   []          ()A3     OE_() 24       []  PE0 RX 
     PF6   []          ()A2     A10()                      
     PF7   []          ()A1     CE_() 22       []  PJ1 TX3 
                       ()A0      Q7()          []  PJ0 RX3 
     PK0   []          ()Q0      Q6()          []  PH1 TX2 
     PK1   []          ()Q1      Q5()          []  PH0 RX2 
     PK2   []          ()Q2      Q4()          []  PD0 TX1 
     PK3   []       16 ()GND     Q3() 17       []  PD1 RX1 
     PK4   []                                  []  PD2 SDA 
     PK5   []  P P P P P P P P P P P P P P P P []  PD3 SCL
     PK6   []  B B L L L L G D C C C C A A A A            
     PK7   []  1 3 1 3 5 7 1 7 1 3 5 7 6 4 2 0                      
         GND [][][][][][][][][][][][][][][][][][] 5V        
         GND [][][][][][][][][][][][][][][][][][] 5V                            
               P P P P P P P P P P P P P P P P            
               B B L L L L G D C C C C A A A A             
               0 2 0 2 4 6 0 2 0 2 4 6 7 5 3 1            
*/
//=========================================================================
#define OE  24                            // ROM OE_  PA2
#define CE  22                            // ROM CE_  PA0
#define SW  11                            // Switch   PB5
#define LED 12                            // LED      PB6
int dt;                                   // READ DATA
int sum;                                  // sum check
//========================================//===============================
void setup() {                            //
 delay(500); // 76543210                  // PORT MODE SET
 DDRK = DDRK | B11111111;                 // PORT K = OUTPUT : LO  ADDRESS
 DDRF = DDRF | B11111111;                 // PORT F = OUTPUT : HI  ADDRESS
 DDRL = DDRL | B11111111;                 // PORT L = OUTPUT : A16 ADDRESS
 DDRA = DDRA | B11111111;                 // PORT A = OUTPUT : CONTROL
 DDRC = DDRC | B00000000;                 // PORT C =  INPUT : DATA
 pinMode ( SW ,  INPUT );                 // SWITCH
 pinMode ( LED, OUTPUT );                 // LED
 PORTA =       B11111111;                 // PA0(OE_),PA2(CE_)=1
 PORTK =       B00000000;                 // LO  ADDRESS = 0
 PORTF =       B00000000;                 // HI  ADDRESS = 0
 PORTL =       B00000000;                 // A16 ADDRESS = 0
 digitalWrite (LED, LOW);                 // LED ON
 Serial.begin (115200);                   //
 delay(500);                              // LED ON TIME
}
//========================================//===============================
void loop() {                             //
 digitalWrite (LED, HIGH);                // LED OFF
 if ( digitalRead ( SW ) == HIGH ){       // Push Switch ON
  digitalWrite (LED, LOW);                // LED ON
  Serial.println(" ROM READ START");      //
  Serial.println("");                     //
  for ( int ad16=0; ad16<2; ad16++ ){     // A16 PL   0,         0
   for ( int ad_h=0; ad_h<256; ad_h++ ){  // HI  PF 7-0, 0000 0000
    for ( int ad_l=0; ad_l<256; ad_l++ ){ // LO  PK 7-0, 0000 0000
     PORTL = ad16;                        // A16 address set
     PORTF = ad_h;                        // HI  address set
     PORTK = ad_l;                        // LO  address set
     digitalWrite (CE, LOW);              // ROM CE_ select, PA0
     digitalWrite (OE, LOW);              // ROM OE_ select, PA2
     dt = PINC;                           // PORT C 8bit ROM Data Raed
     digitalWrite (OE, HIGH);             // ROM OE_ Reset , PA2
     digitalWrite (CE, HIGH);             // ROM CE_ Reset , PA0
     ihex_dump( ad16, ad_h, ad_l, dt );   // dump:intel HEX
   //hex_dump( ad_l, dt );                // dump:HEX
    }                                     //
   }                                      //
  }                                       //
  Serial.println("");                     //
  Serial.println(" ROM READ END");        // message
  delay(1000);                            //
  digitalWrite (LED, HIGH);               // LED OFF
 }                                        // LOOP
}
//========================================//===============================
void ihex_dump(int a16,int ah,int al,int dt){ // HEX DUMP
  int p = 0;                              //
  if ( ( al & B1111 ) == 0 ){             // First Line , LO BYTE CHECK
    Serial.print(":10");                  // Start
    if ( a16 < 16 ){ Serial.print("0");}  // 0 OUTPUT
    Serial.print( a16, HEX );             // A16
    if ( ah < 16 ) { Serial.print("0");}  // 0 OUTPUT
    Serial.print( ah, HEX );              // HI ADDRESS XX OUTPUT
    if ( al < 16 ) { Serial.print("0");}  // 0 OUTPUT
    Serial.print( al, HEX );              // LO ADDRESS XX OUTPUT
  //--------------------------------------//-------------------------------
    if ( (ah == 255) && (al == 240)){     // LAST , FF F0
      Serial.print("01");                 // data end 01h : LAST DATA
      p =  1;                             // sum = sum + 01h
      } else { Serial.print("00");        //
    }                                     //
    sum = 16 + a16 + ah + al + p;         // sum calculate
   }                                      //
  //--------------------------------------//-------------------------------
  if ( dt < 16 ){ Serial.print("0");}     // 0 OUTPUT
  Serial.print( dt, HEX );                // HEX DATA OUTPUT
  sum = sum + dt;                         // sum calculate
  //--------------------------------------//-------------------------------
  if ( ( al & B1111 ) == 15 ){            // 1 line output action
    sum = sum & B11111111;                // sum 8 bit mask
    sum = ( sum ^ B11111111 ) + 1;        // sumcheck : 2 no hosuu
    sum = sum & B11111111;                // sum 8 bit mask
    if ( sum < 16 ){ Serial.print("0");}  // 0X
    Serial.println(sum,HEX);              // sum HEX DATA OUTPUT
  }                                       //
}
//========================================//===============================
void hex_dump( int al, int dt ){          // HEX DUMP
  if ( dt < 16 ){ Serial.print("0");}     // 0X
  Serial.print( dt, HEX );                // DATA Print
  if ( ( al & B1111 ) == 15 ){            // 1 line output action
    Serial.println("");                   //
  }                                       //
} 
//========================================//===============================

Written by macsbug

11月 15, 2014 at 1:07 am

カテゴリー: Arduino

Arduino Memo(Arduino と ディスプレー)

leave a comment »

MEGAArduino と表示装置:

装置を作ると入出力の表示の為にディスプレーが必要となります。そのポイントをまとめました。

結論:表示がある程度の大きさから、TFT LCDとArduino MEGA 叉は Due が必要となる。

1.  数値か文字が数行程度:Nokiaのディスプレーが良い。

2. 表示範囲(解像度):縦に32bitを表示するには、TFT LCDで縦が480 Pixel以上必要である。

_ Arduino MEGA 叉は Due が必要となる。理由:接続端子が多い。プログラム容量が大きい。

3.  サイズ:3.5int TFTは、MEGAやDueの大きさにあう。5int TFT は大きくなる。

4.  処理速度:Arduino Due > Arduino MEGA > Arduino UNO

_ I/Oダイレクト操作速度:Arduino UNOArduino MEGA > Arduino Due

5.  TFT LCD Touch:外部入力装置が不要となり便利。ただし、Touchのスケッチ作成が必要になる。

6. ディスプレー・ライブラリ−:UTFT, UTouch Liblary があり、開発が短縮できる。

_ 他のプロトタイプでは、ライブラリ−を独自で組む事は難解で時間を要する。

7.  ディスプレーの入手:国内で入手困難な場合があり海外購入が必要な場合がある。

_ Aitendoの製品は、Aliexpressから購入しても同じ設計不良の製品である。ただし、接続の為のSheeldが不要の為、便利である。

_ 今の所、ebayから購入した方が無難である。

 

使用例:

1.  Arduino MEGA or Due + Aitendo 3.5int TFT LCD Touch DisplayUTFT, UTouch Liblary

2.  Arduino MEGA or Due + 5int TFT LCD Touch Display + TFT Sheeld + UTFT, UTouch Liblary

他のプロトタイピング・ツール:MBED:LiblaryはあるがSheeldが見つからない。

Arrdino MEGA,DUE Sheeldならある

MEGA:SainSmart DUE + 5″ LCD Touch Panel SD Card Slot + TFT LCD Shield Kit For Arduino

DUE: SainSmart Mega2560 R3 + 5″ LCD SD Card Slot + TFT LCD Shield Kit For Arduino

Written by macsbug

11月 15, 2014 at 1:06 am

カテゴリー: Arduino