wordpress


WordPressというのがありますが、ちょっと練習中です。
WordPressはオープンソースのWEBサイト製作ツールで、一番ライトかつ実用的なCMS(コンテンツマネジメントシステム)の一部として重宝されており、いろいろな企業サイトでも使われています。



普段から、ロボットボード関連の配線図とか使い方のコツなどをパッと見られるドシンプルなノートがあったら良いなと思っていたので、試しに当ブログの過去記事で大事なポイントをWordPressにまとめ直してみようと思っています。

http://hobbyrobot.wpblog.jp
まだ内容はデタラメですが、↑のようなものを拡充していく予定です。引用の図も書き直します。完成すれば少なくとも自分にとってはたぶんかなり便利なサイトになります。
スポンサーサイト

テーマ : 自然科学
ジャンル : 学問・文化・芸術

DLNA構築の準備


nasneを購入したのに接続方法がわからず1年以上寝かせていました。。。

引っ越し先での快適なDLNAを構築すべく、まずは今住んでいる所のLAN環境を見直してみます。
DLNAというのはDigital Living Network Allianceの略で、家電、PC、モバイル端末を繋げていくという基準です。
録画した番組や写真をどの機器からでもみれるようになったりするようです。




マンション全体で契約した光回線サービスをずっと使っているのですが・・・各部屋にあるLANコンセントに有線LANを接続すると一度に1台ずつしか有効にできないという謎仕様でした。特に困ることもなかったので、その謎を寝かせたまま14年も住み続けてしまいました。

lanmoto.jpg

調べてみると、デフォルトの配線は上記のようになっていました。
種明かしを見れば実に簡単なことで、根元をスイッチングハブで分岐されていたのでルーター機能が不在で、そのため1台ずつしか繋げなかったというわけです。
DLNAを使うのであれば有線LANが各部屋同士で繋がるようにおきたいところです。




ここでLAN用語のおさらいです。

①IPアドレス: 無線LANで使う機器認識番号。インターネットおよびLANに参加する機器すべてに一つずつ必要。
②ONU: 光回線などのインターネット回線をLAN用の信号に変換する機器。ルーターの機能を持つものもある。
③ルーター: 複数の機器を接続できるようにIPアドレスを発行し配れる機器。この先には複数の機器を繋げられる。
④無線ルーター: 上記③のルーターの機能に無線の機能が加わったもの。
⑤ブリッジモード: 上記④の無線ルーターでルーター機能を無効にした使い方。
⑥ハブ/スイッチングハブ: LAN信号を増幅して分岐させる機器。スイッチングハブの方が賢い。IPは発行しない。
★注意すべきこと: ONU以降にルーターを2つ以上繋げてはならない。

という感じでしょうか。それぞれの役割が重複していたりするのでゴニョゴニョしますよね。
これで概要が理解でき、アタマの中もだいぶスッキリ整理できました。




さっそく、整理した知識をもとに、マンションのLANを再構築してみます。

lanafter.jpg

下駄箱の中にあったデフォルトのハブを無線ルーターに入れ替え、各部屋の無線LANコネクタそれぞれに機器を接続できるように改めました。さらにブリッジモード(APモード)の無線LANポイントも足してみました。引っ越し先が鉄筋4階の中古物件なので各階にアクセスポイントが必要になる見込みです。
テストしてみたところ、MacBookからはONUと直結した無線ポイント、ハブの先の無線ポイント、どちらからでもnasneの中身にアクセスできることが無事確認できました^^




iPhotoに入っている写真をどうするかとか、バックアップ体制をどうまとめるかなど、いくつか課題が残りますが、
とりあえず家庭内LAN環境については目処が立ちました。
リビングのメディアプレイヤーをどうするかという問題もありますが、値崩れした中古PS3を購入して使うという手も魅力的です。

テーマ : 自然科学
ジャンル : 学問・文化・芸術

わからないことメモ


IMG_0258.jpg

五月人形の兜飾り。JO-ZEROの頭部が乗っていますが兜じゃなくて侍ロボットの上半身みたいでカッコイイです。
我が家の男児は全員プラレス三四郎やアクトオン!の読者です。



