توصيل كمبيوترين بواسطة الليزر الدائرة ثم سؤال محتاج الى اجابته


(tarek1984) #1

[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 the circuit, plug the DB-9 connector into the mouse port on your PC. Turn on power to the circuit and the laser should switch on. Now turn on the PC and make sure a mouse driver is not loaded. A TSR(Terminate and Stay Resident) mouse driver will interfere with the operation of the circuit. Also make sure that no other TSRs are attempting to use the serial port. Now point the pointer directly at the photo-transistor. Next run the test program from a DOS prompt by typing LASER 1 and pressing the key. Where 1 represents the COM port number the circuit is connected to. Anything you type on the keyboard should appear at the top of the screen as well as the bottom. The top part of your screen displays the data sent out over the laser pointer while the bottom part shows the received data. Press the ESC key anytime to end the program.
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);
}


عموما السؤال المهم بالنسبة لى هل من المكن تنفيذ نفس الفكرة على الداتا التى يتم ارسالها فى كابل النتورك

ما احاول الوصول له هو عمل نتورك باستخدام الليزر لتوصيل جهازين ببعضهما هل سيكون الامر هو مجرد تحميل الداتا على شعاع الليزر ام اننى ساحتاج الى ما هو اعقد من ذلك


(tarek1984) #2

اضافة هامة نسيت كتابتها موقع الدائرة الاساسى هو
http://www.electronics-lab.com/projects/pc/002/


(tarek1984) #3

شكرا على ردودكم الكثيرة