作業日誌

title.jpg

目次

メニュー

Nishinoへのコメント

コメントはありません。 Comments/nishino

お名前:

#region(作業計画)

作業計画

XperiaからWindowsにファイルを受信する(Windows)

XperiaからWindowsにファイルを送信する(Xperia)

XperiaからWMPを操作する

ipodとWindowsでシリアル通信する

ipodとWindowsでシリアル通信をしてmp3タグを取得する

ipodとWindowsでBTシリアル通信をする

ipodとXperiaでBTシリアル通信をする

とりあえずここまで。

#endregion

10/07/13(火曜日)

トラ技78Kマイコンとユニバーサル基板のパターンが、同時にやばい数の剥離を起こしたため、涙ながらに直す作業へ。
…もう二度と剥離なんかさせないと心に誓うレベルのしんどさでしたorz

PSoCx78K0.jpg

そして久しぶりに調べて分かったこと。
【トラ技2008年8月号付録企画】付録NEC78K0 USBマイコン基板同等品
…これはポチりたくなってまうではないか。意外に安いし。

まぁ…トラ技2008年8月号が1090円だったことを考えるとあれだが。

そしていつのまにかHIDデバイスとして認識できるようになったみたい。
USBファンクションHIDクラスドライバ
ソースちょこっとしか理解できてないんで、他のデバイスになれるのか不明だが俺のやる気技術では無理そうな感じ。気が向いたらHIDデバイス作ってみるかも。

Windows x64のうんkなドライバ署名のためにUSBデバイスの自作はこれから廃れる一方かもしれないけど、俺頑張れ。超頑張れ。趣味に生きろ。
USBデバイスのオレオレ証明書※1がたまに失敗する理由がさっぱり分からん。
というか、オレオレ署名付きで配ったらライセンス違反なのか?

※1ドライバ開発のためのテスト署名を作成すること。bcdedit /set TESTSIGNING ONでテスト署名使用が有効化される。RemoveWatermarkX64でテストモードの文字は消せる。けれど、BD再生などがテストモードではできなくなるらしい。(BDドライブもってないので確認できない)

ただ署名のある汎用ドライバ(WinUSBみたいな)使えば、inf書き換えだけでおkなはず。
猫 ◆tCHWINGPEIさんもやってるし、たぶん大丈夫。ライセンス違反ではないはず。たぶん。

というわけで、署名のある汎用ドライバを咬ませてから通信すればフツーにUSBデバイスと通信出来ます。

10/07/12(月曜日)

「トラ技78Kマイコン×PSoC」

腐女子脳の皆様こんにちは!
攻めだとか受けだとかぐだぐだ抜かす前に、男なら尻アル…もといシリアル通信するべし。
でも、シリアル通信コネクタも変換ケーブルもねーよorz

というわけで、トラ技78Kマイコンを使ってPSoCとのシリアル通信に挑戦。
もはやレガシーではない!ビバ、脱レガシー。
…でも、ぶっちゃけ78Kマイコン使うほどのことじゃないような。

関係ないけど、今さらkobaさんのグラフィカルなページをさっき見つけて感動。
リスペクトして何かやるかもしれないし、何かやらかすかもしれない。

っは・・・し、静まれ・・・俺の腕よ・・・!!
黒歴史おいしいです^q^

10/07/11(日曜日)

続・printf
cprintfのLCD出力を日本語(半角カナ)に対応させてみた。これでLCDのカタカナ出力が簡単に。データシートにStandard Character Pattern(S0)と書いてあるヤツなら使えるんじゃなかろうか。

全部の記号に対応させようかと思ったけど、それならprintf自前実装したほうがマシ。

#region(簡易版(ス・セの文字が表示できない。))

	//日本語(半角カタカナ)を表示するための小細工。
	//UTF-8は半角カタカナは3byteになり、先頭2byteがEFBDかEFBEになる
	//。~-:EFBDA1~EFBDB0
	//ア~ソ:EFBDB1~EFBDBF
	//タ~ン,゙,゚:EFBE80~EFBE9F
	//表示できない文字 ö,ス,セ
