背景
インターネット経由でランプを制御することに関するHabréの記事を読んだ後、コンピューターから家の照明を制御するというアイデアが浮上しました。すでに携帯電話からコンピューター制御を構成しているので、これは同じ電話からライトを制御できることを意味します。 私の同僚の一人にこの記事を紹介した後、彼はこれが必要だと言った。 彼はしばしばコンピューターで見る映画のために眠りに落ちるので。 映画の終了後しばらくして、コンピューターもスリープ状態になり、モニターをオフにしますが、部屋の照明は点灯したままです。 つまり このことは有用であると判断され、私はこの奇跡に関する情報と詳細を収集し始めました。
残りの情報は、habracutの下にあります(慎重に多くの写真があります-トラフィック)。
デバイス図
インターネットで見つかったスキームの1つが初期スキームとして採用され、次のようになりました。

ただし、わずかな変更があります。4N25フォトカプラの1番目のピンとLPTの2番目のピンの間に、390オームの抵抗器が追加され、LEDが追加されたことを示します。 回路はテストモードで組み立てられました。 必要に応じて配線し、テストします。 このバージョンでは、彼女は古いソビエトの懐中電灯をオン/オフにしました。
制御がすでに行われている場合は、1つのデバイスではなく、少なくとも4つのデバイス(テーブル上の1つのランプ、2つのスイッチのシャンデリア、スペアソケットに基づく)が決定されました。 この段階で、完全なデバイス図を作成する必要が生じ、さまざまなプログラムの選択が始まりました。
以下がインストールされました。
- Pbc
- Kicad
- ゲダ
- イーグル
それらすべてを見て、私はイーグルに落ち着きました。彼のライブラリには「類似した」詳細があったからです。 ここで何が起こったのですか:


図はポートDB9を使用しました。 通常のCOMポートでは、これはボード上のスペースとコネクタ自体(私にはCOMがありました)の両方を節約するために行われます。5本の導線のみを使用するため、これで十分です。 したがって、DB25(LPT)からDB9(COM)へのアダプターも作成します。私の場合は、次のようにします。
LPT 2-9ピン= COM 1-8ピン-これらは制御データピンです。
LPT 18-25ピン(多くの場合相互接続されています)= COM 9ピン-これが私たちの土地です。
また、回路はリレーに電力を供給するために追加の12V電源を使用します。計画によると、単純な中国の充電器または9Vの王冠になるでしょう(1つのリレーが正常に機能し、同時に4を確認する必要があります)。 フォトカプラを使用した電源とガルバニック絶縁を分離して、コンピュータポートを保護します。 必要に応じて、もちろん12Vコンピュータの電源から電力を供給できますが、誰もが自分で、自分の危険とリスクでこれを行います。
デバイスを作成するために必要な詳細
- COMポート-1個
- 電源コネクタ-1個
- 緑色のLED-4個
- 4n25フォトカプラ-4個
- フォトカプラー用のシート(脚が8本しかありません)-4個。
- 390オーム抵抗-4個
- 4.7kΩ抵抗-4個
- KT815Gトランジスタ-4個
- リレーHJR-3FF-SZ-4個
- 3つの接点のクリップ-4個
- ホイルテキソライト
PCB回路の準備
Eagleを使用してプリント基板を準備しようとすると、それが複雑になることに気付き、より簡単なオプションを見つけることにしました。 スプリントレイアウト5プログラムは、Windows用であってもこのオプションになりましたが、Linuxのワインでは問題なく実行されます。 プログラムのインターフェースは直感的で、ロシア語ではプログラムに非常に明確なヘルプ(ヘルプ)があります。 したがって、プリント回路基板の開発のためのすべてのさらなるステップは、スプリントレイアウト5(以降SL5)で実行されました。
多くの人がこのプログラムを使用してデバイスのボードを開発していますが、必要な詳細が含まれていませんでした(ダウンロードされたマクロのコレクションの山にさえ)。 したがって、最初に不足しているパーツを作成する必要がありました。
- COMポート(取り付け穴を通して、私のポートと一致しなかったポート)
- 電源ソケット
- 3ピンクランプ
- リレーHJR-3FF-SZ
これらの部品の外観:

