2010年10月31日日曜日

LPCXpresso LPC1768でTOPPERS/ASPの動作を確認する


2011年2月23日の記事、3千円で楽しめるARMマイコンとRTOSの世界 (TOPPERS/ASP on LPCXpresso LPC1768)でLPCXpressoさえあればTOPPERS/ASPを楽しめるようにしました。



TOPPERS/ASP for LPC(http://sourceforge.jp/projects/toppersasp4lpc/)においてsuikanさんがTOPPERS/ASPをLPCプロセッサで動作させるためのポーティングをされています。


suikanさんがお使いのボードは株式会社日新テクニカで販売されているNXP ARM/Cortex-M3 LPC1768開発キット(http://www.nissin-tech.com/2010/01/nxp-armcortex-m3-lpc1768.html)です。






Embedded Artistsで公開されているFreeRTOSポート(http://www.embeddedartists.com/products/lpcxpresso/lpc1768_xpr.php?tab=res)ではP0[22]のLED(ボード上ではLED2とシルクが打ってある)が点滅するデモになっています。内部では二つのタスクが起動し、一方が送信し一方が受信、そして受信側がLEDをトグルするデモです。




これを踏まえて先のTOPPERS/ASPでもLPCXpresso LPC1768でLEDがチカチカするようにしてみました。Subversionのリポジトリがrevision 1となっているのは私のローカルリポジトリのバージョンです。http://svn.sourceforge.jp/svnroot/toppersasp4lpcからダウンロードしてきたバージョンはrevision 206です。
  1. asp/cfgでconfigureしてmakeする。
  2. sample1プロジェクト用のディレクトリを作成する。
  3. asp/configure -T lpc1768_generic_gccを実行し、サンプルプログラムを生成する。
  4. make depend; makeする。
変更点を以下に示します。


Index: sample1/sample1.c
===================================================================
--- sample1/sample1.c(revision 1)
+++ sample1/sample1.c(working copy)
@@ -108,6 +108,7 @@
 #include "syssvc/syslog.h"
 #include "kernel_cfg.h"
 #include "sample1.h"
+#include "util.h"


 /*
  *  サービスコールのエラーのログ出力
@@ -146,6 +147,10 @@


 SVC_PERROR(ena_tex());
 while (1) {
+                if (tskno == 1) {
+                    toggle_led();
+                }
+
 syslog(LOG_NOTICE, "task%d is running (%03d).   %s",
 tskno, ++n, graph[tskno-1]);
 for (i = 0; i < task_loop; i++);
Index: sample1/util.h
===================================================================
--- sample1/util.h(revision 0)
+++ sample1/util.h(revision 0)
@@ -0,0 +1,6 @@
+#ifndef UTIL_H
+#define UTIL_H
+
+void toggle_led(void);
+
+#endif
Index: sample1/Makefile
===================================================================
--- sample1/Makefile(revision 1)
+++ sample1/Makefile(working copy)
@@ -130,7 +130,7 @@
 #
 #  共通コンパイルオプションの定義
 #
-COPTS := $(COPTS) -g
+COPTS := $(COPTS) -g -D__NEWLIB__
 ifndef OMIT_WARNING_ALL
   COPTS := $(COPTS) -Wall
 endif
@@ -156,7 +156,7 @@
   APPL_CXXOBJS = $(APPLNAME).o
   APPL_COBJS =
 else
-  APPL_COBJS = $(APPLNAME).o
+  APPL_COBJS = $(APPLNAME).o util.o
 endif
 APPL_CFLAGS =
 APPL_LIBS =
Index: sample1/util.c
===================================================================
--- sample1/util.c(revision 0)
+++ sample1/util.c(revision 0)
@@ -0,0 +1,10 @@
+
+#include "LPC17xx.h"
+
+void toggle_led(void)
+{
+    uint32_t s = LPC_GPIO0->FIOPIN;
+    LPC_GPIO0->FIOCLR = s & (1 << 22);
+    LPC_GPIO0->FIOSET = ((~s) & (1 << 22));
+}
+
Index: asp/target/lpc1768_generic_gcc/target_config.c
===================================================================
--- asp/target/lpc1768_generic_gcc/target_config.c(revision 1)
+++ asp/target/lpc1768_generic_gcc/target_config.c(working copy)
@@ -114,6 +114,12 @@
  *  バナー出力用のシリアル初期化
  */
 target_uart_init(SIO_PORTID);
+
+        /*
+         * P0[22] on LPCXpresso LPC1768 is LED.
+         */
+        LPC_PINCON->PINSEL1 &= (~(3 << 12));
+        LPC_GPIO0->FIODIR |= (1 << 22);
 }




2010年10月30日土曜日

LPCXpressoを持ち歩くためのケース見つけた

LPCXpressoはコンパクトで安価なのでついついどこにでも持ち歩きたくなります。


そんな時、鞄に直接入れるのは壊れそうですし、かといって購入した時の紙袋に入れるのもスマートではありません。家の中を探してみるとありました。


10年くらい前に購入した無印良品のケース。
ウェブを調べてみると、現在は一回り大きくなったものが販売されているようです。
http://www.muji.net/store/cmdty/detail/4547315371297

実際にLPCXpressoを入れてみるとご覧の通り。


中々ぴったり入ります。
付属の静電防止ポリウレタンを付ければ安心して持ち歩く事ができます。


ということでLPCXpressoをノートパソコンと一緒に持ち歩く休日なんていうのもたまには良いかもしれません。

mbed + StarBoard Orange用R/Cサーボキット「くまちゃんサーボキット」なんて如何?

「くまちゃんサーボキット」は現在のところ架空のキット製品です。

Languages

はじめに

StarBoard Orange 専用拡張基板:R/C サーボインターフェース基板でR/Cサーボインターフェース基板について解説しました。
この文書ではR/Cサーボインターフェース基板を使った架空のキット製品、「くまちゃんサーボキット」についての使用方法について説明します。

同梱物

くまちゃんサーボキットには以下のものが含まれます。
  • R/C Servo I/F Board with 16x2 character based LCD.
  • R/C Servo Motor with gears. (GWS SERVO - S03T 2BBMG)
  • AC-DC adapter (Output capacity : 5V 2.3A)

Box

    Components

    R/C Servo I/F Board

    R/C Servo

    Gears for R/C Servo

    AC-DC Adapter

      準備

      StarBoard Orangeの設定

      LCDを取り外します。
      ピン設定を確認します。

      サーボモータの接続

      サーボモータを写真のように接続します。

      StarBoard Orangeへの取り付け

      StarBoard Orangeに取り付けます。
      サーボ基板のDC入力に付属のAC-DCアダプタを接続します。
      サーボモータの電力はAC-DCアダプタから供給されます。
      これで全体の準備は完了です。
      プログラム
      コンパイル済みプログラムとその他のリソースをまとめたZIPファイルを以下からダウンロードすることができます。
      展開したファイルをmbedのルートディレクトリに展開したらリセットボタンを押します。
      ネットワークの設定が開始されます。
      DHCPサーバからアドレスが取得できたらIPアドレスが表示されます。
      このIPアドレスはmbed上で動作しているHTTPサーバのIPアドレスです。
      それではこのウェブサーバにパソコンから接続してみましょう。
      以下のような画面が表示されます。
      試しにSERVO1のスライダをドラッグして左右に移動させてみましょう。
      スライダの動きに合わせてR/Cサーボが動作することが確認できます。
      ブラウザから制御できるということは当然「アレ」でもやりたくなります。
      もちろんできます。


      デモムービー

      まとめ

      本文書では「くまちゃんサーボキット」に関する解説を行いました。
      関連するサンプルアプリケーションをpublishしました。

      mbedを使えばTwitterから家庭用機器を簡単に制御できます。

      概要

      ここではmbed + StarBoard Orange + 拡張基板を使った活用事例としてTwitterで家庭用機器を制御するデモを御紹介します。
      StarBoard Orange用の拡張基板には赤外線送信回路が搭載されています。
      これを使ってテレビ、エアコン、コンポ、照明など沢山の機器を制御する事が可能です。
      また、mbed + StarBoard Orangeを使えばネットワークの取り扱いも簡単。
      今回はTwitterのつぶやきを拾ってきて特定のメッセージで機器を制御するようにしてみました。
      以下が全体の制御の流れです。

      機能

      • Twitterから呟きを拾ってきて、内容に応じて制御する事ができます。
      • TwitterとのインターフェースにはSuperTweetを使用します。(SuperTweetのアカウントとその設定が必要です。)
      • 今回のアプリケーション例では「Light」という文字列を発見すると、赤外線送信回路を使って照明器具を制御するようにしてみました。

      準備

      プラットフォーム

      ここでは以下のプラットフォームを使用しました。

      機器の準備

      mbedとStarBoard OrangeとExpansion Board Oneを準備します。

      イーサネットケーブルを接続して下さい。

      設定ファイル(SETUP.CFG)

      設定ファイル(SETUP.CFG)をmbedのフラッシュストレージに作成します。
      YOUR_ACCOUNTとYOUR_PASSWORDにはあなたのSuperTweetアカウント情報を入れて下さい。
      SUPERTWEET_ACCOUNT=YOUR_ACCOUNT
      SUPERTWEET_PASSWORD=YOUR_PASSWORD

      プログラム

      以下のプログラムをコンパイルしてmbedにコピーします。
      以上で準備は完了です。

      動かしてみる

      それでは実際に動作させてみましょう。
      起動するとネットワークの設定が始まります。
      設定の結果を確認します。

      動作が始まると以下のような画面になります。
      1行目にはTwitterから取得した回数が表示されます。
      2行目には制御を行った回数が表示されます。

      ここでTwitterのアカウントにキーワードを書き込んでみましょう。
      今回のキーワードは「Light」です。

      制御が完了すると応答がTwitterに書き込まれます。
      どうやらきちんとコマンドを受け付けているみたいです。

      今回のアプリケーション例では、実際に赤外線リモコン信号を送信しています。
      が、私の自宅の赤外線リモコンのコードなのであなたの家では何もおこらないでしょう。(ごめんなさい。)

      まとめ

      • 今回はネットワークから情報を取得して機器を制御する実例として、照明器具をTwitterで制御するアプリケーションを御紹介しました。
      • 今回使用したライブラリとプログラムは全てpublishしてあります。

      2010年10月29日金曜日

      StarBoard Orange - LCD I/F Universal Board

      StarBoard OrangeのLCDインターフェースの所に取り付けるユニバーサル基板を設計してみました。基板の左側にはLCD I/Fから引き出した配線を並べてあります。


      ちょっとした実験をStarBoard Orangeを使って行う場合などに便利。
      MTM06でも販売される予定です。

      2010年10月28日木曜日

      TOPPERS/ASP for LPC

      
      2011年2月23日の記事、3千円で楽しめるARMマイコンとRTOSの世界 (TOPPERS/ASP on LPCXpresso LPC1768)でLPCXpressoさえあればTOPPERS/ASPを楽しめるようにしました。
      
      

      TOPPERS/ASP for LPCをLPCXpresso LPC1768で試してみることにしました。
      http://sourceforge.jp/projects/toppersasp4lpc/

      1. Ubuntu 10.10をVMware Player上にインストール。
      2. 環境構築用スクリプトを使って環境を構築し、コンフィギュレータをビルド。
      3. サンプルプログラムをコンパイルするところまでを確認。

      環境構築用スクリプトはUbuntu 10.4用に構成されています。.bashrcでのPATH設定を一箇所変更する必要がありましたが、それ以外はスムーズに進行。
      次は実機での動作確認ですが、これはまた後日。

      AltStyle によって変換されたページ (->オリジナル) /