2014年6月21日土曜日

KURUMIの電源回路

どんな電子回路でも、必要な電力が供給されないとそのシステムは動作できませんよね。さて、KURUMIボードの電源回路はどうなっているのでしょう。KURUMIボードに搭載しているマイコンRL78G13の動作電圧はVDD = 1.6 - 5.5V とかなり低電圧から動作します。 この推奨動作電圧より低い電圧の場合、マイコンやシステムは正しく動作することができません。多くの場合、発振回路が動作しないとか、RAMの内容変ってしまうとか、リセットが機能せずプログラムの暴走(プログラムの意図した順序で実行されない)といった不具合が発生します。

さて下記の図は、KURUMIボードの電源回路です。
KURUMIボード上の電源回路・電池端子・切替スイッチ
電池を使用する場合は、ディップスイッチJP8をON側にセットします。そして電池のプラス端子をRAWピンに接続します。電池のマイナス端子はGNDピンに接続します。黄色い破線部分がKURUMIボードの電源回路です。下記がその回路図です。
KURUMIボードの電源回路(昇圧回路)
この電源回路は、RAW端子に電池を接続すると昇圧されVccには電池が供給する電圧(VRAW)
よりも高い電圧(VCC)が供給されます。実際に電池を接続して、どんな電圧が供給されているのか測定してみましょう。

① まずマンガン電池の電圧を測定しました。
マンガン電池の電圧を測定した様子
② マンガン電池(1本)をKURUMIボードに接続して、KURUMIマイコンに供給される電圧を測定しました。
電池電圧は昇圧されVccには3.3Vが供給されている
KURUMIボードは何も修正していませんので、工場出荷状態での電源回路はVccに3.3Vが供給されるように設定されているようです。

Vcc =5Vを供給するには、電源回路のP2端子(未接続のジャンパー)をハンダで短絡する必要があるようです。






2014年6月16日月曜日

KURUMIマイコンの発振回路

KURUMIマイコンボードに搭載されてるマイコンチップ(ルネサス社製のRL78/G13)の発振回路はP121/X1(45番ピン)とC47コンデンサーです。いたって簡単な回路ですが、リセットに必要な多くの回路がチップ内部に内蔵されているからです。

システム動作に不可欠ではありませんが、外部周辺回路として時計クロック(SUB CLOCK)も付加されています。XT1(45番ピン)とXT2(44番ピン)に接続しています。水晶発振子XTAL1 (32.768KHz)は、発振精度が高いので実時間時計のペースメーカーとして使用します。



マイコン動作に不可欠な回路

マイコンが動作するには、最低でもどんな外部回路が必要なのでしょう?
マイコンシステムのブロック図
  • 電源回路(Vcc, Vss/GND):電気が来ないとマイコンは動作できませんよね。
  • 発振回路: マイコン内部のロジック回路をこの発振器をベースに動かします。いわば、マイコンの心臓の鼓動のようなものです。
  • リセット回路: 電源が入った直後や、もう一度最初からプログラムを実行させる場合にこの回路が必要です。人生は時間を巻き戻してやり直すことはできませんが、マイコンはリセットがかかると何回でもプログラムを再実行します。
  • Flash ROM::Flash Read Only Memoryと言ってあなたの作ったプログラムを書込む場所です。Flash ROMは、不揮発性メモリ(Non Volatile Memory)で電気が来なくても無くても書き込まれた内容は消えません。
  • RAM :Random Access Memoryで揮発性メモリです。 CPUの作業データを一時的に保存しておきます。
  • 周辺回路(内・外部): 内部にはタイマーなどの回路や、外部にはLEDやスイッチなどを取付けます。外部に色々な回路を取付け、それをプログラムで制御することがマイコンの役割です。
  • あなたのプログラム: パソコン同様に目的にあったプログラムを書込まないとマイコンは動作しません。
KURUMIマイコンボードは、下記のように対応しています。

2014年6月14日土曜日

KURUMIボードをリアルタイムに動作させる

前回の記事では、delay(1000) を使って順番にLEDを点滅させました。しかしdelay( )関数を使うと、delay(1000) を実行している約1秒間(1000m秒)は、KURUMIボードは他の処理ができません。

ここで、millis( )関数を使ってリアルタイムに色んなタスクを実行する方法を説明します。

millis( ) 関数とは1ミリ秒を刻むストップウォッチ関数です。Kurumiボードに電源が供給され動作を開始するとmillis( )関数はリセットされそのタイマーをスタートします。 KURUMIマイコンが動作している限り止まることなく時を刻みます。 この関数は現在までの時間をミリ秒単位で値 (unsigned long) を返します。この関数は約50日間でオーバーフローしゼロに戻ります。

リアルタイム制御の方法
現在時間 「 millis() 関数 」と「過去に取得した時間」を比較し、決められた時間を過ぎたら特定の処理を実行する方法で実現できます。

下記にGR-KURUMIの赤いLEDを1秒ごとに点滅させる方法を添付します。

/* GR-KURUMI Hair-pin LED Blink with millis( ) function */

#include <RLduino78.h>
#define LED_R 22
#define LED_G 23
#define LED_B 24
#define LED_OFF 1
#define LED_ON 0

unsigned long myLastTimeStamp;
int toggle = 0;

void setup()
{
    pinMode(LED_R, OUTPUT);
    pinMode(LED_G, OUTPUT);
    pinMode(LED_B, OUTPUT);
    digitalWrite(LED_R, LED_OFF);
    digitalWrite(LED_G, LED_OFF);
    digitalWrite(LED_B, LED_OFF);    
}

void loop()
{
    if(millis() - myLastTimeStamp > 1000) {
       myLastTimeStamp = millis();
       if (toggle == 0) {
         toggle = 1;
         digitalWrite(LED_R, LED_ON);      
       } else {
         toggle = 0;
         digitalWrite(LED_R, LED_OFF);      
       }
    }
    
    // You make other operation here.
}

