Программа

Проверим связь с помощью двух простых программ.

Пусть передатчик просто мигает светодиодом: 500 миллисекунд горит, другие 500 — не горит.

const byte ledPin = 2;

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

void loop(){
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);
  delay(500);
}

Ардуино на стороне приёмника будет каждые 100 мс считывать сигнал от ИК-детектора и передавать в последовательный порт на компьютер слово «received» если сигнал есть и «-» если его нет.

const byte photoPin = 3;

void setup() {
  Serial.begin(9600);
  pinMode(photoPin, OUTPUT);
}

void loop() {
  byte v = digitalRead(photoPin); // считываем данные с детектора
  if(v == LOW){ // проверяем, что детектор выдает LOW
      Serial.println("received");
  } else {
      Serial.println("-");
  }
  delay(100);
}

Загружаем программы, подаем питание и выставляем приемник и передатчик таким образом, чтобы светодиод и фотодиод смотрели друг на друга своими линзами.

ИК связь на Arduino

Затем открываем монитор последовательного порта приёмника и проверяем, приходит ли сигнал. В случае успеха, картина будет такая:

ИК связь на Arduino. Монитор порта

Если в мониторе отображаются одни минусы, сигнал детектор ничего не видит. Возможные причины:

  • неверно собрана схема детектора: проверяем все соединения, особенно фотодиод и транзистор;
  • нарушена соосность светодиода и фотодиода, а следовательно сигнал передатчика уходит в сторону от приёмника;
  • не хватает мощности излучателя: можно попробовать пододвинуть детектор поближе к излучателю.

Другая плохая ситуация, когда приемник постоянно выдает «received», хотя должен делать это с периодом 1 сек. Если схемы собраны правильно, то вероятнее всего детектор засвечен паразитным ИК излучением.

В данной ситуации можно попробовать две вещи:

  • приделать к фотодиоду бленду, которую можно сделать с помощью кусочка термоусадочной трубки;
  • подобрать другой ИК спектр, для которого в данных условиях не будет паразитов-конкурентов, засвечивающих детектор.

На текущем этапе уже можно передавать с помощью ИК линии связи простые сигналы. Например, управлять включением и выключением какого-то устройства или робота. Чтобы обеспечить обмен текстом и числами, используем стандартную библиотеку и класс Serial. Об этом далее.


Изменено:

Добавить комментарий

Ваш адрес email не будет опубликован.