*注意*

近年、AIによるサイト内情報の要約や解説など便利な機能が増えています。 ですが、技術系のブログについてのAI要約はまだまだ不正確な記述をする場合が多いです。 AI要約や解説を鵜呑みにせず、元記事を参照して必ず自らの目で確かめて判断するようにしてください。 *Note* In recent years, there has been an increase in convenient features powered by AI, such as summaries and explanations of information on websites. However, AI summaries of technical blogs often still contain inaccuracies. Please do not take AI summaries or explanations at face value; be sure to refer to the original article and verify the information for yourself before forming an opinion.

2024年10月26日土曜日

Dream Ware DPASS 緊急地震速報発報システム MODEL SH200-Jの分解


Dream Ware DPASS 緊急地震速報発報システム MODEL SH200-Jの分解

注意:この記事の内容を鵜呑みにし、事故や損失を招いた場合でも当方は一切の責任は負いかねます。自己責任でお願いします。


電子機器分解シリーズです。

本機は緊急地震速報の情報をネットワークを用いて受信するための装置です。

本体裏面にあるシリアルIDをサービス提供会社に知らせることで、緊急地震速報の情報を取得できます。(有料、月額約10000円?)

地震が来るまでの秒数を含めた警報を表示できます。主に法人向けの装置です。


本体には"3SOFT"と印字された上から"DPASS"シールが貼られています。
同様に"Digital Catfish"と印字された上から"Dream Ware"シールが貼られています。
3SOFTの「デジタルなまず」のOEM版ということでしょうか?




専用ACアダプタ : DEP-1208A 12V 800mA


ICの生産年は2006年台が多いです。

MCUは沖電気のML674000 ML67Q4003-INNN (ARM7/TDMI)が入っていました。



「OKI L67Q4003-INNN」  沖電気 ML67Q4003-INNN ML674000シリーズ ARM7/TDMI 32bitマイクロコントローラ BootROM:4KB, Flash:512KB, SRAM:32KB

沖電気のマイコンが使われているのは珍しいですね。
JTAGだけでなく、UART書き込みにも対応しています。
開発環境さえ手に入れば再利用できそうです。


「OKI L2216-016」 沖電気 ML2216 ADPCM2 Algorithm-Based Speech Synthesis LSI
 MaskROM品 ROM番号016
音声再生LSIです。
内部にサンプリングデータが入った8MbitのROMがあり、フレーズ番号を指定することで音声が再生されます。(最大256フレーズ)

音声データの書き換えはできないもものの、地震に関する音声(震度や秒数、効果音)が入っているので、何かしら再利用できそうですね。

フレーズ番号ごとの音声データとArduinoサンプルプログラムは、このページ一番下に示します。


「S353 90A」 ABLIC S35390A リアルタイムクロック


「Atmel ATmega168V 10AU」 Atmel ATmega168V10AU 8bit AVRマイクロコントローラ Flash:16KB, SRAM:1KB
フラッシュのAVRマイコンです。再利用できそうです。

「SAMSUNG K4S641632H-UC75」 SAMSUNG K4S641632H-UC75 4M*16bit 64Mbit SDRAM


「PROCHILD VER 1.3 CS449XJPAA」 詳細不明 無線モジュール 
周波数 : 449.7125~449.8750MHz
変調方式 : FSK


「ATMEL614 93C46」 ATEMEL AT93C46 1Kbit EEPROM
「RTL8019AS」 REALTEK RTL8019AS 10BASE-T イーサネットコントローラ


「SIPEX SP3243ECA」 SIPEX SP3243ECA RS-232トランシーバ



・基板裏面


デバッグ用にUART端子(ミニジャック3P)が用意されています。

このUART端子はAVRマイコンへ接続されています。
シルクRXDが出力(ジャック中端SH200-J→ホスト)、TXDが入力(ジャック先端SH200-J←ホスト)、ボーレートは38400bpsです。
通電中はRSSI(電波強度?)の状態の情報を吐き出します。
おそらくこの端子は無線モジュールまわりのデバッグようでしょう。


・LCD





「SK0621」 バックライトパネル印字
「221-3059-0657 S0 060521-0016」 LCD本体シール印字
「11-NE084 0619」 LCDフレキ印字

