12ステップで作る組込みOS自作入門の1ステップ目。
USBシリアル変換ケーブルではうまく書き込みできなかったので、デスクトップのWin機からFDTで書き出そうとして電源とケーブルをボードに繋いだまま設定をしていたら……表面実装のLEDが凄く光ったかと思うとボードが白煙を上げはじめた。
あわてて電源を抜いてLEDを見ると、すっかり白濁してあきらかにお亡くなりになっている様子。
……というか、ここまで焼けたLEDを作ったのは初めて。
えーと、プログラムの転送と実行は一応無事に出来ました。
どう考えても他の部品が無事だとは思えないんだけど、せめて本を読み終わるまでは耐えてほしいな。
Monday, May 16, 2011
Saturday, May 14, 2011
ASUS EP121の公式ペンドライバ公開
いつの間にか野良ドライバのリンクが切れている…と思ったら公式ドライバが公開されていたみたい。
野良ドライバを削除してから公式ドライバを入れてみる。
削除はデバイスマネージャから右クリックで削除するときに
「このデバイスのドライバーソフトウェアを削除する」
にチェックを入れるだけ。
一通り消したら再起動。
(わざわざ消さなくてもよかったかもしれないけど、念のため)
新ドライバはEee Slate EP121のダウンロードページで、OS:Windows7 64bitを選択して、タッチパッドのの一番上の「V7.0.2.21」ってのがそうみたい。
ダウンロードすると「ISD_DualTouch_702-21.rar」ってのが落ちてきたので解凍。
できたフォルダの中のsetup.exeを実行するだけ。
後は「コントロールパネル -> ハードウェアとサウンド->ペンタブレットのプロパティ」で調整。
好みによって「ペンとタッチ -> タッチ入力設定の変更 -> 入力デバイスとして指を使う」のチェックを付けたりはずしたり。
…野良ドライバよりいいところはコントロールパネルの「ペンタブレットのプロパティ」で表示される日本語フォントがきれいになったことくらい?
精度は変わらないか若干悪くなったような……どうだろ、悪くなったような気がするのはさすがに気のせいかもしれない。
新しく買った人には必須のドライバだと思うけど、野良ドライバ導入済みの人は敢えて入れる必要ないかも。
野良ドライバを削除してから公式ドライバを入れてみる。
削除はデバイスマネージャから右クリックで削除するときに
「このデバイスのドライバーソフトウェアを削除する」
にチェックを入れるだけ。
一通り消したら再起動。
(わざわざ消さなくてもよかったかもしれないけど、念のため)
新ドライバはEee Slate EP121のダウンロードページで、OS:Windows7 64bitを選択して、タッチパッドのの一番上の「V7.0.2.21」ってのがそうみたい。
ダウンロードすると「ISD_DualTouch_702-21.rar」ってのが落ちてきたので解凍。
できたフォルダの中のsetup.exeを実行するだけ。
後は「コントロールパネル -> ハードウェアとサウンド->ペンタブレットのプロパティ」で調整。
好みによって「ペンとタッチ -> タッチ入力設定の変更 -> 入力デバイスとして指を使う」のチェックを付けたりはずしたり。
…野良ドライバよりいいところはコントロールパネルの「ペンタブレットのプロパティ」で表示される日本語フォントがきれいになったことくらい?
精度は変わらないか若干悪くなったような……どうだろ、悪くなったような気がするのはさすがに気のせいかもしれない。
新しく買った人には必須のドライバだと思うけど、野良ドライバ導入済みの人は敢えて入れる必要ないかも。
ラベル:
雑記
Wednesday, May 11, 2011
簡単カメラコントロール画面
prototype.jsを使って簡単な操作画面を設定。
prototype.jsには詳しくないけど、サンプル通りにカメラコントロール用cgiを呼び出して、cgiから返ってきたカメラの角度を更新するだけ。
カメラ画像はffserverで作ってるmjpg。そのままブラウザで扱えるから楽。fpsは1で画像も小さくしてるから、ただの確認用だけど。
とりあえずこれで必要最低限の機能は完成。
しばらく運用テストしてみて、不具合があったら修正。
cgiはこんな感じ。
prototype.jsには詳しくないけど、サンプル通りにカメラコントロール用cgiを呼び出して、cgiから返ってきたカメラの角度を更新するだけ。
カメラ画像はffserverで作ってるmjpg。そのままブラウザで扱えるから楽。fpsは1で画像も小さくしてるから、ただの確認用だけど。
とりあえずこれで必要最低限の機能は完成。
しばらく運用テストしてみて、不具合があったら修正。
cgiはこんな感じ。
#!/usr/bin/ruby
#移動指示を受け取って現在の角度を返すcgi
require 'rubygems'
require 'serialport'
require 'cgi'
cgi = CGI.new
#基本ステッピング角度0.75
#このシステムは一回に付き0.75*4*5 = 15
maxAngle = 8
print "Content-type: text/html\n\n"
port = "/dev/ttyUSB0" #arduinoのポート番号
sp = SerialPort.new(port, 9600, 8, 1, SerialPort::NONE)
f = open("angle")
count = f.gets.to_i
f.close
f = open("angle","w")
if cgi["move"] == "r" and count < maxAngle
sp.write cgi["move"]
count += 1
elsif cgi["move"] == "l" and 0 < count + maxAngle
sp.write cgi["move"]
count -= 1
end
#15を掛けて角度に直したものを表示
puts count*15
f.puts count
f.close
sp.close
ラベル:
電子工作
Monday, May 9, 2011
ありあわせでガワ作成
部屋に転がってた板切れやメモ帳の表紙やネジやらで適当に
オンラインカメラのガワを作成。
もう少し旋廻速度は遅くていいかな。
回転角度をもう少し細かく調整する必要もありそう。
ともかくこれでカメラ側の準備は一応終了。
次はWebインタフェースを作れば試作品は完成。
将来的には無線と太陽電池でOpportunityみたいなのを作りたいな。
オンラインカメラのガワを作成。
もう少し旋廻速度は遅くていいかな。
回転角度をもう少し細かく調整する必要もありそう。
ともかくこれでカメラ側の準備は一応終了。
次はWebインタフェースを作れば試作品は完成。
将来的には無線と太陽電池でOpportunityみたいなのを作りたいな。
ラベル:
電子工作
Sunday, May 8, 2011
コマンドラインでステッピングモータ制御
ここしばらくモータをいじっていたのは、遠隔のライブカメラを動かしたいという理由だったので、
ひとまずコンソールからモータを動かせるようなプログラムを作ってみた。
あとは電子の付かない純粋な工作と、Webから操作できるように適当なページとCGIの作成で、
まあそれはどうとでもできるでしょ。
ひとまずコンソールからモータを動かせるようなプログラムを作ってみた。
あとはrubyのruby-serialportあたりを利用してコマンドを送ってもいいし、もっと単純にコマンドラインから
int pin[4] = {8,9,10,11}; int incomingByte = 0; int STEPWAIT = 50; void setup(){ Serial.begin(9600); for(int i=0;i < 4;i++){ pinMode(pin[i], OUTPUT); } } void loop(){ //入力があったら対応 if (Serial.available() > 0) { incomingByte = Serial.read(); switch(incomingByte){ case 'r': turnRight(10); break; case 'l': turnLeft(10); break; } } delay(100); } /** 右回転 */ void turnRight(int count){ for(int i=0; i< count;i++){ for(int j=0;j<4;j++){ int pre = j-1; int next = j+1; if(pre < 0){ pre = 3; } if(next > 3){ next = 0; } digitalWrite(pin[pre], LOW); digitalWrite(pin[j], HIGH); digitalWrite(pin[next], HIGH); delay(STEPWAIT); } } pinOff(); } /** 左回転 */ void turnLeft(int count){ for(int i=0; i < count;i++){ for(int j=3;j>=0;j--){ int pre = j+1; int next = j-1; if(pre > 3){ pre = 0; } if(next < 0){ next = 3; } digitalWrite(pin[pre], LOW); digitalWrite(pin[j], HIGH); digitalWrite(pin[next], HIGH); delay(STEPWAIT); } } pinOff(); } /** オフ */ void pinOff(){ for(int i=0;i<4;i++){ digitalWrite(pin[i], LOW); } }
$ echo llrl > /dev/ttyUSB1こんな感じのコマンドを送るだけでも動作する。
あとは電子の付かない純粋な工作と、Webから操作できるように適当なページとCGIの作成で、
まあそれはどうとでもできるでしょ。
ラベル:
電子工作
Saturday, May 7, 2011
Thursday, May 5, 2011
Arduinoでステッピングモータ回してみる
モータは同じくSPG20-332。
以前買って放置していたArduinoで、ものすごく適当な回路を組んでみた。
で、コードはこんな感じ。
…自分で作っといてなんだけど、まさかこれで動くとは思わなかった。
さすがにパワーが足りない気もするけど、ちょっと何かを動かす程度ならこれでいいかも。
あー、パワーを増すなら2層励磁という手もあるのか。
というわけでコードを書き換え。
楽だからありがたいけど、何の苦労もないからいまいち達成感が無い。
以前買って放置していたArduinoで、ものすごく適当な回路を組んでみた。
で、コードはこんな感じ。
/* 適当ステッピングモータ */
int pin[4] = {10,11,12,13};
void setup(){
for(int i=0;i < 4;i++){
pinMode(pin[i], OUTPUT);
}
}
void loop(){
for(int i=0;i<4;i++){
digitalWrite(pin[i], HIGH);
delay(20);
digitalWrite(pin[i], LOW);
delay(20);
}
}
…自分で作っといてなんだけど、まさかこれで動くとは思わなかった。
さすがにパワーが足りない気もするけど、ちょっと何かを動かす程度ならこれでいいかも。
あー、パワーを増すなら2層励磁という手もあるのか。
というわけでコードを書き換え。
/* 適当ステッピングモータ 2相励磁 */
int pin[4] = {10,11,12,13};
void setup(){
for(int i=0;i < 4;i++){
pinMode(pin[i], OUTPUT);
}
}
void loop(){
for(int i=0;i<4;i++){
int pre = i-1;
int next = i+1;
if(pre < 0){
pre = 3;
}
if(next > 3){
next = 0;
}
digitalWrite(pin[pre], LOW);
digitalWrite(pin[i], HIGH);
digitalWrite(pin[next], HIGH);
delay(20);
}
}
この程度のパワーがあれば大体の用は足りるような気がする。楽だからありがたいけど、何の苦労もないからいまいち達成感が無い。
ラベル:
電子工作
Subscribe to:
Posts (Atom)








