マイコン始めました

自作パソコンに飽きたのでマイコンを始めました。マイコンというとアセンブリでガリガリとプログラムを書いて専用のプログラマで ROM に焼いて周辺回路を作るようなイメージでした。でも、最近は Arduino という Atmel の AVR マイコンを使ったマイコンボードはC言語風のProcessing/Wiring 言語を実装した専用の開発環境を使って、 USB で接続してプログラムを書き込めるので相当使い勝手がよくて、作りたいと思った時に作りたいものがすぐ作れる。自作PCは飽きたけれど、何かハードをいじりたい人はマイコンがお勧めです。


加速度センサーを使ってフルカラー LED を制御してみました。
水平状態で緑色、プラス方向の傾斜で赤色、マイナス方向の傾斜で青色の LED が点灯します。PWNで水平状態から離れるほど LED が明るく点灯します。


水平状態


傾斜状態水(X = プラス方向 Y = マイナス方向)


Sketch

// 加速度センサー接続ピン //
int xPin = 2;
int yPin = 1;
int zPin = 0;

// LED接続ピン //
int LEDRedX = 3;
int LEDGreenX = 6;
int LEDBlueX = 5;
int LEDRedY = 9;
int LEDGreenY = 11;
int LEDBlueY = 10;
int LEDStatus = 13;

// スイッチ //
int ResetSW = 12;

// 反応範囲 //
int RangeMax = 5;
int RangeMin = -5;

// 加速度センサー補正値 //
int defvalx;
int defvaly;
int defvalz;

void setup() {
  // ピン設定 //
  pinMode(ResetSW, INPUT);
  pinMode(LEDStatus, OUTPUT);
  
  // 角度をリセット //
  defvalx = analogRead(xPin);
  defvaly = analogRead(yPin);
  defvalz = analogRead(zPin);
  
  // シリアル通信開始 //
  Serial.begin(9600);
}

void loop() {
  // 値を読み込み //
  int x = analogRead(xPin) - defvalx;
  int y = analogRead(yPin) - defvaly;
  int z = analogRead(zPin) - defvalz;
  
  // 角度をリセット //
  if(digitalRead(ResetSW) == LOW || Serial.available() > 0) {
    Serial.flush();
    digitalWrite(LEDStatus, HIGH);
    defvalx = analogRead(xPin);
    defvaly = analogRead(yPin);
    defvalz = analogRead(zPin);
  } else {
    digitalWrite(LEDStatus, LOW);
  }
  
  // LED点灯 //
  // X軸 //
  if(x>RangeMax) {
    LEDX(x, 0, 0);
  }
  if(x
    LEDX(0, 0, x * -1);
  }
  if(x
    LEDX(0, 100, 0);
  }
  
  // Y軸 //
  if(y>RangeMax) {
    LEDY(y, 0, 0);
  }
  if(y
    LEDY(0, 0, y * -1);
  }
  if(y
    LEDY(0, 100, 0);
  }
  
  // シリアルでPCに角度を送信 //
  // X軸 //
  Serial.print("X=");
  Serial.print(x, DEC);
  Serial.print(",");
  
  // Y軸 //
  Serial.print("Y=");
  Serial.print(y, DEC);
  Serial.print(",");
  
  // Z軸 //
  Serial.print("Z=");
  Serial.println(z, DEC);
  
  // 反応スピード //
  delay(100);
}

// X軸用フルカラーLED制御 //
void LEDX(int Red, int Green, int Blue) {
  analogWrite(LEDRedX, Red);
  analogWrite(LEDGreenX, Green);
  analogWrite(LEDBlueX, Blue);
}
// Y軸用フルカラーLED制御 //
void LEDY(int Red, int Green, int Blue) {
  analogWrite(LEDRedY, Red);
  analogWrite(LEDGreenY, Green);
  analogWrite(LEDBlueY, Blue);
}