必要な詳細を追加した後、回路基板自体の設計が始まりました。 それはいくつかの試みを経て、約5回ありました。 ボードの各バージョンは段ボールに印刷され、穴が開けられ、部品が挿入されました。 実際、私のCOMポートはSL5のポートと一致しないことがわかりました。 リレー回路にも小さなエラーが発生しました。実際には、リレーケースは2〜3 mmシフトしました。 当然、すべてのエラーが修正されました。
最初の印刷版では、トランジスタが正しく接続されておらず、2つの接点が混同されていたことがわかりました。
すべての修正と調整の後、次のタイプのボードを入手しました。

SL5には、ボードを表示するための「写真ビュー」機能があります。ボード内の外観は次のとおりです。


ボードの最終バージョンでは、トラックはわずかに修正されますが、それ以外は同じに見えます。
SL5にはボードを印刷するための便利なオプションもあり、不要なレイヤーを非表示にして各レイヤーの印刷色を選択できます。これは非常に便利です。
PCBの準備
LUT方式(レーザー鉄技術)を使用してボードを作成することが決定されました。 次に、写真のプロセス全体。
必要なサイズのPCBを切り取ります。

最小のサンドペーパーを取り、銅の表面を静かにきれいにします。

表面を洗浄した後、洗浄して脱脂する必要があります。 水で洗い流し、アセトンで脱脂できます(私の場合は、溶剤646でした)。
次に、プリンターでボールドプリントを設定することを忘れずに(トナーを節約せずに)コート紙上のレーザープリンターでボードを印刷します。 トナーがにじんでいたため、このオプションは少し失敗しましたが、別の試みはちょうどよかったです。

次に、図面を紙からテキソライトに転送する必要があります。 これを行うには、パターンを切り取ってPCBに適用し、必要に応じて位置合わせしてから、鉄で加熱します。 トナーが溶けて銅の表面に付着するように、表面全体を徹底的に温める必要があります。 次に、回路基板を少し冷やし、流水で濡らします。 紙が十分に濡れたら、ボードから分離する必要があります。 粘着性のトナーのみが回路基板に残ります。 次のようになります。

次に、エッチング用の溶液を準備する必要があります。 これには塩化第二鉄を使用しました。 塩化第二鉄の瓶には、溶液を1〜3にする必要があると書かれています。これから少し後退して、240gの水に60gの塩化第二鉄を作りました。 このボードのエッチングにも関わらず、1から4であることが判明しました。 乾燥塩化第二鉄の水への溶解プロセスは熱の放出とともに進行するため、少量ずつ水に注いでかき混ぜてください。 当然、エッチングには、非金属の皿を使用する必要があります。私の場合は、プラスチック製の容器でした(ニシンのような)。 私はこの解決策を得ました:

テープを使用してボードをソリューションに降ろす前に、ボードを取り外して裏返しやすくするために、裏側に線を接着しました。 溶液が手に入ったら、石鹸で素早く洗い流す必要があります(石鹸で中和します)が、汚れが残る可能性があり、それはすべて特定の条件に依存します。 衣服の汚れはまったく除去されませんが、私は自分でこれを確認できなかったのは幸運でした。 銅を下にして、すべて平らではなく、斜めにボードをソリューションに浸します。 時々、さらなるエッチングを妨げるため、マイニングからボードを洗浄することをお勧めします。 これは綿棒でできます。


エッチングプロセス全体は45分かかりましたが、40分で十分でしたが、もう1つだけ忙しかったです。
エッチング後、ボードを石鹸で洗い、釣り糸でテープをはがして、次のものを入手します。


注意! 塩化第二鉄の溶液を流し台(下水)に注ぎ込まないでください-これは流し台の金属部分に損傷を与える可能性があり、一般に溶液はまだ役に立ちます。
次に、トナーを洗い流す必要があります。これは、脱脂に使用した同じ溶剤646で正常に行われます(溶剤と皮膚との長時間の接触は、溶剤を損傷する可能性があります)。

次のステップは、穴を開けることです。 薄いドリルを見つけることができなかったため、最初はボードに1mmと1.5mmの穴がありました。 また、電動モーターに取り付けるためのコレットチャックを私たちの都市で見つけることもできなかったため、すべてが大きなドリルで行われました。

最初のデバイスが登場しました

