カテゴリ: 自宅鯖

ページ: << 1 2 3 4 5 6 7 >>

パラレルポートで家電制御!?

パーマリンク 2009/08/09 23:09:14 著者: kumaold メール
カテゴリ: デジタルモノ, 自宅鯖

久々に土日丸ごと暇でやることがなかったので、日曜電子工作+プログラミングでひとつ作ってみました。


前々から外出先などから、PCから家電製品のスイッチOn/Offを制御できれば便利だと思っていました。(自宅鯖のフリーズ時などに)

そこでその実用化テストも兼ねて、手持ちのFMトランスミッタの電源の制御を取り扱いが簡単なパラレルポート経由でPCから行うことにしました。


もちろん直接接続しても制御できるほどの電流・電圧ではないので、相応の回路の設計が必要になります。

久々に回路図をフリーソフトBSch3Vで起こしてみました。

直接ON/OFFできるようにジャンパピンを横に付けました。

トランスミッタにかかる電圧の変動は?という点については三端子レギュレータで5Vに落としているので考えなくて結構です。

完成図

さて、あとはプログラムです。

この手のはLinuxマシンの方が楽なので、いつもの仮想CentOSサーバ上です。
VirtualPCの設定→LPT1→物理パラレルポートで物理ポートと接続できます。

gccの通る環境なら特別なライブラリは必要ないかと思います。

#include <stdio.h>
#include <stdlib.h>
#include <sys/io.h>
#define OUT_PORT 0x378 /* 出力ポート: パラレルポート */

int main(int argc, char* argv[]) {
    int i, port, time;

    if (argc < 3) {
        puts("引数が不足しています。\n");
        return 1;
    }
    
    port = strtol(argv[1], NULL, 16);
    time = atoi(argv[2]);
    
    if (port < 0x00 || port > 0xff) {
        puts("0x00 - 0xffの範囲で設定してください。\n");        
        return 1;
    }
    /* とりあえず30日まで */
    if (time < 0 || time > 60 * 60 * 24 * 30) {
        puts("有効な秒数を入力してください。\n");
        return 1;
    }

    /* I/Oポート初期化 */
    ioperm(OUT_PORT, 8, 1);
    /* 指定ポートに指定時間(秒)出力 */
    outb(port, OUT_PORT);
    sleep(time);
    return 0;
}

これをコンパイルして実行しても、通常ユーザでのポート操作はセグメンテーション違反となり実行できません。

そこでroot権限で実行させるようにsetuidしときす。
ついでにパスの通っているところにもっていきましょう。

gcc -o paracon paracon.c
cp paracon /usr/bin
chmod +s /usr/bin/paracon

これでparaconコマンドを叩くと接続されたものを制御できます。

使い方:paracon 出力データ16進 出力時間(秒)

出力データは出力ポートが8個あるので、H/Lを1/0で表したものを16進数に変換して渡してやります。(0x00~0xff)

paracon 0x01 10
# 8ビット中最下位ビットを10秒間Hにする

なお、プログラムが終了しても出力状態は保持され続けるので、それが嫌な場合は毎度最後に0x00を出力するといいかもしれません。


こんな感じで、無事にパラレルポートからの制御ができました。

今回は小電力なのでトランジスタだけを使いましたが、SSRなどのリレーに繋げば100Vの家電製品の制御も簡単にできるかと思います。
主電源スイッチで電源ON/OFFできるものに限りますが。

パソコンのレガシィI/O活用大全―割り込みとDMAからシリアル/パラレル・ポート、FDD/IDEインターフェースまで (ハードウェアデザインシリーズ)パソコンのレガシィI/O活用大全―割り込みとDMAからシリアル/パラレル・ポート、FDD/IDEインターフェースまで (ハードウェアデザインシリーズ)
CQ出版 2001-07
おすすめ平均

PacketiX VPN 2.0でどこでも自宅LAN環境

パーマリンク 2009/07/19 01:35:48 著者: kumaold メール
カテゴリ: 自宅鯖, ネットワーク, SIP/Asterisk

イー・モバイルの通信アダプタが到着したので(レポはまた後日)、前々からやろうと思っていた自宅リモートアクセス用VPNを構築しました。


VPN対応ルータがなくても構築できるソフトウェアVPNには、OpenVPNTinyVPNなどあるようですが、どうも速度が遅いとの噂です。

そこで今回はPacketiX VPN 2.0の60日無料体験版を利用してみました。


ある程度の知識がある方なら、案内に従って設定していくかオンラインマニュアルを見れば割と簡単に構築できるかと思います。


デフォルトのポートはTCP/8888ですが、何故か自宅環境ではうまくいってくれなかったので、別ポートに変えて動作しました。
(TCP/80,443でも動かせるのでWeb通信にも偽装可能)

自宅鯖側をサーバ(仮想HUB)にすれば、設定ひとつで物理LANとブリッジしてくれるため外出先からでも同一セグメントのIPで使用できます。


肝心の速度とか応答の面ですが、完璧に文句なし!

回線が下り2.1Mbpsの環境でVPN内速度1.7Mbpsと80%ほど
ping応答速度はWAN 46ms/VPN 46msとまったく遅延なし



さて、これで先日構築したSIP内線?と組み合わせると面白いことができます。

VPN接続をして、SIPソフトフォン X-LiteをAsteriskにregistすると、ネット環境さえあれば世界中どこからでも内線で自宅にタダ電話ができます。

ひかり電話からの外線発信も可能なので、電話代の節約にもなります。

ソフトイーサ PacketiX VPN入門 (I・O BOOKS)ソフトイーサ PacketiX VPN入門 (I・O BOOKS)
大澤 文孝
工学社 2006-04
おすすめ平均

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

リモートデスクトップ接続不能(解決編)

パーマリンク 2009/06/05 13:30:13 著者: kumaold メール
カテゴリ: 自宅鯖

いつからか、自宅のファイルサーバにリモートデスクトップで接続しようとした際にまったく接続ができなくなってしまい、ずっと悩んでいました。

「接続」ボタンを押してもエラーが出るわけでもなく、一瞬ウィンドウが点滅しただけで何も起こらないという症状です。

この説明しがたい状態のため、とりあえずUltra VNCで代用をしていました。


しかし話を聞くところによると、Geforceのドライバソフト「ForceWare」のバージョンによる問題とのことで、試してみました。

現在ForeceWare 181.22を使っていたので、問題なく動くらしいという169.21までバージョンを落とすことにしました。


それで再起動をかけると、何事もなかったかのようにあっさり接続できました。

さらに調べてみると、メモリ領域まわりの管理で問題が起こるらしく、レジストリの「SessionImageSize」という値の調整でうまくいく場合もあるらしいとか。

@IT - リモート・デスクトップ接続に失敗する場合の対処方法

まあ、とりあえず解決できたのでよしとしよう。

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

<< 1 2 3 4 5 6 7 >>

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年3月
 << <   > >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

検索

XMLフィード

16ブログ     powered by b2evolution free blog software