飛鳥山に行ったり、近所で釣りをしたり、近所のアスレチックに行ったり、新居で寝泊まりしてみたりと近所づくしで安上がりのGWです。リフォームで処理すべき案件が多いことや、大出費に対する備えだったりもします。
気持ちの上ではロボット作りを進めていますが、ロボット作りの環境を作りを進めている段階です。ちなみに家族サービスをすべき休日に本当にロボットを作っていると家族にめちゃ怒られます。



工作室作業等でのわからないことメモ。積み残し部分。

【方針】
・塗装ブースは作る。1畳分飛び出したスペースに排気穴を設けて塗装ブースにする。
・作業テーブルにも排気穴を設ける。はんだ吸煙機として。
・排気穴の直径は100mの予定。
・穴以外はDIY。
・ファンは強力なもの(山羊電気のSan Aceシリーズ)を想定。
・吸気口は設けず、窓開けで対応の予定。
・既存の備え付けテーブルは一部いかす。突板シートでなんとかする、もしくは新規に制作する。
・子供部屋のパーテションや隙間家具などもある程度自作する。
・映像サーバー関係のシステムを構築する予定。
・防犯カメラも設置の予定。
・ネットの環境も各フロア整える予定。

【わからないこと】
・排気穴の直径は100mの予定だが、San Aceの強力なものは175mm径。どうする。
・排気穴は開けてもらうとして、どういう状態になればよいのか。ダクトの継手などはどういうものがあるのか。
・排気穴の断熱用のシャッターはどうする。理想を言えば壁の外側に1枚、内側に1枚、ワンタッチで開閉したい。
・排気穴へのファンの取り付けはどうする。ちょうど良い器具はあるのか。
・吹き返し対策どうする。
・補助ファンは必要かどうか。
・ヒューム用のフィルタどうする。
・電源の配線どうする。風量調整はどうする。どこにつける。
・排気穴の外壁側は、ベントキャップでよいのか。
・ベントキャップの下あたりに水を張りたい(フィルタを抜けた塗装を付着させる)が、どうするとよいか。
・キッチンには吸気口が必要かどうか。フィルタはどうする。

・突き板シートの張り方どうする。下地処理どうする。サンダー機はどれがよいかまた使いこなせるか。
・突き板シートや家具はオイルフィニッシュが良さそうだがどうする。何で練習する。
・オイルフィニッシュと表面保護をよい感じに両立できる方法ないか。
・突き板シートを貼った場合、無垢材で縁を作ると良さそうだがそれどうする。
・自作家具と突板と既存家具、建具等の色合わせどうする。
・既存端材を再利用する際に、上手に切るにはどうする。ホームセンター等のサービスor自分で丸ノコ。
・ホームセンターで丸ノコ+ゲージを利用できるか。
・丸ノコを自分で買う際に、どんな箇所でもミスなく安全に直線を切れる方法があるか。

・最適なネット接続業者選定。
・1台のルータから各階へのネット接続。有線LANを混在させて無線LANを接続する安くて無駄のない組み方。
・防犯カメラの電源や録画サーバー等の考え方。



まだまだわからないことのほんの一部です。
何がわからないかわからないことを洗い出すだけでも一仕事。
とにかくわかりたいことだらけです。

テーマ : 自然科学
ジャンル : 学問・文化・芸術

シリアル書き込みスケッチのユーザー関数化その1


VS-RC003をArduinoのシリアル経由で操作するプロジェクトがまだ続いています。
一気に最後まで作ってしまうべきかもしれませんが、Arduinoの練習がてら完成まで少しずつ前進中です。

今回新たに試したことは、
・ユーザー定義関数を使う。
・ストリング関数を使う。
・配列、文字列、16進数などの相互変換を行う。
のあたりです。



今回定義したユーザー関数は、
VSRC_WnV(x,y)
です。
xには変数番号(0〜255)
yには数値データ(0〜65535)

をそれぞれ入れて使います。
変数番号(たとえばコントローラの接続設定は240)と数値データ(たとえばゲームパッド未接続なら0)を整数で指定して実行すると、アドレスと16進数リトルエンディアンを自動的に作成して書き込んでくれるという、VS-RC使いにとってはなかなか便利な関数です。
書き込みに成功すればtrue、失敗ならfalseを返してくれるようにしてみました。



