[CENTER]دائرة ارسال و استقبال RS-232 Laser
من المفروض ان هذه الدائرة قادرة على نقل الداتا بين جهازى كمبيوتر يبعدان عن بعضهما مسافة 100 متر مثلا
[/center]
شكل التوصيل فى كبل ال RS-232
شكل الدائرة النهائى بعد تركيب الكمبوننتس
Component Value Description R1 1k 1/4 W resistor C1-5 0.1uF Capacitor (Ceramic) U1 MAX232A RS-232 line driver U2 74LS05 Hex open-collector buffer U3 74LS14 Schmitt trigger hex inverter D1-2 1N4001 Power diode P1 OP505A Photo-transistor V1 7805 Voltage regulator L1 LX1000 Laser Pointer . . 9V battery clip . . DB-9 female connector with backshell. . . 2 m shielded 3 core cable. . . Switch . . PCB . . Light duty hook-up wire
خطوات تجربة الدائرة
You will need a PC to test the circuit. The program listing at the end of this article gives an example of a test communications program. You will need a C compiler to compile it. The code was compiled using Borland C++ 3.1. If you do not have a compiler or wish to obtain the executable version of the test program you can find it on my web page.
http://www.geocities.com/SiliconValley/Lakes/7156
To test communication between two computers simply repeat the steps above for each computer except that the lasers are pointed towards the other transceiver. Over longer distances I have found that it is much easier to fix the laser and move the receiver in order to align them properly. For this reason the laser should not be attached to the zippy box housing the photo-transistor. Also depending on the laser pointer, beam intensity and beam spread will vary which will affect the distance over which reliable communication can be achieved. Most laser pointers should achieve a minimum of 100 meters. And if all goes well you will be sending data over a laser beam!
و هذا هو البرنامج الخاص بتشغيل الدائرة
/****************************************************
**
** Laser Pointer RS-232 Transceiver
** Copyright (c) 1997 GKDesign
** 24th May 1997 George Katz
** Data Transmitted @ 9600 bps
**
*****************************************************/
#include <dos.h>
#include <stdlib.h>
#include <conio.h>
#include <bios.h>
#include <stdio.h>
#define COM1 0
#define COM2 1
#define DATA_READY 0x100
#define TRUE 1
#define FALSE 0
#define ESC_KEY '\x1b'
#define SETTINGS ( _COM_9600 | _COM_CHR8 | _COM_NOPARITY | _COM_STOP1)
void clear_line(int line)
{
int i;
gotoxy(1,line); // clear a whole line
for(i=0;i<80;i++)
printf(" ");
}
int main(int argc, char *argv[])
{
int in, out, status, done = FALSE;
int curs_rx=0,curs_ry=15,curs_tx=0,curs_ty=4;
int com_port=COM1;
if (!(argc == 2 && (argv[1][0] == '2' || argv[1][0] == '1')))
{
printf("Usage: LASER [1|2]
where 1 = Com port 1
2 = Com port 2
");
exit(-1);
}
if (argv[1][0]=='2') // select com port
com_port = COM2;
else
com_port = COM1;
bioscom(_COM_INIT, SETTINGS, com_port); // Initialize serial port
clrscr();
printf(" GKDesign (c) 1997 Laser Transceiver Communicator V1.1
");
printf(" Press [ESC] to exit program
");
printf("__________________________________ Sent Data ___________________________________");
gotoxy(1,13);
printf("________________________________ Recieved Data _________________________________");
while (!done) {
status = bioscom(_COM_STATUS, 0, com_port); // recieved data?
if (status & DATA_READY)
if ((out = bioscom(_COM_RECEIVE, 0, com_port) & 0x7F) != 0) { // get data
if (curs_rx < 78) // move cursor
curs_rx++;
else {
curs_rx = 1; // at end of line
if (curs_ry < 23)
curs_ry++;
else
curs_ry = 15;
clear_line(curs_ry);
}
gotoxy(curs_rx,curs_ry); // goto correct screen location
putch(out); // print the character
}
if (kbhit()) {
if ((in = getch()) == ESC_KEY) // check for ESC key
done = TRUE;
if(!in) // read an extended character
in = getch();
if (curs_tx < 78) // position cursor
curs_tx++;
else {
curs_tx = 1; // at end of line
if (curs_ty < 12)
curs_ty++;
else
curs_ty = 4;
clear_line(curs_ty);
}
gotoxy(curs_tx,curs_ty); // goto correct screen location
putch(in); // print the character
bioscom(_COM_SEND, in, com_port); // output data
}
}
clrscr();
return (0);
}
عموما السؤال المهم بالنسبة لى هل من المكن تنفيذ نفس الفكرة على الداتا التى يتم ارسالها فى كابل النتورك
ما احاول الوصول له هو عمل نتورك باستخدام الليزر لتوصيل جهازين ببعضهما هل سيكون الامر هو مجرد تحميل الداتا على شعاع الليزر ام اننى ساحتاج الى ما هو اعقد من ذلك