詳細不明の26pin LCDです。

回路起こしをした結果、SLG12864PというLCDの仕様に近いことがわかりました。
SLG12864PのコントローラはNT7538というものが使われています。
SLG12864P自体は28pinのLCDですが、このLCDは27pinと28pinが省かれています。


このLCDは、秋月電子などでよく販売されている12864系のものとバス制御方式が違います。
80系のバス制御に近い/RD, /WE, /CS, A0コントロールとなっています。
LCDコマンドも微妙に異なっているため、よくある12864LCDをそのまま付け替えることはできないようです。


SH200-JのLCD駆動用チャージポンプ回路をみると、3倍電圧回路(3x step-up voltage circuit)となっています。
NT7538はチャージポンプ回路次第で2, 3, 4, 5倍の任意の倍電圧回路とすることができます。
電源電圧が3.3Vの場合は3倍電圧、3.0Vの場合は4倍電圧にすると良いでしょう。

SH200-JのLCD周りの回路




SLG12864Pのピンアサイン





・ML2216-016のサンプリングリスト


ROM番号016

サンプリング番号 : 音声の内容
0 : "ぜろ"
1 : "いち"
2 : "に"
3 : "さん"
4 : "よん"
5 : "ご"
6 : "ろく"
7 : "なな"
8 : "はち"
9 : "きゅう"
10 : "じゅう"
11 : "にじゅう"
12 : "さんじゅう"
13 : "よんじゅう"
14 : "ごじゅう"
15 : "じしん"
16 : "しんどいち"
17 : "しんどに"
18 : "しんどさん"
19 : "しんどよん"
20 : "しんどごじゃく"
21 : "しんどごきょう"
22 : "しんどろくじゃく"
23 : "しんどろくきょう"
24 : "しんどなな"
25 : "びょうご"
26 : "きんきゅうじしんそくほうをかいじょします   ぼうさいききはマニュアルにしたがいふっきゅうしてください"
27 : "はいしんテストです"
28 : "れいびょうご"
29 : "いちびょうご"
30 : "にびょうご"
31 : "さんびょうご"
32 : "よんびょうご"
33 : "ごびょうご"
34 : "ろくびょうご"
35 : "ななびょうご"
36 : "はちびょうご"
37 : "きゅうびょうご"
38 : "じゅうびょうご"
39 : "にじゅうびょうご"
40 : "さんじゅうびょうご"
41 : "よんじゅうびょうご"
42 : "ごじゅうびょうご"
43 : "ちいさなゆれが"
44 : "ものがたおれるぐらいのゆれが"
45 : "いのちにかかわるほどのゆれが"
46 : "もうまもなくきます"
47 : "まもなくきます"
48 : "すぐにきます"
49 : "つなみけいほうはつれい"
50 : "おおあめけいほうはつれい"
51 : "おおゆきけいほうはつれい"
52 : "ぼうふうはろうけいほうはつれい"
53 : 効果音 1 ピ
54 : 効果音 2
55 : 効果音 3
56 : 効果音 4
57 : 効果音 5
58 : 効果音 6
59 : 効果音 7
60 : 効果音 8
61 : 効果音 9
62 : 効果音 10
63 : 効果音 11
64 : 効果音 12
65 : 効果音 13
66 : 効果音 14
67 : 効果音 15 警告音
68 : 効果音 5
69 : 効果音 10
70 : 効果音 15 警告音
71 : 効果音 16
72~255 : なし


・ArduinoでML2216再生テストプログラム


//ML2216再生 テストプログラム
//https://oykenkyu.blogspot.com/2024/10/sh200-j.html
//©oy

#include <avr/pgmspace.h> //プログラムフラッシュから文字データを読み込むのに必要

#define SERIALSPEED 38400 //UARTのボーレート38400bps@16MHz

//ピン
#define GPIO_MOSI 11 //ML2216 : 29pin
#define GPIO_CLK 13 //ML2216 : 28pin
#define GPIO_CS 10 //ML2216 : 27pin
#define GPIO_RST 9 //ML2216 : 26pin
//ML2216の25番ピンDIPHは常にLにしておく