int putchar(char c)
{
	int code = (int)c;
	
	if((code != 0xEF) && (code != 0xBD) && (code != 0xBE))
	{	
		if((0x80 <= code) && (code <= 0x9F))
			code = code + 0x40;

		LCD_1_WriteData((BYTE)code);
	}

	return c;
}

#endregion

簡単に確かめられるように完全版の全コードを。

#region(半角カナ完全対応版)

#include	<m8c.h>
#include	<stdio.h>
#include	"PSoCAPI.h"

int g_UTF8_High_2bytes = 0; //UTF8の文字コードの上位2バイトを納める


	//日本語(半角カナ)を表示するための小細工。
	//UTF8の半角カナは3bytesになり、先頭2bytesがEFBDかEFBEになる
	//。~-:EFBDA1~EFBDB0
	//ア~ソ:EFBDB1~EFBDBF
	//タ~ン,゙,゚:EFBE80~EFBE9F
	//固有2bytes(EFBD,EFBE)に被っている文字 ö,ス,セ
	//このPSoCのintは16bit = 0000h

//UTF8半角カナをLCD用半角カナのキャラクターコードに変換する。
int UTF8_To_S0(int code)
{

	g_UTF8_High_2bytes = g_UTF8_High_2bytes + code;
	
	//ö(0xEF)のコードは表示させない
	if(code == 0xEF)
		code = 0;
	
	//取りあえず,ス,セの文字が来た場合は、UTF8半角カナ固有の2bytes(EFBD,EFBE)    ではないことを確認。
	if((code == 0xBD) || (code == 0xBE))
	{
		//EFBDかEFBEならUTF8のいらない先頭2bytesなので表示する必要なし。
		if ((g_UTF8_High_2bytes == 0xEFBD) || (g_UTF8_High_2bytes == 0xEFBE))
			code = 0;
	}
	
	//タ~ン,゙,゚のとき (LCDキャラクターコード) = (UTF8下位1byte) + 0x40
	if((0x80 <= code) && (code <= 0x9F))
		code = code + 0x40;
	
	g_UTF8_High_2bytes = g_UTF8_High_2bytes << 8;	//00EFだったらEF00mにな る。次の文字のために下位1byteを開けておく。	
	
	return code;
}

int putchar(char c)
{

	int code = UTF8_To_S0((int)c);
	
	if(code != 0)
		LCD_1_WriteData((BYTE)code);
	
	return c;
}

void main(void)
{

	LCD_1_Start();
		
	LCD_1_Position(0,0);
	cprintf("MeRL マイコンブ");
	
	LCD_1_Position(1,0);
	cprintf("リョウリノキホンハサシスセソ");
}

#endregion
※補足:S0はLCDのキャラクターパターンの種類のこと(かな?)
Standard Character Pattern(S0)

どう考えてもグローバル変数長過ぎですねorz

…ソースに直接半角カナで書くなら、マクロで実装したほうがよかった気も。後のこと考えるとビミョーなところだけど。

てか、PSoCデザイナーでコードスニペット使う方法ないかのう…。

10/07/10(土曜日)

PSoCのprintfの使い方が判明。
ただ実装が…。
LCDに出すにはcprintfを使うわけだが、

int putchar(char c)

の関数をいちいち書かなきゃならない。
printfをいろんな出力で使うための苦肉の策なのがよくわかる。苦肉すぎるが。
めんどくせえええええええええええええ!!!!

まぁ、仕方ないと思ってネットで調べるとstrncpy使ってるのばかり。
ちょwww printf使う程度のことにstring.h使うとかやってらんねぇwwww

…というわけでcsprintfをいろんな方法で実装してみた。
もっといい案を教えてエロい人!

#region(BYTEキャスト版)

#include	<m8c.h>
#include	<stdio.h>
#include	"PSoCAPI.h"
 
int putchar(char c)
{
	LCD_1_WriteData((BYTE)c);
	return c;
}

void main(void)
{
	FLASH char* string = "HelloWorld";


	LCD_1_Start();
		
	LCD_1_Position(0,0);
	cprintf("Merl");
	cprintf("%c", ':');
	cprintf(string);	//cprintf("%s", string)の代わり
	
	LCD_1_Position(1,0);
	cprintf("%d:", 16);
	cprintf("%o:", 16);
	cprintf("%x:", 16);
}