すごい小さい。〜MicroSDリーダー〜

普段使っている1GBのUSBメモリーの容量が不足してきたので、新しいUSBメモリーを買うことにした。近くの電気屋に行くと色んな種類のものがあり、値段も相当下がっていた。このUSBメモリーもそれほど古くはないが、同じ値段で4GB以上のUSBメモリーが買える。

色々悩んでいるとUSBメモリー売り場の脇にカードリーダー売り場があり、そこにすごい小さいMicroSDリーダー*1があった。

カードリーダーではあるが、MicroSDを挿してもUSBのコネクタほどの大きさしかない。USBメモリーよりもやや割高のMicroSDではあるが、あまりの小ささに思わず、このMicroSDリーダーとMicroSD16GBを買ってしまった。

使ってみると思ったより抜き差ししやすい。キャップがカチっとはまらないのが気になるが、問題ない。

パッケージには「microSDHCメモリーカード Class6 最大8GB」と書かれているが、16GBでも問題なく認識して使えている。

16GBという大容量ストレージができたので、USBブートのLinuxを入れて自分の環境を使えるように環境を整備したいと思う。

*1:microSD専用USB2.0/1.1フラッシュアダプター BSCRMSDCシリーズ

2TBの使い道

Western Digital から2TBのハードディスクの販売がアメリカで始まりました。このことを知人に話したら、こんな大容量なハードディスクを何に使うのかと聞かれたので、書きたいと思います。

私は500GBx2のRAID1と500GBx1の合計1TBを用途ごとにパーティションを切って使っています。パーティションを切るのは頻繁に書き換えるファイルとほとんど書き換えないファイルが混在しているとデータが断片化してしまうためです。主に以下に利用しています。

  • テレビ番組の録画
  • ミュージックライブラリ
  • デジカメ写真の保存
  • フリーソフトの保存
  • CD/DVDのISOファイル化
  • 仮想マシンのストック
  • システムのバックアップ

特に便利なのが、CD/DVDのISOファイル化です。自分で購入したソフトをISOファイル化してまとめておくとCDと同じようにマウントしてインストールすることができます。私は頻繁にOSを入れ直すので、重宝しています。

やはり、一般の方にも考えて頂きたいのはバックアップです。Microsoft も PCメーカーも積極的に説明していないので、実際にバックアップしている人は少ないですが、パソコンは必ず壊れます。データを保存する箱(wikipedia:ハードディスク)は金属製の円盤が毎分4800〜10000回転していて、データを読み取るヘッドはディスク上を風圧でわずかに(およそタバコの煙の粒子ほど)浮いているので、強い衝撃を与えると接触して壊れてしまいます。他の部品に比べて寿命が短いので、必ずバックアップすることをお勧めします。方法としては写真などのデータを本体と外付けハードディスクの両方に保存する、または、Acronis True Image などのバックアップソフトを利用するなどがあります。

私は過去に突然ハードディスクが故障したことがありましたが、必要なファイルをバックアップしていたので、若干の消失で助かりました。故障するまでは面倒だと思っていましたが、故障してみてバックアップの重要さが身にしみました。

最近は一般の方もデジカメの写真や音楽の取り込み、文書の作成など、日々重要度の高いデータがパソコンに蓄積されていくので、消失した時の悲しさは計り知れません。皆さんも、もしもに備えてバックアップをしましよう。

Excel ファイルが Word ファイル?

知り合いからExcelのファイルが開けないと聞かれました。
Microsoft Office 2007 で作成したファイルで拡張子が「xlsx」のため開けないと思っていましたが、もっと複雑でした。

操作を再現してもらうと、Word でファイルを開く時にダイアログの「ファイルの種類」が「すべてのファイル」になっていたために本来、開けないはずの Excel ファイルが「文書コンバータ」によって変換されていました。この変換された文書を上書き保存すると、拡張子が「xls」のままファイルが保存され、そのため、見かけはExcelファイルでも中身はWordファイルができてしまっていました。