今回はまだテストで、シリアルモニタで結果を見られるようになっています。
この後、このユーザー関数はarduino nanoなどでも使えるようにハードウェアシリアル(0番1番ピン)用に作り直し、モニタリング機能も排除する予定です。
また、コントロール関連専用のユーザー関数VSRC_CONTROL()や、読み込み専用のVSRC_READ()、ベリファイなしの書き込みVSRC_WRITE()なども同時に作成予定です。
自分的に難しいところは超えたので、あとは作業をしていくだけです。
一通り完成し、実際にロボットを安定的に動かすテストまでできれば、自分的にはVS-RCのシリアルは攻略完了となります。



以下、スケッチです。

// VS-RC003のシリアルを書き込み、ベリファイする関数のモニタリング付きスケッチ。
// シリアルでデータ書き込みコマンドを実行した後、該当箇所のデータを読み込んで、
// 書き込みが成功しているかを確認する。
//
// VSRC_WnV([変数番号(0~255)],[数値データ(0~65535)]) という形式の関数。
// WnVはWrite and Verifyの略。
// ユーザー変数は変数番号64~127。
// 変数番号0~63、128~155、238,239,248~250,253は読み込み専用のため書き込みはエラーとなる。
// 書き込んだ文と読み込んだ文が合致して入ればtrue、合致していなければfalseを返す。
//
// VS-RC003へはArduinoのシリアル1のRX,TXを接続。(MEGA,Leonardo,MICROに対応。UNO系は非対応。)

void setup() {
Serial.begin(115200); // 115200bpsでPCモニタ用ポートを開く
Serial1.begin(115200);// 115200bpsでVS-RC003通信用ポートを開く
}

void loop() {
bool w = VSRC_WnV(67, 3563); //ユーザー関数VSRC_WnV()を用いて、VSRC-003の変数番号64番に、3563を書き込む。
if (w == true) {//書き込みの成否を判定して、結果を表示。
Serial.println("Veriy OK!");
} else {
Serial.println("Write ERROR!");
}
Serial.println();
//while (1);
}


// ■ ■ ■ ■ 以下ユーザー関数 VSRC_WnV() の定義 ■ ■ ■ ■

