2012年10月06日

Nexus 7買ってみました!

話題の? Nexus 7という7インチのタブレット端末を買ってみました〜。
元々日本で発売前も海外の輸入して買うとかいろいろ方法はあったみたいで、欲しいとは思っていたんですが、スマートフォン持ってるし、自宅ではノートPC使うから、タブレットの出番あるだろうか?という思いがありましてずっと買えずにいました。だけど19800円っていう値段を見てしまったので、衝動買いしちゃいました! ^^;

P1120528.JPG

持ってみると、なかなか軽いしいいかも〜。ちなみにGalaxy Nexus(4.65インチ画面のスマホ)と比較すると、画面見やすい!

早速通勤電車で座った時に使ってみました。電車内で使う端末はスマホで充分と思ってたんですが、ことドキュメント閲覧に関して、A4のページに文字がずらっと並んでるようなpdfファイルを読む場合などは、文字が小さすぎて読みづらいと思っていたのですが、Nexus 7では、そのような事もなく、非常に快適に資料を読むのに使えました!
別な端末になりますが、AmazonのKindle touchのような800×600の画面では文字が潰れてしまうような資料でもそうはならず、実用的に使えています。(まだ見たことはありませんが、Kindle Paperwhiteは解像度上がってるらしいので資料読むのとかによさそうですね…。)

P1120529.JPG

さて、とりあえずUSBポートを使って見ることにしました。USBポートから映像を取り出すMHLインターフェースがついている場合、以下のようなケーブルを介することでHDMI端子から映像出力を得ることができます。

IMG_20121006_073748-1.jpg

結果はダメでしたー。対応してないのね、残念。ハード的にもダメなのかなー?

次はUSBホストです。
以下のiBuffaloのケーブルを使用しました。



USBマウスを繋いでみたのですが、試してみるとアッサリ繋がりました!

ただ、ストレージデバイス(USBメモリーとか、SDカードリーダーとか)はそのままでは認識してくれません。
今回は、100円ショップで買ったSDカードリーダを使ってデジカメ画像を見ようとしたんですが、確かにそのままでは認識しませんでした。

IMG_20121005_225215.jpg

Google PlayからNexus Photo Viewerという無料アプリをインストールする事で、サクッと読み込み出来ました。便利便利!
(Galaxy Nexusと同様ですね)

Google Play : Nexus Photo Viewer
https://play.google.com/store/apps/details?id=com.homeysoft.nexususb.viewer&hl=ja

こんな感じ。
アプリはUSB Host APIでマスストレージデバイスを認識し、アプリ内に持たせたファイルシステムからアクセスしているんかな?と理解してます。アプリ内でメディアからのデータを取り出したり出来る作りです。デジカメ画像のプレビュー機能もあり、サクサク動作してくれたので快適でした。動画や音楽の対応もあるみたいですが、まだ試していません。

IMG_20121005_225307.jpg

Eye-Fiも持ってますが、これでサクッと取り込んだほうが手っ取り早くていいかなと思っちゃいました。




iBUFFALO USB(microB to A)変換アダプター ブラック BSMPC11C01BK
バッファロー (2011-11-01)
売り上げランキング: 165


usb dac 内蔵小型 パソコンスピーカー(25W+25W) KS-1HQM
株式会社クリプトン
売り上げランキング: 7322



posted by いしいっち at 08:39| Comment(0) | TrackBack(0) | Android利用関係 | このブログの読者になる | 更新情報をチェックする

2012年09月26日

Propeller gccでpthreadライブラリを使ってマルチタスクしてみる

以前プロペラのgccがあるよ、という話を伺った時、propellerスレッドライブラリあったら面白いねーとか話していたのですが、Pellerduinoのコア(PellerduinoCore)をいじってて、普通にpthreadライブラリあるじゃないかと気づきました。

プロペラのpthread実装がどのようなコードになっているのか、非常に気になるところです。
その前にひとまず、pthreadライブラリを使ってマルチタスクがお手軽に出来るのか?を実験をしてみることにしました。

Propeller_QS.jpg
以下がテスト用に作成したコード。
/*
  LED Blink test for QuickStart board

  Coded by Yasuhiro ISHII
*/

#include 

extern "C" {
#include 
}

#include 

const int pinTable[8] = {
    PIN_LED0,
    PIN_LED1,
    PIN_LED2,
    PIN_LED3,
    PIN_LED4,
    PIN_LED5,
    PIN_LED6,
    PIN_LED7
};

pthread_t th[8];
pthread_mutex_t gpio_mutex;
void synchronized_digitalWrite(int port,int level);

void busywait(unsigned int usecs);

void* thread(void* arg)
{
    int i;

    i = (int)arg;
    pinMode(pinTable[i],OUTPUT);

    while(1){
	printf("thread [%d]\n",i);
	synchronized_digitalWrite(pinTable[i],HIGH);
	delay((i+1)*100);
	synchronized_digitalWrite(pinTable[i],LOW);
	delay((i+1)*100);
    }
}

void synchronized_digitalWrite(int port,int level)
{
    pthread_mutex_lock(&gpio_mutex);

    digitalWrite(port,level);

    pthread_mutex_unlock(&gpio_mutex);
}

void busywait(unsigned int usecs)
{
  volatile unsigned long cycles = usecs * (_clkfreq/1000000);
  volatile unsigned long then = _CNT + cycles;
  while((long)(then - _CNT) > 0){
//      pthread_yield(); 
  }
}