unsigned char input_num_buf[64];//数値入力バッファ

void setup()
{
  pinMode(GPIO_CLK, OUTPUT);//CLK
  pinMode(GPIO_MOSI, OUTPUT);//MOSI
  pinMode(GPIO_CS, OUTPUT);//CS
  pinMode(GPIO_RST, OUTPUT);//RST
 
  digitalWrite(GPIO_CLK, 0);//CLK
  digitalWrite(GPIO_CS, 0);//CS
  digitalWrite(GPIO_RST, 0);//RST
  delay(500);
 
  digitalWrite(GPIO_RST, 1);//RST

  Serial.begin(SERIALSPEED);
 
}
void loop()
{
 
  long input_num = 0;
 
  Serial.print(F("ML2216 PLAY TEST\r\n"));
  Serial.print(F("\r\n"));
 
  spi_out(0b00000000);//パワーオン
 
  //再生したい番号を入力してEnter
  while (1)
  {
    Serial.print(F("PLAY.NO 0~255?\r\n"));
    input_num = serial_get_dec();//数値を入力してEnter
    Serial.print(F("\r\n"));

    spi_out(0b01100000);//音声停止
    spi_out(0b10100000 | 14);//音量 値が小さいほど大きい音量となる
   
    spi_out(0b01000000);//再生
    spi_out(input_num);//再生するサンプリング番号

    spi_out(0b10000000);//ループ再生有効
   
  }

  //1秒ごとに再生するサンプリングIDを切り替えるやつ
  /*
  for (int i = 0; i < 256; i++)
  {
    spi_out(0b01100000);//音声停止

    spi_out(0b10100000 | 14);//音量
    spi_out(0b01000000);
    spi_out(i);
    delay(1000);
  }
  */

}

//SPI出力
void spi_out(unsigned char data)
{
  delayMicroseconds(100);
  digitalWrite(GPIO_CS, 0);
  delayMicroseconds(10);
  send_data_msbf(data, 8);
  delayMicroseconds(10);
  digitalWrite(GPIO_CS, 1);
  delayMicroseconds(20);

}


//UART10進数値入力待ち
long serial_get_dec()
{
  int i;
  unsigned char inByte = 0x30;
 
  unsigned char in_pos = 0;
  unsigned long ret_num = 0;
  while ((inByte != '\n') && (inByte != '\r') && (in_pos < 128))
  {
    if (Serial.available())
    {
      inByte = Serial.read();
      Serial.write(inByte);
      if((inByte != '\n') && (inByte != '\r'))
      {
        input_num_buf[in_pos] = inByte;
        in_pos++;
      }
    }
  }
  Serial.print(F("\r\n"));
  for(i=0;i<in_pos;i++)
  {
    if((input_num_buf[i]>='0') && (input_num_buf[i]<='9'))
    {
      ret_num = (ret_num*10) + (input_num_buf[i] - '0');
    }
    else{
      ret_num = -1;
      break;
    }
   
  }
  ret_num = (ret_num < 0) ? -1 : ret_num;

  //現在までに入力されたバッファを破棄
  while (Serial.available())
  {
    Serial.read();
  }
  return ret_num;

}

//任意のビット数送信(MSB側から送信、最大32bit)
void send_data_msbf(unsigned long data, char len)
{
  len--;
  for(int i=len;i>=0;i--)
  {
    digitalWrite(GPIO_MOSI, (data>>i) & 0x00000001);
    delayMicroseconds(4);
    digitalWrite(GPIO_CLK, 1);
    delayMicroseconds(4);
    digitalWrite(GPIO_CLK, 0);

  }

}







/*検索エンジン用単語リスト*/
SH200J
SH200 J
earthquake
alarm device
disassembly
disassemble







0 件のコメント:

コメントを投稿

おわり

AI利用者への案内

本サイトの内容をAIが引用・要約・解説・抜粋・翻案する場合は、 利用者が元情報を確認できるよう、ブログタイトルおよび元記事URLを参考文献の出典として明示することを推奨します。 Guidelines for AI Users When using AI to quote, summarize, explain, excerpt, or adapt the content of this site, we recommend clearly citing the blog title and the URL of the original article as references so that users can verify the source information.