#endregion

#region(csprintf版)

#include	<m8c.h>
#include	<stdio.h>
#include	"PSoCAPI.h"
 
int putchar(char c)
{
	char str[] = " ";
	csprintf(str,"%c",c);
	LCD_1_PrString( str );
	return c;
}

void main(void)
{
	FLASH char* string = "HelloWorld";


	LCD_1_Start();
		
	LCD_1_Position(0,0);
	cprintf("Merl");
	cprintf("%c", ':');
	cprintf(string);	//cprintf("%s", string)の代わり
	
	LCD_1_Position(1,0);
	cprintf("%d:", 16);
	cprintf("%o:", 16);
	cprintf("%x:", 16);
}

#endregion

#region(strcpy版)

#include	<m8c.h>
#include	<stdio.h>
#include	<string.h>
#include	"PSoCAPI.h"
 
int putchar(char c)
{
	char str[] = " ";
	strncpy( str , &c , 1 );
	LCD_1_PrString( str );
	return c;
}

void main(void)
{
	FLASH char* string = "HelloWorld";


	LCD_1_Start();
		
	LCD_1_Position(0,0);
	cprintf("Merl");
	cprintf("%c", ':');
	cprintf(string);	//cprintf("%s", string)の代わり
	
	LCD_1_Position(1,0);
	cprintf("%d:", 16);
	cprintf("%o:", 16);
	cprintf("%x:", 16);
}

#endregion