void setup()
{
    int i;

    pthread_mutex_init(&gpio_mutex,NULL);

    for(i=0;i<8;i++){
      pinMode(pinTable[i],OUTPUT);
    }

    for(i=0;i<8;i++){
	pthread_create(&th[i],NULL,thread,(void*)i);
    }
}

void loop()
{

}
Pellerduinoはpthread.aをリンクしてないので、ひとまず以下のMakefileにてビルド。
# Propeller build Makefile
#
# Yasuhiro ISHII 2012
# ishii.yasuhiro@gmail.com

CROSS_ENV	=  propeller-elf-
CC		=  $(CROSS_ENV)gcc
CPP		=  $(CROSS_ENV)g++
CFLAGS		=  -Os -I. -fno-exceptions -mlmm -lpthread -pthread
CPPFLAGS	=  -Os -I. -fno-exceptions -mlmm -lpthread -pthread
LCFLAGS		=  -pthread -lpthread
TARGET		=  target.elf
OBJS		=  main.o
DOWNLOADER	=  propeller-load
DLOPT		=  -r


COMMONOBJS	=  PellerduinoCore.o

OBJS		+= $(COMMONOBJS)
#CFLAGS		+= -Wall -mcog

.c.o:
	$(CC) $(CFLAGS) -c $<
.cpp.o:
	$(CPP) $(CPPFLAGS) -c $<

$(TARGET) : $(OBJS)
	$(CC) -o $@ $(OBJS) $(LCFLAGS)


.PHONY: clean
clean:
	-rm $(OBJS) $(TARGET) $(COMMONOBJS)

.PHONY: purge
purge:
	-rm *~

.PHONY: download
download:
	$(DOWNLOADER) $(DLOPT) $(TARGET)
コードはPellerduinoCoreからの呼び出しになっているので、Arduino同様、setup()→loop()で実行されます。
setup関数内で、I/O操作用のmutexをpthread_mutex_init関数で行った後、pthread_create関数で8スレッド起動しています。digitalWriteは同一ポート資源のコントロールをするので、スレッドからは、mutexで排他性を確保したsynchronized_digitalWriteを呼ぶようにしています。
それぞれのスレッドにそれぞれ1つのLEDを点滅させるのですが、スレッドに渡す引数の値で点滅周期が変化するようにしているので、バラバラの点滅パターンになっているように見えるはずです。
loop関数は空関数で何もしません。

動画はこちら。

なんとなく、Arduinoっぽいコードの枠組み内にpthreadを使用したマルチタスクの処理とか非常に不思議な感じのコードになってますが、以下の動画のように、なんとなくうまく動いてるようです。
複数のcogが使われているのか否かなどは、調べていきたいと思います。
もしかすると、複数cogで実行している場合、gpioのmutexは不要かもしれません。(I/Oの資源も個々に独立しているのなら)

コードは以下のPellerduinoCoreにも入っています。
https://github.com/yishii/PellerduinoCore
Netduino(Arduinoピンコンパチ.NETマイコンボード)
Secret Labs LLC
売り上げランキング: 59733
Pthreadsプログラミング
Pthreadsプログラミング
posted with amazlet at 12.09.26
Bradford Nichols Dick Buttlar Jacqueline Proulx Farrel
オライリー・ジャパン
売り上げランキング: 238987
posted by いしいっち at 22:08| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2012年09月21日

プロクソンの丸ノコ盤買いました。基板切るのにいいかも!!

プロクソンの小型の丸のこ盤を買ってみました。目的は、MDF合板やプラスチック板を切る工作に役立てようと思いまして。

プロクソン ミニサーキュラソウテーブルです。
http://www.kiso-proxxon.co.jp/catalog/cu_00.html#28006

IMG_20120914_204844.jpg

サイズは、結構小さいです。
以下の写真は比較用にSDカードを入れてます。

IMG_20120921_212217.jpg
下にリンク貼りましたが、アマゾンでは9000円以下と、結構安いです。
この丸のこ盤、標準添付のノコギリは「丸鋸刃(荒目)」というタイプで、木加工に適しているようです。
とりあえず、ホームセンターで買ったMDF合板(木の板)を切ってみましたが、簡単にこんな将棋の駒的なものが出来ました^^;
IMG_20120914_211442.jpg

オプションにいろいろと替刃がありまして、その中にダイヤモンドカッターがあり、これは基板の切削が出来るそうです。というわけで、買ってみました!
IMG_20120921_000332.jpg
写真はダイヤモンド刃のと、細目の刃です。

荒目、細目、ダイヤモンドを比較してみました。
IMG_20120921_211709.jpg

装着は、丸ノコ盤の横の蓋をあけるだけです。ここにゴミが入るようになってます。MDF合板切削時のゴミが溜まっています。

IMG_20120921_211402.jpg

装着してみます。添付の六角レンチで取り付けられます。
IMG_20120921_211820.jpg

テストで切るのは写真のような、紙フェノール基板です。これは、感光基板で、失敗したやつです・・・。
IMG_20120921_211853.jpg

サクッと切れました。しかも切削面美しい!
これは基板切りにかなりいいかもー木加工もいいけど基板のサイズを小さくする時などに活用していきたいです!

IMG_20120921_212034.jpg

プロクソン ミニサーキュラソーテーブル NO.28006
プロクソン (PROXXON)
売り上げランキング: 1227



プロクソン ダイヤモンド丸鋸刃 φ60o 【28012】 28012
プロクソン
売り上げランキング: 7047
posted by いしいっち at 22:20| Comment(0) | TrackBack(0) | 工作関連 | このブログの読者になる | 更新情報をチェックする