今回はデータの量が少なかったので、壊れたExcelファイルをWordで開いて新規にデータを貼り付け、書式を再設定して修復しました。



中身が Word の Excel ファイル



正常な Excel ファイル


今回のワークフローは以下のとおり

  • 症状を確認
  • 症状を再現
  • 壊れたファイルを修復
  • 原因を報告

意外と軽い Windows 7 ベータ版

待ちに待ったMicrosoft Windows 7 ベータ版の公開。
ニュースサイトなどで、ダウンロードが殺到していると伝えられてたが、意外とあっさりダウンロードできました。

Windows Vista の時もベータ版をダウンロードして使い、あのデザイン・操作性に驚きましたが、今回は OS の軽さに驚きました。Windows Vistaと同じカーネルを使っているので、同じようなものになると思っていましたが、動きが違います。
一世代以上前のマシンでテストしましたが、Vistaの時のようなモッサリ感が少なり、起動・シャットダウンも早くなったように感じます。

Windows XP が未だにネットブックなど CPU が弱いマシンに入れて販売されている現状を打破することができる OS だと思います。

まだベータ版なので、全てを評価することはできませんが、かなり良い OS に仕上がっていると思います。


itmedia
http://www.itmedia.co.jp/news/articles/0901/14/news032.html


起動画面



デスクトップ

GNOMEカスタマイズ

あけましておめでとうございます。
今年もよろしくお願いします。


さて、Ubuntuのカスタマイズ用のスクリプトを書いていますが、GNOME環境をGUIで設定する方法は簡単に見つかりますが、CUIでカスタマイズする方法がなかなか見つからなかったので書いておきたいと思います。

  • GNOMEメニューアイテム /usr/share/applications/*.desktop
  • 壁紙 設定ファイル /usr/share/gconf/defaults/16_ubuntu-wallpapers
  • 壁紙ファイル /usr/share/backgrounds/*.png
  • パネル 設定ファイル /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
  • ホームディレクトリに配置するファイル /etc/skel/

間違いがありましたら、コメントで教えてください。

「ブラッディ・マンデイ」から学ぶこと

TBS系で放送中の「ブラッディ・マンデイ」からコンピュータセキュリティについて学びたいと思います。

ブラッディ・マンデイ」はコンピュータセキュリティを考える良い教材だと思います。もちろん、ドラマとしての脚色が含まれていますが、ハッキングの時に藤丸が使っているツール・ハッキング手法は、現実に存在しているものが登場しています。

注目すべきは「無線LAN」のハッキングです。Eee PC を始めとする UMPC*1PSP などのインターネット接続機能のついたゲーム機の普及により、多くの家庭で使われるようになりましたが、セキュリティ設定に関しては広まっていません。

無線LAN の設定をするときに必ずと言っていいほど、通信が暗号化されていなかったり、脆弱な暗号化方式*2を使ったアクセスポイントが見つかります。脆弱な暗号化方式では条件にもよりますが、10分程度で解読できてしまうという統計があります。これは「家中の全ての窓、ドアを開け放ち、外出している状態」と同じでとても危険な状態です。

Nintendo DS は脆弱な暗号化方式しか対応していないため、仕方がない部分はありますが、端末のメーカーにはこれ以上脆弱な暗号化方式を使わないようにして頂き、アクセスポイントのメーカーには初期設定で最新の暗号化方式が設定されているようになることを切実に願っています。一般のユーザーには他人事だと思わず、再度 無線LANのマニュアルを読み、暗号化方式の設定を「WPA TKIP」や「WPA AES」に変更することをオススメします。


より詳しくコンピュータセキュリティに知りたい方は以下のページを見てください。
高校生サーバー管理者の考察日誌
http://japan.cnet.com/blog/isidai/

*1:ウルトラモバイルPC(小型のノートパソコン)

*2:WEP