Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Transmisi Data Laser Nirkabel(LIFI) (100b/detik)

Komponen dan persediaan

Arduino Nano R3
× 2
Ukuran Penuh Papan Tempat Memotong Roti Tanpa Solder
× 2
LCD alfanumerik, 16 x 2
× 2
Kabel jumper (generik)
× 30
KeyPad 4x3
× 1
Baterai 9V (generik)
× 2
Klip Baterai 9V
× 2
Dioda Laser, 2 Pin
× 1
Aksesori Kit Pengembangan, Sel Surya
× 1
Potensiometer putar (generik)
× 2
Resistor 10k ohm
× 3

Alat dan mesin yang diperlukan

Besi solder (generik)
Kawat Solder, Bebas Timah

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Proyek ini terbuat dari dua bagian yaitu pemancar dan penerima yang dapat digunakan untuk mengirim teks melalui laser menggunakan keypad dan LCD

Kode

  • Kode Pemancar LI-FI V 2.0
  • Kode Penerima LI-FI V 2.0
Kode Pemancar LI-FI V 2.0C/C++
Kode Pemancar LI-FI V 2.0
/*Kode Pemancar LI-FI V 2.0 Ditulis Oleh HOUALEF AHMED RAMZI Dimulai pada 29-9-2020 Pembaruan Terakhir pada 14-10-2020*/#define LaserPin 2#include const int rs =12, en =11, d4 =6, d5 =5, d6 =4, d7 =3;LiquidCrystal lcd(rs, en, d4, d5, d6, d7);int incomingchar;int KeyPad_R[ ] ={A2, A1, 9, 7}; //The KeyPad rowsint KeyPad_C[] ={8, 10, A3}; // Kolom KeyPad KeyReturn =0; // Output Fungsi Keypad dari 1-12int ABC; //variabel yang digunakan untuk mengkode 3 karakter menggunakan satu baris buttonint; //variabel yang digunakan dalam fungsi Keypad di Kolom;//variabel yang digunakan dalam fungsi Keypad di StCursor =0; //variabel untuk Kontrol Kursor NdCursor =0; //variabel untuk matriks keluaran Kontrol Kursor[32][5]; //Variabel DATA Bufferint m =0;// digunakan untuk mengetahui panjang outcomingmatrix untuk menghindari pengiriman semua 32*5 bufferint kosong A[] ={1, 1, 1, 1, 0}, B[] ={0, 0, 0, 1, 0}, C[] ={0, 0, 0, 1, 1}, D[] ={0, 0, 1, 0, 0}, E[] ={0 , 0, 1, 0, 1}, F[] ={0, 0, 1, 1, 0}, G[] ={0, 0, 1, 1, 1}, H[] ={0, 1 , 0, 0, 0};int I[] ={0, 1, 0, 0, 1}, J[] ={0, 1, 0, 1, 0}, K[] ={0, 1, 0, 1, 1}, L[] ={0, 1, 1, 0, 0}, M[] ={0, 1, 1, 0, 1}, N[] ={0, 1, 1, 1, 0}, O[] ={0, 1, 1, 1, 1}, P[] ={1, 0, 0, 0, 0};int Q[] ={1, 0, 0, 0 , 1}, R[] ={1, 0, 0, 1, 0}, S[] ={1, 0, 0, 1, 1}, T[] ={1, 0, 1, 0, 0 }, U[] ={1, 0, 1, 0, 1}, V[] ={1, 0, 1, 1, 0}, W[] ={1, 0, 1, 1, 1}, X[] ={1, 1, 0, 0, 0};int Y[] ={1, 1, 0, 0, 1}, Z[] ={1, 1, 0, 1, 0}, SPASI [] ={1, 1, 1, 1, 1}; // database kecil untuk menyimpan semua charachtersvoid setup() { lcd.begin(16, 2); pinMode(LaserPin, OUTPUT); Serial.begin(9600); for (int i; i <4; i++) { pinMode( KeyPad_R[i], OUTPUT); } for (int j; j <3; j++) { pinMode( KeyPad_C[j], INPUT); } lcd.print("HOUALEF RAMZI"); penundaan(5000); lcd.clear(); lcd.setCursor(0,0);}void conv(int alpha [5], char Char ) { // UNTUK MENGISI OUTPUT BUFFER DARI DATA BASE for (int i =0; i <5; i++) { outcomingmatrix[ m][i] =alfa[i]; } lcd.print(Char);}void start_bit() { //MULAI bit digitalWrite(LaserPin, HIGH); penundaan (9); digitalWrite(LaserPin, LOW);}void KeyPad() { // OUTPUT NOMOR TOMBOL YANG DITEKAN DARI 1 SAMPAI 12 for (int i =0; i <4; i++) { digitalWrite( KeyPad_R[i], HIGH); for (int j =0; j <3; j++) { if (digitalRead(KeyPad_C[j]) ==1) { Baris =i; kolom =j; digitalWrite( KeyPad_R[i], RENDAH); if (Baris ==0) { switch (Kolom) { case 0:KeyReturn =1; merusak; kasus 1:Pengembalian Kunci =2; merusak; kasus 2:Pengembalian Kunci =3; merusak; } } if (Baris ==1) { switch (Kolom) { case 0:KeyReturn =4; merusak; kasus 1:Pengembalian Kunci =5; merusak; kasus 2:Pengembalian Kunci =6; merusak; } } if (Baris ==2) { switch (Kolom) { case 0:KeyReturn =7; merusak; kasus 1:Pengembalian Kunci =8; merusak; kasus 2:Pengembalian Kunci =9; merusak; } } if (Baris ==3) { switch (Kolom) { case 0:KeyReturn =10; merusak; kasus 1:Pengembalian Kunci =11; merusak; kasus 2:Pengembalian Kunci =12; merusak; } } } } } Serial.println(KeyReturn);}void KeyToAscii(int KeyN, int FirtAsciiValue) { // UNTUK MENGONVERSI DATA DARI KEYPAD KE NILAI ASCII UNTUK BEKERJA DENGAN FUNGSI CONV DI ATAS ITULAH BAGAIMANA KITA DAPAT MENGGUNAKAN KEDUA SERI MONITOR DAN KEYPAD if (KeyReturn ==KeyN) { incomingchar =FirtAsciiValue + ABC; ABC++; jika (ABC ==3) { ABC =0; } }}void CursorControler() { lcd.setCursor(StCursor, NdCursor); if (KeyReturn ==10) { //UNTUK KONFIRMASI KARAKTER KARENA 11 DI TOMBOL KONFIRMASI delay(100); StCursor++; m++; } if (StCursor ==16) { // UNTUK MENULIS DI LINE BARU KETIKA YANG PERTAMA SUDAH PENUH StCursor =0; NdCursor =1; }}void loop() { KeyPad(); penundaan(150); KursorKontrol(); KeyToAscii(1, 65); KeyToAscii(2, 68); KeyToAscii(3, 71); KeyToAscii(4, 74); KeyToAscii(5, 77); KeyToAscii(6, 80); KeyToAscii(7, 83); KeyToAscii(8, 86); KeyToAscii(9, 89); KeyToAscii(11, 32); switch (incomingchar) { kasus 65:conv(A, 'A'); merusak; kasus 66:konv(B, 'B'); merusak; kasus 67:konv(C, 'C'); merusak; kasus 68:konv(D, 'D'); merusak; kasus 69:konv(E, 'E'); merusak; kasus 70:konv(F, 'F'); merusak; kasus 71:konv(G, 'G'); merusak; kasus 72:konv(H, 'H'); merusak; kasus 73:konv(Saya, 'saya'); merusak; kasus 74:konv(J, 'J'); merusak; kasus 75:konv(K, 'K'); merusak; kasus 76:konv(L, 'L'); merusak; kasus 77:konv(M, 'M'); merusak; kasus 78:konv(N, 'N'); merusak; kasus 79:konv(O, 'O'); merusak; kasus 80:konv(P, 'P'); merusak; kasus 81:konv(Q, 'Q'); merusak; kasus 82:konv(R, 'R'); merusak; kasus 83:konv(S, 'S'); merusak; kasus 84:konv(T, 'T'); merusak; kasus 85:konv(U, 'U'); merusak; kasus 86:konv(V, 'V'); merusak; kasus 87:konv(W, 'W'); merusak; kasus 88:konv(X, 'X'); merusak; kasus 89:konv(Y, 'Y'); merusak; kasus 90:konv(Z, 'Z'); merusak; kasus 32:konv(SPASI, ' '); merusak; kasus 33:konv(SPASI, ' '); merusak; } //UNTUK MENGGUNAKAN SPASI DARI MONITOR SERIAL ANDA HARUS MENGUBAH CASE 91 KE CASE 32 if (KeyReturn ==12) { //UNTUK MENGIRIM DATA KARENA 12 ADALAH TOMBOL KIRIM delay(100); for (int j =0; j  
Kode Penerima LI-FI V 2.0C/C++
Kode Penerima LI-FI V 2.0
/*Kode Penerima LI-FI V 2.0 Ditulis Oleh HOUALEF AHMED RAMZI Dimulai pada 29-9-2020 Pembaruan Terakhir pada 14-10-2020*/#include #define SolarCell A0 //Untuk menentukan pin input sel surya StCursor =0; // Untuk mengontrol kursor lcd A[] ={1, 1, 1, 1, 0}, B[] ={0, 0, 0, 1, 0}, C[] ={0, 0, 0, 1, 1}, D[] ={0, 0, 1, 0, 0}, E[] ={0, 0, 1, 0, 1}, F[] ={0, 0, 1, 1, 0}, G[] ={0, 0, 1, 1, 1}, H[] ={0, 1, 0, 0, 0};int I[] ={0, 1, 0, 0, 1 }, J[] ={0, 1, 0, 1, 0}, K[] ={0, 1, 0, 1, 1}, L[] ={0, 1, 1, 0, 0}, M[] ={0, 1, 1, 0, 1}, N[] ={0, 1, 1, 1, 0}, O[] ={0, 1, 1, 1, 1}, P[ ] ={1, 0, 0, 0, 0};int Q[] ={1, 0, 0, 0, 1}, R[] ={1, 0, 0, 1, 0}, S[] ={1, 0, 0, 1, 1}, T[] ={1, 0, 1, 0, 0}, U[] ={1, 0, 1, 0, 1}, V[] ={ 1, 0, 1, 1, 0}, W[] ={1, 0, 1, 1, 1}, X[] ={1, 1, 0, 0, 0};int Y[] ={1 , 1, 0, 0, 1}, Z[] ={1, 1, 0, 1, 0}, SPASI[] ={1, 1, 1, 1, 1};const int rs =12, en =11, d4 =5, d5 =4, d6 =3, d7 =2;int Cell_Input; // Masukan dari Ambang Batas Sel Surya;int info[5]; //Data DATALiquidCrystal lcd(rs, en, d4, d5, d6, d7);void setup() { pinMode(A0, INPUT); Serial.begin(9600); lcd.begin(16, 2); lcd.setCursor(0, 0); Ambang =analogBaca(SolarCell) + 10; lcd.print("SIAP MENERIMA"); penundaan(5000); lcd.clear();}void BufferClear() { // Menghapus buffer untuk (int i =0; i <5; i++) { info[i] =0; }}void check_condition(int accept_bits[5], int Binaryalpha[5], char Lcdalpha) {//Untuk membandingkan bit yang diterima Dengan basis data if (received_bits[0] ==Binaryalpha[0] &&accept_bits[1] ==Binaryalpha[1] &&Received_bits [2] ==Binaryalpha [2] &&Received_bits[3] ==Binaryalpha[3] &&Received_bits[4] ==Binaryalpha[4]) { lcd.print(Lcdalpha); KursorKontrol(); }}void CursorControler() { // Untuk mengontrol kursor StCursor++; if (StCursor ==16) lcd.setCursor(0, 1);}void loop() { Cell_Input =analogRead(SolarCell); if (Cell_Input> Threshold) { // penundaan deteksi bit awal(10); // waktu untuk (int i =0; i <5; i++) { // simpan data if (analogRead(SolarCell)> Threshold) { info[i] =1; } else { info[i] =0; } penundaan (10); } check_condition(info, A, 'A'); check_condition(info, B, 'B'); check_condition(info, C, 'C'); check_condition(info, D, 'D'); check_condition(info, E, 'E'); check_condition(info, F, 'F'); check_condition(info, G, 'G'); check_condition(info, H, 'H'); check_condition(info, saya, 'saya'); check_condition(info, J, 'J'); check_condition(info, K, 'K'); check_condition(info, L, 'L'); check_condition(info, M, 'M'); check_condition(info, N, 'N'); check_condition(info, O, 'O'); check_condition(info, P, 'P'); check_condition(info, Q, 'Q'); check_condition(info, R, 'R'); check_condition(info, S, 'S'); check_condition(info, T, 'T'); check_condition(info, U, 'U'); check_condition(info, V, 'V'); check_condition(info, W, 'W'); check_condition(info, X, 'X'); check_condition(info, Y, 'Y'); check_condition(info, Z, 'Z'); check_condition(info, SPASI, ' '); BufferClear(); }}

