2012年7月22日日曜日

7/21英語研修とワーク!

こんにちは!まるさ@maruuusa83です!
先週は自由なネットにアクセスできず更新できませんでした(学校では規制で更新できない)。

昨日はうるま市のIT津梁パークにおいて英語研修とシリコンバレー訪問に向けたワークを行いました。


英語研修
前回まで普天間基地にて英語研修を行ってくれていたネイティブのスタッフの方々(日本語は全く話せない)がIT津梁パークまで来てくださいました。
今回はIT津梁パークの説明や沖縄が情報産業に力を入れている理由についてもお話ししてください、とのことでした。(が、実はIT津梁パークのことはよく知らなかった)

「説明をする」というのが非常に難しいことを実感しました。
会話であればノリと身振りでなんとか成り立つのですが、誰かに何かを英語で説明する、というのは経験がなく、また会話と違ってなんともならないことを実感しました。 
英語研修スタッフの皆さんも理解しようと会話してくれました。

その後は近くの漁港にて皆さんで昼食をいただきました。
マグロイクラ丼を食べたわけですが、英語研修スタッフの方々はグロがってどん引いてました(笑) 
生の海産物はやっぱり苦手みたいでしたw


 午後のワーク
午後はSV訪問に向けたワークを行いました。
訪問先やアポイントメントをとる上での確認などを行いました。

これまでの活動を通して、5人で1つのことを行うのは思っている以上に難しいことだと感じています。
情報共有の意識が少しでもほかのメンバーと違えばすぐにうまく回らなくなるように感じます。そのせいで一部のメンバーに負担がかかったり、ミスが起きたりすると思うので、もっと気を付けていきたいです。

ワークも大事でしたが思うこと感じることもたくさんあった一日でした。
これまで以上にリーダとしてチームがまとまるように意識していこうと思った研修でした。



・・・話題が偏りがちなのでもっといろんなことを書きたいです>< 
とりあえずこのへんでw


まるさ

2012年7月8日日曜日

mbed評価用ボードの作成

どうも、まるさ@maruuusa83です!
沖縄は日差しが強くなってきて、何もしてなくても汗が止まらないです;

RPCの紹介をしようと思っていたのですが、今回mbed評価用ボードを作成したのでそちらを先に紹介したいと思います。
RPCの紹介はまたの機会に・・・w

mbedは単独でもいろいろなことができますが、僕はLCDやらLANケーブルソケットとかを多用します。
ブレッドボードにつないで色々やってたんですが、ジャンパワイヤが足りないですし特にLCDに関してはワイヤがごちゃごちゃして鬱陶しいです。
というわけで、評価用のボードを作成することにしました。

今回の目標です。そのへんに落ちてるような部品でこれらを実現します。
1、LCDの実装
2、LANケーブルソケットの実装
3、電源を選ばないように実装(バッテリーやら電池やら色々使いたい)
4、 任意の足に、ワイヤで別の部品を接続できるようにする
5、のちのちUSBソケットを実装できるようにフリースペースをつくる(USBソケットは落ちてなかった)

