ZigbeeモージュールTWE-Liteでシリアル通信のテストをしました.
PC-USBシリアルモジュール-TWE-Lite
USBシリアルモジュールのTX,RXとTWE-LiteのTX,RXをクロスして接続する.
親機:M1-GND,M2,M3オープン,BPS-GND(38400bps)
子機:M1,M2,M3オープン,BPS-GND(38400bps)
まずは,teratermでテスト.
通信速度を38400にして,TerminalのTransmitをCR+LFとしておく.
親機 (論理ID=0x00) ,子機 (論理ID=0x78)双方から約1秒間隔で,
以下のようなIO状態の通知データが送られる.
:7881150175810000380026C9000C04220000FFFFFFFFFFA7
親機からデータを送ってみる.
下記データをコピーしteratermに張り付け,Enterすれば,
子機側のPCのteraterm上に表示される.
:780100112233AABBCCDD13
最後の2バイトはチェックサムで,0x78+0x01+0x00+...0x13の下位が0x00になる.
続いてProcessingで作ったシリアル通信のテストプログラム
親機側からhello!を2秒間隔で送信する.
子機では,IO状態の通知データは無視しそれ以外のデータを表示する.
親機側の送信プログラム
import processing.serial.*;
Serial myPort;
void setup(){
myPort = new Serial( this, Serial.list()[0], 38400);
}
void draw(){
char[] data= new char[20];
int i,sum,n=7;//N of words +1
data[0] =0x78;
data[1] ='h';
data[2] ='e';
data[3] ='l';
data[4] ='l';
data[5] ='o';
data[6] ='!';
String str = ":";
sum=0;
for(i=0;i<n;i++)sum+=(int)(data[i]);
data[n]=(char)((256-sum%256)%256);
for(i=0;i<=n;i++){
if(data[i]/16>9)str+=(char)('A'+(data[i]/16-10));
else str+=(char)('0'+(data[i]/16));
if(data[i]%16>9)str+=(char)('A'+(data[i]%16-10));
else str+=(char)('0'+(data[i]%16));
}
println(str);
str+='\r'; //CR
str+='\n'; //LF
myPort.write(str);
//delay 2 sec
int t=millis();
while(millis()<t+2000){}
}//draw()
子機側の送信プログラム
import processing.serial.*;
Serial myPort;
void setup(){
size(100,100);
myPort = new Serial( this, Serial.list()[0], 38400);
}
void draw(){
int i,n;
char a;
char[] data = new char[100];
String str = "";
for(i=0;i<100;i++){
while (myPort.available()==0){};
data[i]=(char)myPort.read();
str+=data[i];
if(data[i]=='\n')break;
}//for
n=i; //50
if(n!=50)for(i=3;i<n-4;i+=2){
if(data[i]>='A')a=(char)(10+data[i]-'A');
else a=(char)(data[i]-'0');
a*=16;
if(data[i+1]>='A')a+=(char)(10+data[i+1]-'A');
else a+=(char)(data[i+1]-'0');
print(a);}
}//draw()
ATMELのAT-Tiny26,ATmega,R8Cなどのワンチップマイコン,C言語,JAVAなどのプログラミング言語の入門のためのページです.サンプルプログラムを中心に紹介します.他にもLinixや数学ソフトなどの紹介も行います.
このブログを検索
あなたは
番目のお客様です.
内容
Visual C++ Express Editionを用いたプログラミングメモ
Windows版 Mathematicaの使い方
MATLABとOctaveを使う
Fedora,Vine,Debian,KnoppixでLinux一本勝負?
CygwinやMinGWでCプログラミングを行う
C言語のプログラミング入門
R8Cで液晶SC1602BSの表示を行う
マイコンと2進数
R8CTinyマイコンの最初の一歩(Cプログラミング)
R8C/TinyシリーズのリセットとIDコードチェック機能
R8CTinyでCOMポートの通信実験
CT-208でR8CTinyの実行(アセンブラ)
R8C/Tiny29(サンハヤトのMB-8C29)の評価
サウンドファイルwavを開く
よく使うATMELのマイコンのアセンブラの比較
ATMELのATTiny26入門
Tiny26で液晶SC1602BSの表示を行う
AD変換の結果を液晶に表示する
マイコンによる電子オルゴール
Tiny2313でパルスの分周とカウンタ
Tiny2313でシリアル通信とROMリーダ
Tiny2313でGPSデータを液晶に表示
加速度センサを使う
マイコンでI2C-EEPROMの読み書きを行う
TINY13,TINY25,2313などの8ピンマイコンを使う
PSOCマイコンスタートアップ
AF,FMラジオ
Windows版 Mathematicaの使い方
MATLABとOctaveを使う
Fedora,Vine,Debian,KnoppixでLinux一本勝負?
CygwinやMinGWでCプログラミングを行う
C言語のプログラミング入門
R8Cで液晶SC1602BSの表示を行う
マイコンと2進数
R8CTinyマイコンの最初の一歩(Cプログラミング)
R8C/TinyシリーズのリセットとIDコードチェック機能
R8CTinyでCOMポートの通信実験
CT-208でR8CTinyの実行(アセンブラ)
R8C/Tiny29(サンハヤトのMB-8C29)の評価
サウンドファイルwavを開く
よく使うATMELのマイコンのアセンブラの比較
ATMELのATTiny26入門
Tiny26で液晶SC1602BSの表示を行う
AD変換の結果を液晶に表示する
マイコンによる電子オルゴール
Tiny2313でパルスの分周とカウンタ
Tiny2313でシリアル通信とROMリーダ
Tiny2313でGPSデータを液晶に表示
加速度センサを使う
マイコンでI2C-EEPROMの読み書きを行う
TINY13,TINY25,2313などの8ピンマイコンを使う
PSOCマイコンスタートアップ
AF,FMラジオ