Skema

sel foto harus ditempatkan berhadap-hadapan dengan laser untuk menerima data
LCD:
VSS ---> Tanah
VDD ---> Arduino 5V
K ---> Tanah
Sebuah ---> Arduino 5V
RW ---> Tanah
V0/VEE ---> Vout dari potensiometer
RS ---> Pin digital Arduino 12
ID ---> Pin digital Arduino 11
D4 ---> Pin digital Arduino 5
D5 ---> Pin digital Arduino 4
D6 ---> Pin digital Arduino 3
D7 ---> Pin digital Arduino 2

Sel surya:
Kabel negatif SC terhubung ke ground
Kabel Positif SC terhubung ke pin Analog Arduino A0 pengguna harus memilih apa yang ingin dikirim menggunakan keypad dan LCD, setelah mengetik setiap huruf Anda harus menekan tombol konfirmasi dan akhirnya tekan tombol kirim.
LCD:
VSS ---> Tanah
VDD ---> Arduino 5V
K ---> Tanah
Sebuah ---> Arduino 5V
RW ---> Tanah
V0/VEE ---> Vout dari potensiometer
RS ---> Pin digital Arduino 12
ID ---> Pin digital Arduino 11
D4 ---> Pin digital Arduino 6
D5 ---> Pin digital Arduino 5
D6 ---> Pin digital Arduino 4
D7 ---> Pin digital Arduino 3
KEYPAD:
A ---> Pin Analog Arduino A2 //semua pin analog digunakan sebagai pin digital
B ---> Pin Analog Arduino A1
C ---> Pin digital Arduino 9
D ---> Pin digital Arduino 7
1 ---> Pin digital Arduino 8
2---> Pin digital Arduino 10
3---> Arduino Analog pin A3
RESISTOR PULL-BAWAH:
ujung pertama resistor di sambungkan ke pin Digital 8 dan ujung ke-2 ke ground
ujung pertama resistor di sambungkan ke pin Digital 10 dan ujung ke-2 ke ground
ujung pertama resistor di sambungkan ke pin Analog A3 dan ujung ke-2 ke ground

DIODA LASER:
Katoda LD terhubung ke tanah
Anoda dari LD terhubung ke pin digital Arduino 2

Proses manufaktur

  1. Panduan untuk Penandaan Laser Aluminium
  2. Panduan untuk Penandaan Laser
  3. Apa itu Penandaan Laser Serat?
  4. Penunjuk Laser
  5. Laser Semikonduktor
  6. Laser Padat
  7. Pemutar DVD
  8. Rudal Berpanduan Laser
  9. Laser Elektro-Optik Baru Memancarkan 30 Miliar Pulsa Per Detik
  10. Fiber Optik Tercepat Baru Mentransmisikan 1 Petabit/Detik