というわけで大体こんな感じの回路になるかんじ。雑ですいません(汗
そもそも今回の設計で回路図を書いていない(ブログ用に書き下ろした)のでだいぶ適当です。
CADをみて脳内補完してくだしあ()

使用部品
・RG-45モジュラジャック(LANケーブルソケット):J0011D21BNL
ユニバ基盤には合わないので加工しておく(参考:http://www.eleki-jack.com/arm/2010/09/mbed2mbedlan.html
http://akizukidenshi.com/catalog/g/gP-00819/
・LCD:SC1602BS*B-SO-GB-K(H8評価ボードから奪った)
裏側にピンジャックを装着してある
http://akizukidenshi.com/catalog/g/gP-00040/
・三端子レギュレータ:TA4805S(秋月で売ってるセットのやつ)
http://akizukidenshi.com/catalog/g/gI-00537/
・よくあるピンソケットとピンヘッダ(落ちてるやつ)
・35×19の穴の両面スルーホールユニバーサル基盤(落ちてた)
・適当なすずメッキ線とはんだ(落ちてるもので)

そしてこれがCAD(表面)です。
3本もアレしてしまった・・・
手元の基盤に合わせて設計したので必死でした。 (イイワケ)
でもしっかりUSB用のスペースは開けてあります。(というか開いた)

右下の10本はピンヘッダで、LCDを装着します。
7~10番ピンは使いません。右上が1番、左下が14番になってます。

スルーホールは苦手です(大汗

電源入力は結局ピンジャックを使うことにしました。
直接電池スナップつけてもいいと思います。

そしてこれが完成したボード!
(設計のバージョンが古い写真なので上の写真と抵抗の位置が違いますが。)

これでmbedのテストが非常に楽ちんになりました。
このあとUSBのジャックが手に入り次第mbedの直下に取り付けてやりたいと考えています。
というのも、そのうちPC用のタッチパネルとか作ってみたいとか考えているからです。
なんか楽しみになってきました。

このサイズだけどHTTPサーバとして動く、なんて自慢したらものすごく驚かれて楽しいです。
これからはこいつを使ってmbedで遊んでいこうと思います!

2012年7月1日日曜日

mbedでHTTPサーバの構築

こんにちは。まるさ@maruuusa83です。
 暑くてたまらんです。

 Ethernetに接続できるように頑張っていたら、mbedがHTTPサーバになるという噂を聞きました。(mbedの紹介: http://maruuusa.blogspot.jp/2012/06/mbed.html)
52mm*26mmしかない恐ろしく小さいサーバです。こわい。
さらに、クエリ(?)のようなものを組んでmbedをHTTP越しに遠隔制御することもできるようです。こわい。

というわけで早速サーバとして立ち上げてみました。 ルータでローカルネットワークを組み、PCとmbetをつなぎます。PCでmbed内に保存したHTMLファイルを閲覧できれば成功、とします。

 mbed開発はWeb上に大量の情報がありますが、 ライブラリを用いるときなぜかリンクがうまく行かなかったり、なぜかメソッド引数が違う形になっていたりすることが多いので
ImportのProgramsから必要ライブラリがインポートされていそうなプロジェクトをインポートしたほうがスムーズに進みます。

今回は「http://mbed.org/users/donatien/programs/HTTPServerHelloWorld/60fqd」を用いました。
Import画面のImportAsでProgramにチェックを入れるのを忘れないでください。 これをしないと大変なことになります。

このプロジェクトでサーバの立ち上げに必要なライブラリのインポートどころか、プログラムのベースになる部分まで全て書かれています。便利です。
あとはこれを必要な形に書き換えていくだけです。

ローカルネットワークへの接続やリスニングの開始などは既にやってくれているので、
今回プログラム中で必要な設定は以下の項目で済みます。
・HTMLファイルを保存するためのローカルファイルシステムの設定
・設定したローカルファイルシステムへハンドルの割り当て

 実際に設定したソースコードがこれです。
デバッグプリントをLCDに表示させてるあたりが少し異なりますが無視でOKです。

HTTPClientHelloWorld.cpp
#include "mbed.h"
#include "EthernetNetIf.h"
#include "HTTPServer.h"
#include "TextLCD.h" //LCD用

EthernetNetIf eth;  
HTTPServer svr;

DigitalOut led1(LED1);
TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); //LCDの設定

LocalFileSystem fs("webfs"); //ファイルシステムの設定

int main() {
  lcd.cls();
  lcd.printf("Setting up...\n");
  EthernetErr ethErr = eth.setup();
  if(ethErr)
  {
    lcd.cls();
    lcd.printf("Error %d in setup.\n", ethErr);
    return -1;
  }
  lcd.cls();
  lcd.printf("Setup OK\n");
  
  FSHandler::mount("/webfs", "/"); //ここで /webfs をWebパスのルートに割り当てる
//  svr.addHandler("/hello"); //これはとりあえず不要
  svr.addHandler("/"); //デフォルトのハンドラ
  svr.bind(80); //80ポートでサーバスタート
  
  lcd.cls();
  lcd.printf("Listening...\n");
    
  Timer tm;
  tm.start();
  //Listen indefinitely
  while(true)
  {
    Net::poll();
    if(tm.read()>.5)
    {
      led1=!led1; //Show that we are alive
      tm.start();
    }
  }
  
  return 0;
}

これでサーバとして動くことができます。
たったこれだけです。楽勝です。

ところで、mbedにはどうやってLANケーブルをつなぐのでしょうか。
これもまた簡単なんですね。
33~36ピンにRDの±、TDの±があります。LANケーブル用ソケット(パルストランス付)を買ってきて、それぞれをそれぞれのピンにつなぐだけです(雑)。
仕様書を見れば絶対書いてあるのですぐわかると思います。
僕はソケットがブレッドボードに合わなかったので少し手を加えて使いました。

さて
次に、表示するためのHTMLファイルを作ります。面倒なので適当にちょちょーっと書いてしまいます。

index.html
<html>
    <head>
        <title>TEST!</title>
    </head>

    <body>
        <h5>Hello, World!</h5>
    </body>
</html>

ひどくショボいページなのは気にしない。

最後に、ルータの設定。内のデバイスがmbedにアクセスできるように80ポートを開放します。これはルータごとに設定方法が異なるので各自頑張ってください。

これでHTTPサーバが完成しました!!
mbedのIPにブラウザからHTTPでアクセスしてみましょー!
http://mbedのIPアドレス/

こんな感じで地味なページが出たら成功です!
なんの面白みもないです!

次回はHTTPでmbedを制御する方法を紹介します。
RPCと言うんでしょうか。名前はよく知らないです。