19章:App_TweLiteの温湿度センサー+256kbitEPROM対応化修正

    作成2014.09.03

     App_TweLiteの温湿度センサー+256kbitEPROM対応化方法について検討します。

  1. App_TweLiteの温湿度センサー+256kbitEPROM対応化評価回路図
      App_TweLiteの温湿度センサー+256kbitEPROM対応化評価回路図を以下に示します。

    ZigBeeワイヤレスモジュール TWE−LiteをUSBアダプター TWE−Lite R(トワイ・ライター)に
    取付けて評価します。
     デジタル温度・湿度センサーAM2321の詳細仕様は下記アドレスを参照します。
    http://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/AM2321/AM2321test.html
     EEPROM24FC256-I/Pの詳細仕様は下記アドレスを参照します。
    http://akizukidenshi.com/catalog/g/gI-03568/

    品名単価個数小計購入先
    ZigBeeワイヤレスモジュール TWE−Lite Dip−WA (半完成品セミキット)162011620秋月電子通商
    USBアダプター TWE−Lite R(トワイ・ライター)189011890秋月電子通商
    温湿度センサ モジュール AM23217001700秋月電子通商
    シリアルIスケアC EEPROM 24FC256−I/P90190秋月電子通商


  2. App_TweLiteの温湿度センサー+256kbitEPROM対応化外観
     App_TweLiteの温湿度センサー+256kbitEPROM対応化外観を以下に示します。



  3. App_TweLiteの温湿度センサー+256kbitEPROM対応化修正プログラムのダウンロード
     完成プログラムは「40-19.zip」ファイルをダウンロードしてください。
    [40-19.zip]をダウンロードする。

     解凍するとフォルダー内にApp_TweLiteフォルダーがあります。
     App_TweLiteフォルダー内に
    \App_TweLite\Master\Build\App_TweLite_Master_JN5164_1_6_5.bin(TWE-Lite Dip用)
    \App_TweLite\Master\Build\App_TweLite_Master_JN5164_TOCOSTICK_1_6_5.bin(ToCoStick用)
    Win-PingPong.exe(10章と同じ)
    があります。


  4. 基本操作方法
    (1)\App_TweLite\Master\Build\App_TweLite_Master_JN5164_1_6_5.binを無線マイコンTWE-Lite DIP (トワイライト・ディップ)に書込みます。(方法は7章:ToCoNet(トコネット)のソフトウエア開発環境(SDK) とPingPongの実行プログラムの書込みを参照願います。)

    (2)TWE-Lite R(トワイ・ライター)に無線マイコンTWE-Lite DIP (トワイライト・ディップ)をセットしてUSBをパソコンに接続します。
    (3)「Win-PingPong.exe」をダブルクリックで起動します。
    (4)画面の左側を「COM9」にセットして、「Conect」ボタンを押します。
    (5)TWE-Lite R(トワイ・ライター)のリセットボタンを押します。
    (6)最初に起動メッセージが表示されます。
    (7)10s間隔でデジタル温度・湿度センサーAM2321の測定が実行され、その値がEEPROM24FC256-I/Pに記憶されます。
    (8)その後、変数に0xffを書き込んだ後にEEPROM24FC256-I/Pから読み出され表示されます。
    (9)実行後、時間の経過により以下のような画面となります。

    (10)上の画面は湿度が50.5%、温度が28.0℃で湿度の16進値が0x0201、温度の16進値が0x0118であることを意味します。
    (11)データは8進値として、EEPROM24FC256-I/Pに記録します。
    (12)読みだしは、いったん0xffを書き込んでから、EEPROM24FC256-I/Pのデータを読み出し、書込みデータとの一致を確認します。
    (13)以上の結果は正常に書き込みと読み出しができていることを意味します。


  5. App_TweLiteプログラムの変更箇所
    (1)追加ヘッダファイル、変数、関数
    //***変更4
    #include "SMBus.h"
    uint16 EPROM_A=0x0000;
    uint8 gMyData[256];
    
    void W_24FC256(uint16 EPROM_A,uint8 *(pu8Dest),int Ns,int Nd);
    void R_24FC256(uint16 EPROM_A,uint8 *(pu8Dest),int Ns,int Nd);
    
    bool_t MyBusWait(void);
    void START_WRITE_ACK(void);
    void WRITE_ACK(void);
    void STOP_WRITE_ACK(void);
    void STOP_READ_NACK(void);
    void STOP_READ_ACK(void);
    void READ_ACK(void);
    void START_READ_ACK(void);
    void STOP_WRITE_NACK(void);		
    

    (2)void vProcessEvCorePwr(tsEvent *pEv, teEvent eEvent, uint32 u32evarg)の修正
    //***変更4		
    uint8 pu8Dest[32];		
    if(sAppData.u16CtRndCt == 4)		
    {		
    	PutAM2321(pu8Dest);	
    	for(i = 0;i < 4;i++){gMyData[i]=pu8Dest[2+i];}	
    }		
    		
    if(sAppData.u16CtRndCt == 3)		
    {		
    	W_24FC256(EPROM_A,gMyData,0,4);	
    }		
    		
    if(sAppData.u16CtRndCt == 1)		
    {		
    	for(i = 0;i < 4;i++){gMyData[i]=0xff;}	
    	R_24FC256(EPROM_A,gMyData,0,4);	
    	EPROM_A = (EPROM_A +4) & 0x001F;	
    }		
    

    (3)static int16 i16TransmitIoData(bool_t bQuick, bool_t bRegular)の修正
    //***変更3	
    //***変更4	
    for(i=0;i<4;i++){S_OCTET(gMyData[i]);}
    

    (4)追加関数の詳細
     詳細はソースファイルを参照願います。


  6. 結果の検討
    (1)14章:Samp_I2C(温湿度センサー)の動作試験と15章:Samp_I2C(EEPROM24FC256-I/P)の動作試験の内容をApp_TweLiteに移植したものです。
    (2)EEPROM24FC256-I/Pは書込み終了後、十分時間をおいてから読み出す必要があります。
    (3)App_TweLiteは複雑な制御を行っているためか?単純ループでの長時間ディレイを挿入すると正常に動作しなくなるようです。
    (4)このため、単純ループでのディレイを使用することなく、書込みと読み出しのタイミングをずらす必要があります。
    (5)EEPROM24FC256-I/Pの扱いはけっこう厄介ですが、レコーダ機能を実現するには不可欠です。
    (6)今回は、けっこう苦労しました!!




20章:無線式温湿度レコーダの製作に行く。

トップページに戻る。