小ネタ 2009-006

AVRマイコンでシリアルポートを使ってみる + Xbeeで無線化


AVRマイコンATMEGA168でシリアルポートを使って通信するソフトを作ってみた。(2009-02-15)
だいぶ前から部品としてほぼ完成していたのだが、最近、通信速度を高速に設定できるように手直しを加えた。


ソフトウェアは、WinAVR + AVR Studioの環境で作成した。ソースコードのコンパイルは、compile_avr.batというバッチファイルでビルドする。

 [ avr_uart_test.zip (download) 6.3KB ]

このAVR用のソフトの機能は、まず、テスト文字列をAVRからUARTポートに連続して出力し、外部から入力があるとエコーバックを行う。


ハードウェアは、Arduino Duemilanoveの基板を用いた。Arduinoの内蔵ブートローダーは使わないので消している。
基板を1箇所だけ改造して、水晶を16MHzのものから14.7456MHzに取り替えている。
 

水晶発振のマイコン駆動用の周波数を14.7456MHzにすることで、高速度でシリアル通信を使う場合の誤差が出ないように分周の設定ができる。


シリアル通信の相手は、WindowsのPCでテストした。TeraTermProとかを使っても良いのだが、通信ソフトを自作してみた。
通信ポートをFTDIのUSB-UARTを使ったポートを自動検索し、921600bpsで通信を行うソフトである。

 [ test_term_02.zip (download) 151KB ]




Xbeeを使って無線化してみた。(2009-08-02)

  
 ハードウェアは、Arduino用のXbeeシールドを流用して使った。AVRマイコン内のArduinoのファームウェアは消して、ソフトを上書きして使う。
 PC側は、SparkfunのXbee用USBベースボードのキットを使った。

 接続は、
  (PC) ---- (Xbee with USB-UART kit) - - - - (Xbee Shield) ---- (Arduino AVR board)
 という接続となる。


 AVRマイコンには、UARTの通信テスト用のソフトを書き込んだ。

 [ avr_xbee_test01.zip (download) 6.3KB ]

 Xbeeの出荷時のデフォルトの通信速度設定が9600bpsなので、そのまま使って、Xbeeの無線で通信できることを確認できた。


 上記は、Xbeeのシリアル通信の機能のみのテストをしてみた。Bluetoothのシリアル通信モジュールも今までいろいろ試してみたのだが、Xbeeは、安くて使いやすくて良い。

 あと、Xbee自体がGPIOとかADCの機能を持っているので、そういうモードで使えばAVRマイコン無しでも遠隔制御や計測をすることができるそうだ。ただ、最近のセンサーはI2CとかSPIといったデジタルバスのものが結構多いし、AVRマイコンを使う方が応用が利くので、Xbee内蔵のADを使うことは自分の場合はあまり無さそうな気がする。