初めて2回だけドリルを使用しましたが、このようなドリルを使用する場合、これは十分ではありませんでした。 1つのドリルビットが破損し、2つ目のビットが曲がりました。 初日にドリルダウンすることができたすべて:

翌日、5つのドリルを購入しました。 そして、それらはちょうど十分でした。なぜなら、それらが壊れないなら(ところで、私が1つだけを壊した5つから)、それらは鈍く、鈍いもので穴をあけるとき、トラックが劣化し、銅が剥離し始めるからです。 ボードの穴あけが完了すると、次の結果が得られます。


穴あけ後、ボードに錫メッキする必要があります。 これを行うには、はんだごて、TAGSフラックス、スズという古い方法を使用しました。 ローズ合金を試してみたかったのですが、私たちの街では見つかりませんでした。

錫メッキの後、次の結果が得られます。


次に、ボードをすすいでフラックス残留物を除去する必要があります。TAGSは水洗可能であるため、水またはアルコールのいずれかでこれを行うことができます。 私はその間に何かをしました-古いウォッカでそれを洗い、綿棒でそれを拭きました。 これらすべてのアクションの後、ボードは準備ができています。
部品の組み立て
ボードの正確さを確認するために、最初は1行(4つのうち)の部品のみを収集します。エラーがどこに侵入したかはわかりません。

部品を取り付けた後、デバイスをLPT経由でコンピューターに接続します。このため、DB25(LPT)からDB9(COM)へのアダプターは次の形式ではんだ付けされます。
- 2ピンDB25〜1ピンDB9
- 3ピンDB25〜2ピンDB9
- 4ピンDB25〜3ピンDB9
- 5ピンDB25〜4ピンDB9
- 6ピンDB25〜5ピンDB9
- 7ピンDB25〜6ピンDB9
- 8ピンDB25〜7ピンDB9
- 21 DB25ピン(18から25まで)〜9 DB9ピン
通常のツイストペアケーブルがワイヤとして使用されたため、1本の配線では不十分でしたが、このデバイスには5本のワイヤで十分なので、このオプションが適しています。 含まれている負荷として、単純なソビエト懐中電灯があります。 まあ、電源として-普遍的な中国の電源(4つのコネクタと3〜12 Vの電源)。 アセンブリは次のとおりです。

しかし、デバイスはすでに動作しています:

これは別の夜に終了し、残りの部品の取り付けは翌日に残されました。
そして、ここに完全に組み立てられたデバイスがあります:


まあ、それがどのように機能するかについての短いビデオ(品質はあまり良くありません、通常撮影するものはありませんでした)
それだけです。デバイスの通常のケースを見つけて、それをビジネスに使用するだけです。
ソフトウェア部
当然、LPTポートを管理するには何らかのソフトウェアが必要ですが、私は自宅にLinuxを持っているので、最も簡単なプログラムを自分で作成し、後で必要に応じて追加および調整することにしました。 次のようになりました。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>
#define BASE 0x378
#define TIME 100000
int main ()
{
int x = 0x0F;
int y = 0x00;
if (ioperm (BASE, 1, 1))
{
perror ("ioperm()");
exit (77);
}
outb (x, BASE);
return 0;
}
このプログラムは、LPTポート0x0F = 00001111に送信します。 1〜2〜5ピン(Data0〜Data3)に給電し、これが2〜5ピンとグランド(18〜25ピン)間の制御電圧であるため、4つのリレーすべてがオンになります。 プログラムが切断のためにポートに0x00を送信するのと同じ方法で、xの代わりにy-outb(y、BASE)を送信します。 ポートのステータスを読み取ることもできます。
#define BASEPORT 0x378 /* lp1 */
...
printf(": %d\n", inb(BASEPORT));
...
ioperm関数は単純なユーザーには使用できないため、このプログラムの唯一のニュアンスは、rootとして実行する必要があることです。 私はそのような問題を解決する方法を伝えることはできないと思う、誰もがより適切なオプションを選択します。
その後、プログラムが変更され、コマンドラインパラメータを渡すと、どのデバイスと何をすべきかが示されるようになりました。
「sw --help」の出力:
LPT .
.
: sw [ ] []
- 1 8
- "on", "off", "st" - , ,
: "sw 2 on" "sw --help"
PS誰かがそれを必要とするなら、後で私はsl5のどこかに回路図ファイルと制御プログラムのソースコードを置くことができます。