GR-KURUMIボードを動かしてみる。

下記のプログラムは、GR-KURUMIボードのクルミアイコンのヘアピンを赤→緑→青と光らせるプログラムです。

まず、KURUMIボードにプログラムを書込むソフトウェアを自分のパソコンにインストールする必要があります。 このようなソフトウェアを統合開発環境(英語: IDE (Integrated Development Environment) と言います。KURUMIボードの場合は、「IDE for GR」というソフトウェア(Windows版)が用意されています。

  1. コーディング: C++ (Arduino言語)とうプログラミング言語を使ってKURUMIボードを制御するソフトウェアをこの上で書きます。
  2. コンパイル: 上記で書いたプログラムソースをKURUMIマイコンが理解できる機械語に翻訳します。 メニューの アイコンを押すとコンパイルが実行されます。
  3. ダウンロード: IDEでコンパイルした機械語コードをKURUMIボードに書き込みます。
    このとき、[ツール]→[シリアルポート]→[COM??] で、KURUMIがつながっている正しいCOMポート番号を選択しておく必要があります。

下記のプログラムソースは、「IDE for GR」からFTDIケーブルを使ってGR-KURUMIボードを正しく書込めるかチェックするために作りました。書込めない場合は、次の事をチェックしてください。

① FTDIのドライバーは正しくインストールされているか? 私は、FTDI BasicとうUSBシリアルコンバータモジュールを使っています。GR-KURUMIのWebページには、検証済みのUSBシルアルコンバータモジュールが記述されています。

② FTDIケーブルは正しい向きでGR-KURUMIボードに挿入されているか?
FTDIケーブルのGR-KURUMIへの装着方向
③ シリアルポートは、正しいCOM番号が選択されているか?
  これは、IDEforGRプログラムの[ツール] → [シリアルポート]で選択できます。

IDEforGRプログラムの操作画面


テストプログラム
/* GR-KURUMI Test Program */

#include <RLduino78.h>
#define LED_R 22
#define LED_G 23
#define LED_B 24
#define LED_OFF 1
#define LED_ON 0


void setup()
{
    pinMode(LED_R, OUTPUT);
    pinMode(LED_G, OUTPUT);
    pinMode(LED_B, OUTPUT);
}

void loop()
{
    digitalWrite(LED_R, LED_ON);
    delay(100);
    digitalWrite(LED_R, LED_OFF);
    delay(1000);    
    digitalWrite(LED_G, LED_ON);
    delay(100);
    digitalWrite(LED_G, LED_OFF);
    delay(1000);    
    digitalWrite(LED_B, LED_ON);
    delay(100);
    digitalWrite(LED_B, LED_OFF);
    delay(1000);    
}

かわいいマイコンボード KURUMI

KURUMIというかわいいマイコンボードがあるので紹介します。
KURUMIボード(表)
KURUMIボード(裏)















KURUMIボード(裏)には、黒い板に銀の羽が付いたものが載っていますが、これがKURUMIのCPU (CPUは、Central Processing Unit の略称)です。これは、このボードの脳に相当します。QFP (QFPとはQuad Flat Packageの略称) 型マイコン・パッケージと呼ばれています。

実際には、脳の他に手足にあたるI/O(Input/Output)ポートとう機能があり、スイッチをオン・オフしたりをプログラムで制御できます。


KURUMIアイコンの髪飾りはLED(ランプ)がありますが、ここを光らせることができます。また、入力機能にも変更できますから、逆にスイッチがオンなのかオフなのかもわかるようになっています。

その他に、タイマーや通信を行う機能もあり、ある時間が来たらブザーを鳴らしたりすることができます。

KURUMIボードの各ピンの機能

2014年5月9日金曜日

KURUMI で無線通信 (XBee)  その1

KURUMIマイコンボードで、無線通信を行うには、XBeeとう無線モジュールを使います。

使ったXBeeモジュールは2つ必要でここで購入しました。通信は、このモジュールを使ってパソコンとKURUMIとの間で行います。


まず、パソコンにつなぐXBeeモジュールの設定を行います。

使用したパーツ:

USBドングルを使って
XBeeモジュールをPCにセット
  • 無線: XBee S2 ZB Wireアンテナ(XB24-Z7WIT-004 \1700)
  • USBドングル: XBee エクプローラUSBドングル(PCでの認識には、かなりの時間がかかるので辛抱して待つ必要がある)
  • XBeeの設定: XBeeモジュールの設定には、Digi International Inc.社の専用設定アプリ(XCTU)を使って設定する。
  • XCTUのダウンロードは、ここから。今回は最新バーションで設定を行ってみる。”40003026_A.exe” というセットアップモジュールでWin-7 PCにインストールを行った。


  • XCTUを立ち上げて、右上の + のアイコンをクリック
  • 今回使用したPC上では、このUSBドングルは「COM12」にアサインされていたので、これを選択する。
  • ボーレートやデータビット等はデフォルト(右)を使用する。
  • そしてFinish ボタンをクリック。
  • その後左のメニューに出てくるRadio Moduleアイコンをクリックすると、下記のようなRadio Configurationの設定メニューが現れる。










ここで上記設定では、XBeeモジュールの機能(Function)は、Zigbee Router AT に設定されている。Zigbeeネットワークでは、① Coordinator、② Router、③ End  Deviceの順にネットワーク上の配置が必要になります。よって、パソコンにつなげるこのXBeeモジュールはFunction: Zigbee Coordinator AT に設定する必要があります。

どうも、最新版のX-CTUソフトでは、うまくこの設定ができないので、旧バージョンのX-CTUアプリで設定することにします。