bool VSRC_WnV(long vsrc_address, int vsrc_value) {

//■■■■変数の定義など■■■■
bool Loading = false; //必要データ読取中フラグ
char vsrc_value_buf[4];//書き込む数値の配列
vsrc_address = vsrc_address * 2 + 2099200;//変数番号のアドレスへの変換
String vsrc_address2 = String(vsrc_address, HEX);//アドレスの文字列への変換
String vsrc_value2 = String(vsrc_value, HEX);//代入数値を16進数表記の文字列に変換

//■■■■書き込み用の変数を配列に入れる■■■■
int i = 0;//代入数値(16進数表記4桁)を配列に入れる際のケタ番号
int i3 = 3 - (vsrc_value2.length());// 16進数4桁未満の時に、配列に0を何回入れるか
while (i <= i3) {//16進数4桁の冒頭が0で始まる場合、配列に0を入れて埋める処理
vsrc_value_buf[i] = 0x30;//配列に0を入れる
i++;//配列の番号を足す
}
int i2 = 0;//配列に入れる元の文字列の配列番号
while (i <= 3) {
vsrc_value_buf[i] = vsrc_value2.charAt(i2);//16進数4桁の文字列を、配列に入れる。
i++;//配列の番号を足す
i2++;//文字列の番号を足す
}
vsrc_value_buf[4] == 0X00;//ヌル終端を追加

//■■■■書き込み用のシリアル文をリトルエンディアンで組み立てる■■■■
String vsrc_write_conposit = String ("w " + vsrc_address2 + " " + vsrc_value_buf[2] + vsrc_value_buf[3] + " " + vsrc_value_buf[0] + vsrc_value_buf[1]);

//■■■■実際の書き込み■■■■
Serial.println("Serial1_write_command:");//モニタ用。
Serial.println(vsrc_write_conposit);//モニタ用。書き込んだ文字列を表示する。
Serial1.println(vsrc_write_conposit);//実際に読み込み用のライト文を送信。

//■■■■書き込み完了確認■■■■
delay(38);//18以下だと失敗する。すこし余裕をもたせるべき。
if (Serial1.available() > 0 ) {//受信シリアルのプロンプト「#」を待つ。
for (int i = 0; i <= 64; i++) {//「#」を受け取るまで64文字まで待つ。普通は1発目で見つける。
char data = Serial1.read();
if (data == 0x23)//「#」を受け取り次第抜ける。
{
i = 64;
}
}

//■■■■ベリファイ用のシリアル文を送信する■■■■
String vsrc_read_conposit = String ("r " + vsrc_address2 + " 02");//書き込んだアドレスの数値を読み込むための文章組み立て
Serial.println("Serial1 vsrc_read_command:");//モニタ用。
Serial.println(vsrc_read_conposit);//モニタ用。ベリファイ用のシリアル文
Serial1.println(vsrc_read_conposit);//ベリファイ用のシリアル文を送信する。
delay(30);//このディレイが小さすぎると失敗しやすい。

//■■■■ベリファイ用の読み込み文を組み立てる■■■■
char VSmsgs[64];// 読み取ったシリアルを入れる配列を宣言。
if (Serial1.available() > 0 ) {
int i = 0; //文字配列カウンタ
while (1) {
char data = Serial1.read();
VSmsgs[i] = data; //文字配列に文字を一個入れる。
if (VSmsgs[i - 1] == 0x0a && VSmsgs[i] == 0x23)// 「[LF]」と「#」が連続している文字列を探す。
{
Loading = true; //必要データ読取中のフラグを立てる。
//取得するデータの冒頭を「#」から「w 」に変換して書式を合わせておき、あとで比較できるようにする。
VSmsgs[0] = 0x77; //配列の1文字目にwを入れ直しておく。
VSmsgs[1] = 0x20; //配列の2文字目にスペースを入れ直しておく。
i = 1;
}
if (VSmsgs[i] == 0x0D && Loading == true)//必要データ読取中かつ「CR」が来たら読取終了。
{
Loading = false;
break;
}
i ++;
}
VSmsgs[i] = 0x00;//データにヌル終端を追加

Serial.println("serial1 read data:");
String VSmsgssrg = String(VSmsgs);//読み込んだ配列を文字列に変換
VSmsgssrg.trim();//変換時に発生した空白文字をトリム
Serial.println(VSmsgssrg);//モニタ用。読み込んだデータ(#をw に書き換えたもの)を表示する。

//■■■■書き込んだデータを読み込んだデータを文字列で比較する■■■■
bool Verify = vsrc_write_conposit.equalsIgnoreCase(VSmsgssrg);//大文字小文字を無視して文字列を比較する。合致ならtrue
return Verify;
}
}
}




実行したシリアルモニタは下記のようになります。


Serial1_write_command:
w 200886 eb 0d
Serial1 vsrc_read_command:
r 200886 02
serial1 read data:
w 200886 eb 0d
Veriy OK!

テーマ : 自然科学
ジャンル : 学問・文化・芸術

プロフィール

二名川(ニナガワ)

Author:二名川(ニナガワ)
ホビーロボットをレトロゲームが発展したものと捉えて楽しく遊び倒します。
子供が夢を見ている時間帯に稼働します。

宣伝:電子出版しました。
「コンソロイド ガイドブック」
46107_CONSOLOID_GUID_FACE_200.jpg





■作成中の機体
汎用ヒト型決戦遊具 ~RX計画~
RX-7.5 ゼロタンク
RRf-0.6 ゼニィ
RXM-7.9 ゼムネス
RX-7.5R 量産型ゼロタンク
RX-7.5Fp ファミタンク仮設1号
RX-7.7 ゼロキャノン
RX-7.8 ゼログレイ
SMS-0.1 ゼロライナー
以下続く

ブログ内検索
最近の記事
最近のコメント
カテゴリ
月別アーカイブ
リンク