Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Morsecode-communicatie met lasermodule – Tweezijdig Arduino-project

Onderdelen en benodigdheden

Onderdeel Aantal
Arduino UNO 2
Breadboard 2
Autodesk LASER TRANSMITTER 1
Fotoweerstand (LDR) 1
Draadjes (jumper wires) 1 set

Apps en online diensten

App
Arduino IDE

Over dit project

Morsecode

Morsecode betekent het omzetten van alfanumerieke symbolen (letters en cijfers) in stippen en strepen. Elk symbool heeft een unieke combinatie van stippen en strepen. Morsecode wordt gebruikt om geheime of gecodeerde data te verzenden. In dit project heb ik de zender- en ontvangersectie van de Morsecode-communicatie gemaakt. De uniekheid van dit project ten opzichte van andere Morsecode-projecten is dat het algoritme van de ontvangersectie echt simpel is.

Morsecode-communicatie met lasermodule – Tweezijdig Arduino-project

Stap 1: Zendersectie

De zendersectie stuurt de invoerdata via de LASER.

Morsecode-communicatie met lasermodule – Tweezijdig Arduino-project

Benodigde hardware

  • Arduino Uno
  • LASER-transmitter
  • Breadboard
  • Draadjes

Aansluitingen

Sluit de positieve pin van de LASER aan op digitale pin 13 van de Arduino (zoals in de code geprogrammeerd). Sluit de GND van de LASER aan op de GND van de Arduino.

Programma

Het algoritme van de code:

  1. De te verzenden data wordt als invoer bewaard in een char-array.
  2. De LED-pin die moet knipperen wordt gedefinieerd.
  3. De snelheid van de Morsecode wordt ingesteld.
  4. Stippen en strepen worden gedefinieerd.
  5. Het ingevoerde karakter wordt gecontroleerd via switch-case en de bijbehorende HIGH/LOW van de LASER wordt verstuurd.

Stap 2: Ontvangersectie

De gecodeerde data die de zender uitzendt wordt ontvangen, verwerkt en op de Seriële Monitor getoond.

Morsecode-communicatie met lasermodule – Tweezijdig Arduino-project

Benodigde hardware

  • Arduino Uno
  • LDR (fotoweerstand)
  • Weerstand – 10k ohm
  • Breadboard
  • Draadjes

Aansluitingen

Sluit één einde van de LDR aan op 5V van de Arduino. Het andere einde van de LDR verbindt met de 10k ohm weerstand EN met analoge ingang A0. Het andere einde van de weerstand gaat naar GND van de Arduino.

Programma

Het algoritme in de ontvangersectie is het makkelijkste algoritme dat er is. Het is gebaseerd op observaties.

  1. Als er geen LASER op de LDR valt, is de waarde minder dan 1000. Als de waarde boven 1000 komt zelfs als de LASER niet brandt, moet je de LDR afschermen tegen extra licht. Hier is de LDR afgedekt met een koepel van zwart grafisch papier.
  2. Als de LASER op de LDR valt, gaat de waarde boven 1000, en dan gaat het in een lus.
  3. Nu de waarden kwantificeren: als de waarde boven 1000 gaat, geef het een '1', anders een '0'.
  4. In de lus tellen we het aantal '1's en '0's. Stel tellers 'a' en 'f' in. Tel het aantal '1's en bewaar in 'a', tel het aantal '0's en bewaar in 'f'.
  5. Controleer nu de specifieke waarden van 'a' en 'f'. Elk karakter heeft een andere set van 'a' en 'f'. De matchende waarde wordt getoond.

Beperking

De bijgevoegde code print specifieke karakters. Je kunt de code uitbreiden met combinaties om alle karakters weer te geven. Het hoofddoel van de code is om het algoritme en de werking te begrijpen.

Code

CODE-1 – VOOR HET BESTUREN VAN DE LASER EMITTER Arduino

int led13 = 13; 
int dotLen = 200; 
int dashLen = dotLen * 3; 
int elemPause = dotLen; 
int Spaces = dotLen * 3; 
int wordPause = dotLen * 7; 

void setup() { 
  pinMode(led13, OUTPUT); 
} 

void loop() { 
  for (int i = 0; i < sizeof(stringToMorseCode) - 1; i++) { 
    char tmpChar = stringToMorseCode[i]; 
    tmpChar = toLowerCase(tmpChar); 
    GetChar(tmpChar); 
  } 
  LightsOff(8000); 
} 

void MorseDot() { 
  digitalWrite(led13, HIGH); 
  delay(dotLen); 
} 

void MorseDash() { 
  digitalWrite(led13, HIGH); 
  delay(dashLen); 
} 

void LightsOff(int delayTime) { 
  digitalWrite(led13, LOW); 
  delay(delayTime); 
} 

void GetChar(char tmpChar) { 
  switch (tmpChar) { 
    case 'a': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'b': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'c': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'd': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'e': MorseDot(); LightsOff(elemPause); break; 
    case 'f': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'g': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'h': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'i': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'j': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'k': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'l': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'm': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'n': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'o': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'p': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 'q': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'r': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 's': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    case 't': MorseDash(); LightsOff(elemPause); break; 
    case 'u': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'v': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'w': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'x': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'y': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break; 
    case 'z': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break; 
    default: LightsOff(Spaces); 
  } 
}

CODE-2 – VOOR DE ONTVANGER Arduino

int sensorPin = 0; 
int sensorValue = 0; 
int a, f; 

void setup() { 
  Serial.begin(9600); 
} 

void loop() { 
  sensorValue = analogRead(sensorPin); 
  if(sensorValue > 1000) { 
    for(int i = 0; i <= 13; i++) { 
      sensorValue = analogRead(sensorPin); 
      if(sensorValue > 1000) { 
        a++; 
        delay(200); 
      } else { 
        f++; 
        delay(200); 
      } 
    } 
  } 
  if(a == 4 && f == 10) { Serial.print("a"); } 
  if(a == 6 && f == 8) { Serial.print("b"); } 
  if(a == 8 && f == 6) { Serial.print("c"); } 
  if(a == 1 && f == 13) { Serial.print("e"); } 
  if(a == 2 && f == 12) { Serial.print("i"); } 
  if(a == 10 && f == 4) { Serial.print("j"); } 
  if(a == 7 && f == 7) { Serial.print("g"); } 
  if(a == 9 && f == 5) { Serial.print("o"); } 
  if(a == 3 && f == 11) { Serial.print("s"); } 
  f = a = 0; 
  delay(200); 
}

Aangepaste onderdelen en behuizingen

Morsecode-communicatie met lasermodule – Tweezijdig Arduino-project

Schema's

Morsecode-communicatie met lasermodule – Tweezijdig Arduino-project

Productieproces

  1. Uitgebreide Gids voor Lasermarkering: Typen, Voordelen en Toepassingen
  2. Laser Pointer: Ontwerp, Productie en Veiligheidsoverzicht
  3. Semiconductor Lasers: Precieze Lichtgeneratie voor Moderne Technologie
  4. Streepjescodescanner: Technologie, Ontwerp en Toekomstige Trends
  5. Laser-gestuurde Raketten: Ontwikkeling, Productie en Strategische Impact
  6. Een interactieve laserprojector bouwen met Zigbee-sensoren en Gravio Edge-platform
  7. UART-communicatie tot stand brengen tussen Raspberry Pi 4 en HiFive1-boards
  8. Gebaren-gecontroleerde Robot Aangedreven door Raspberry Pi
  9. Een DTMF-decoder bouwen met alleen een Arduino – Geen extra IC's nodig
  10. Python 3 naar Arduino UNO: Eenvoudige Commando Besturing en LED Demo
  11. 4 Belangrijkste Voordelen van Low-code Oplossingen voor Industriële Productie