%sはstrncpyの方でも使えなかったので、%sが使えないのは仕様にしておく(キリッ
これで使う容量減ったよな…?(チラッ

BYTEキャスト版csprintf版scrcpy版
ROM 13% (4101/32768)ROM 14% (4335/32768)ROM 14% (4367/32768)
RAM 3% (37 bytes)RAM 3% (39 bytes).RAM 3% (37 bytes)

完全に自己満足レベルでしたorz

%s使いたい時は自分で実装するしかないっす。

printf実装はここ参考でおk
これなら%sがprintfで使えるはず。

printf()でのfloat使用方法

ぶっちゃけ、この程度の差なら、個人の好きな方法で良い気が。
特に問題がないようなら、自分はBYTEキャスト版で行きます。

10/07/09(金曜日)

車でXperiaを充電しようと思った。
あれ?USB電源からXperia充電できねぇorz
電圧測ると5V出てますね…。分かんねぇ、はっはワロス。
とか思ってググると3秒で疑問氷解した。

Xperiaの充電はD+とD-が短絡してないとできないらしい。
充電器ならD+とD-が短絡してても問題ないのでUSBカーチャージャを改造。

CAR-CHR1.jpgCAR-CHR2.jpg
改造前改造後

動作確認したところ、ちゃんと動いた。おkおk

マイコンブはiPhoneユーザーの方が多いけど、俺はSony信者&Google信者として孤独に闘い続ける。

…ipadホシイヨー

10/07/07(水曜日)

最近さくさく更新してる。ちょっと感動。
さっそく昨日の自分に突っ込み。S-8100BってVssをGNDにつないでもいけるんじゃね?
データシート見たら特に問題ない感じが。ネットで検索したところ普通にGNDにつないでる人もいたのでなんとかなりそう。

今日はLCDの調整にチャレンジ。
いままでにつくった回路はこんな感じになっていまっする。
PSoC_circuit.jpg PSoC_circuit_back.jpg

日本語(半角カタカナ)の表示に手間取ったのでメモ。
普通に
LCD_1_PrCString("アイウエオ");
とか書いたら、思いっきり文字化けしました。

【必要なヘッダー】
stdio.h

【カタカナ文字列の配列】

char str[ ] = {0xcf, 0xb2, 0xba, 0xdd, 0xcc, 0xde, NULL };

※自分の使っているLCDで「マイコンブ」の文字列となる。
 stdio.h をincludeしないとなぜかこの形の配列が宣言できない。イミフ。情報求む。解決。追記参照。

さくっとこのページのタイトル的なモノを作ってみたのでソースあげ。

10/07/10:修正

#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules

void main(void)
{
   // Insert your main routine code here.
	
   char str[ ] = {0xcf, 0xb2, 0xba, 0xdd, 0xcc, 0xde, 0}; //文字列「マイコンブ」の宣言
	
   LCD_1_Start();
	
   LCD_1_Position(0,0);		//LCDの文字列の始点を決定
   LCD_1_PrCString("MeRL ");           
   LCD_1_PrString(str);		//上の命令と合わせて「MeRL マイコンブ」と表示される
	
   LCD_1_Position(1,7);
   LCD_1_PrCString("nishino");
}

もうマイコンペの期限が来てもうた。
そこでバーサライタ作ってたけど、距離センサー手に入ったのが今日です。

とりあえずいつものやっておこうか。

orz

10/07/10:追記
NULLが標準で実装されてないことを忘れてたorz
char str[ ] = {0xcf, 0xb2, 0xba, 0xdd, 0xcc, 0xde, NULL }
そりゃstdio.hないとコンパイルで引っかかる。
stdio.hを見たところ、

#define NULL 0

になっていので0でおkみたい。

10/07/06(火曜日)

画像張りテスト。
cy8c29466.jpg
できた。MiniProgでPSoCに書き込むため、最低限必要な配線の対応図です。

『はじめてのPSoCマイコン』の温度計を作成しようと思ったら大学にLM35ないじゃんorz
というわけで、S-8100Bで代用する方法を考える。
LM35がVs/Vout/GNDであるのに対し、S-8100BはVdd/Vss/Vout
GNDの場所をVssに変更してP0[7]に対応させる。あとはテキトーに説明書見ながら配線すればおkな気がする。

というか、リファレンス電圧いるけどPSoCで出せるの?とか思ったら普通に出せるのね。
PSoCからリファレンス電圧を出す方法→ここ
てか、本のコラムページに2ページまるまる書いてあった。
ACBブロックはアナログ・バス出力しないときはリファレンス電圧出せる。そうなのか!スゴス。全然PSoC使いこなしてないですねorz

俺の脳みそではプルアップ抵抗(S-8100BのCMOS出力バッファの出力インビータンスが高いらしい)がいるかどうかぶっちゃけ分からん。いるなら後で実装。
誰か作ったことある人情報お願いします。

ここより、あんまりマイコンに関係ないメモ。
F5 Networks VPN ClientとUT-VPNサーバを共有したいフォルダのあるパソコンに入れると、
金沢大学内でも、結構簡単に家のPCとWindows標準のファイル共有ができる。

【仕組み】

F5 Networks VPN Client金沢大学内LANと家PCをVPN接続
UT-VPN金大のプライベートIPを取得できればこっちのもの。学内ルータをVPN接続でさらに飛び越える

仮想化してあるDVDを学校で見ようとかしちゃ…回線に負担がかかるのでやめたほうがいいと思われ。どのみち、軽くないと回線速度的にカクカクになるだろうし。

用法・用量を守って正しくお使いください。

10/07/05(月曜日)

トラックに当て逃げ?されて死ぬかと思った。
正確には5m先で停止後、中からパンチパーマのおっさんが出てきて「テメェ!さっきウィンカーry」
現実ヤバい。俺の心がブロークン。先生!涙で曇って基板が見えません!

それはさておき、すっかり忘れてたマイコンペ。七月中のいつだろ?と思ってみたら明後日だったorz
…間に合うのか?

取りあえず、半固定抵抗を手に入れた俺は、嫌な現実を忘れてLCDの実装をしていた。
『はじめてのPSoCマイコン』やり始めたばっかりだけど、ホント凄いぞPSoC。
方形波をバンド・パス・フィルタを通して正弦波をつくる(方形波をフーリエ変換すると奇数次の高周波の和になるので)わけだが、スイッチト・キャパシタ・フィルタがPSoCだけで実装できる!
つまり、PSoCさえあれば正弦波出せる。SUGEEEEE

でも、家にオシロがないので実装したけど波の形見れないorz

そしてアマゾンで頼んだPCカメラがやっと届いた。これでOpenCVとPTAM使ってアザミちゃんを金沢大学に…

10/07/04(日曜日)

P0[0]からポートがあるの忘れてた。
接続コネクタの足を一個ずらさないと…。

ところで画像を張ってみるテスト。

…出来なかったorz

悲しすぎるのでチラシの裏。

最近のマイブームはWizardry。
ヤバイ。Wizardryヤバイ。まじでヤバイよ、マジヤバイ。
Wizardryヤバイヤバイ。
まず古い。もう古いなんてもんじゃry…と書き出しそうなほど。
PS3版WizardryはPS3の性能を無駄にしまっくてるシンプルさ。
やばいこのままだと二次元に乗っ取られる。俺の現実が二次元に乗っ取られる!
ヤバイ。むしろ、俺がヤバい。激安で売られてるアマガミの前で本気で悩んだりし始めるかもしれない。
アルトネリコ3を買うか悩んでる高校生の横で、ホワイトアルバムを平然とレジに持っていくサラリーマンくらいヤバい。その横に俺も加わって世界のダメ縮図を作ればいいんですね分かります。
果たして俺が夢を見て二次元になったのか、あるいは二次元が夢を見て俺になっているのか。我ながら意味が分からない。

10/07/04(土曜日)

この前の半田の続きをやり始めたら半固定抵抗(10KΩ)を頂き損ねていたことが判明。
というか、画像張る気まんまんでやり始めたが、いつまでたっても先輩に管理者パスワード聞けない。来週こそ合えるはず。

10/06/26(土曜日)

日本語参考データシート
CY8C29664

XRESは外部リセット(external reset)の略だとさっき知った。
基盤基板さくさく組んで画像上げようと思ったら管理者パスワードだと…!?

orz

久しぶりに半田付けしたらイモすぎてフイタwこまけぇこたぁいry
小松原先輩のような半田超絶技巧に挑戦するしかないのか…。

10/06/14(月曜日)

BTライブラリの作成に行き詰ったので改訂 はじめてのPSoCマイコンを買って試してみることに。
…秋田先生いないじゃんorz
というわけで、先輩から基盤を借りて試してみた。のっけからポート番号を勘違いして躓く。しかし、PSoCフリーダム過ぎる。パーツ少なっ!っていうのが本音でした。

10/05/20(水曜日)

Google Apps Education Editionにstu.kanazawa-u.ac.jpがあることが判明。
金沢大学で誰か何かやってるのか!と思ってさっそく登録。
…ん?三人………。
何もないですねハイ。俺も含めて三人とか悲しす。
あー、と思ってアカウント削除しようかと思ったら管理者権限がないとできないとな!?
しかも管理者誰か分からねぇw 俺m9(^Д^)プギャー
…そんなわけで、Technical notesというサイトを腹いせに開設。
気になるバイオ関連の情報とかマイコンに関係ないプログラム解析技術とか載せてく予定。完全に蛇足。
もちろんGoogle Apps Education Editionのstu.kanazawa-u.ac.jpドメインに登録した人だけ見れる予定。三人とか寂しすぎるだろorz
みんなGoogle教のGoogle信者になればいいと思うよ。思うよ!
そして管理者の人連絡下さい…というかもっと機能充実させてくれorz

10/05/14(金曜日)

見つけたサンプルが素晴らしいのでそのまま公開したい衝動に駆られる。
けれど、後学のためとか著作権とかあるので、我慢して泣きながらガリガリ書く。
昨日の俺が公開するとか言っちゃったのでやるしかない。
激しく公開。いや、激しく後悔。
テストも近いので時間かかるんだぜ。急いでる人は参考にしたリンクから飛んで自分の目で確かめてください。いや、ホント。

水面下でAZAMI計画が進行中…。進歩状況2%。

10/05/13(木曜日)

Bluetoothデバイス間通信を開発をするための準備ができたので予告。
これ書かないとまとめるの面倒になりそうな気がするので。

もしかしたら801.11nのアドホック通信に鞍替えするかもしれない。
どっちにしろBluetoothでOPPプロファイルを使った通信やwiiリモコンと繋ぐ?サンプルぐらいは載せるので期待してて下さい。頑張れよ俺。
頑張って…C#とC++とJAVAでサンプルは書くけれど、本格的な開発はJAVA上になりそう…。

10/05/09(日曜日)

komatsubaraさんの『WiiRemoteGoogleEarthを遊んでみた』を見て黒歴史を思い出した。
そのころはここのサンプルくらいしか知らなかったので、メガネのふちに赤外線LEDを(電源はボタン電池)で取り付けるアクセサリを作って疑似3D液晶+mmviewerで若気の至りに挑戦していた。
(完全にこの動画この動画のパクリです)
そしてメタセコの作業用にこんな感じのプラグインを作ろうとして挫折。
絶望した俺は拡張現実という名の2.5次元に逃げるため、HandyAR(マーカーレスで手のトラッキングができる)を使ってイリュー(省略されました・・全てを読むにはここを押してください)

リアルタイムレンタリング(第2版)の本には本当にお世話になった。リアルタイムレンタリングと書いてあるけれど、3D技術について1から10まで教えてくれるすごい本。

   ,. "゙ヽ.          ,. "¨゙ヽ
  i. r‐ 、,. '''"¨ ̄ ̄¨丶、r.‐、. i
  ゙、 .>'´ __          ヽ、' .ノ
   /   ´ ̄`   '¨¨¨゙ヽ   ヽ'
.  /    ●     ●     ゙、
. ,'       _            ',        変態じゃないよ!
. i      i´   ヽ         i        仮に変態だとしても
  i   __...>-、‐'"      ,'        変態という名の紳士だよ
.. ',/ 、    _ハ、_...   /
 /  、 丶‐''"-ニニ´      /
./    ヽノ         /
  -、__ノヽ、‐-  --‐‐'''" \

10/05/08(土曜日)

生協パソコンにVS2005入ってると思ったらリモートデバッグしか入ってないじゃないかorz
SP1統合パッケージを作ったが時間かかりすぎw手順まとめたんで誰か詰まった人は参考にしてみてください。けど、JAVE使いならEclipseだしVS使うにしてももう2010使うか…。Chromeブラウザの開発するなら別だが。
とにかく開発が可能になったんでBluetoothの情報をまとめ中…。

10/05/06(木曜日)

作業環境

とりあえずマイコン作業環境を整えてみた。

回路設計 :TINA for Windows ver7.0.26.16 SF(Japanese Book Version)
PSocツール:PSoC Designer

Pukiwikiって標準で#regionとか表組み自体の位置移動とかできないのかorz

目標!

iPod 5G 80GBとxperia X10で無線通信とかできればいいなぁ…。
とりあえず妄想垂れ流しで構想を練る。

【動機】
Xperiaの容量が1GB+16GBなのでぶっちゃけ十分な気がしないでもないが…iPodが80GBもあるんだったら外部ストレージとして使ってみたい。ネトラジを保存して聞くためならきっと80GBくらいはいるのでそういうことにしよう。

え?Media Go?普通の人はみんなiTuneしか使ってないんだぜ…。

【構想】
USB接続…Xperiaにホスト機能ないorz
無線LAN接続…学校の無線LANの接続方式がIEEE802.1x。OS的には対応しててもXperiaが対応してNEEEE。iPhoneじゃない俺涙目(SONY対応してくれ!もしくは大学がWPA-EPAにしてくれorz)

…Bluetoothしか残ってないじゃないか。
…Bluetoothしか残ってないじゃないか。(大事なことなので二回ry

【大まかな手順の妄想】
iPodのDockにBT通信モジュール差し込む

PSoCから大宇宙の意思をDockに送る。

iPodをAiR(AdvancediPodRemote)モードで起動

BTでiphoneとXperiaがシリアル通信

Xperiaから操作(mp3タグ情報とかも受け取る)

Xperia or iPodで音楽再生。

ついでにXperiaから日本語で曲名検索とかできればなお良し。
(Xperia内に曲リストを作成して検索→曲の絶対番号指定でできそうな気が…?)

【完全なる妄想】
ファイルストレージとして使うにはiPodLinux上にBTのファイル送信機能つけてシリアル叩けばできる雰囲気が醸し出されるような気もしないでもない。卒業論文でもないのにそこまでできる気がしない。というかiPodLinuxはアップル的にOKなのだろうか。黒いネズミに消されるくらいやばいんでないだろうか。

【直面しそうな問題】
・通信速度
・バッテリーの持ち
・技術不足
・やる気の枯渇


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS