цифровая электроника
вычислительная техника
встраиваемые системы

 

Проект Arduino: передача данных с помощью ультразвука

Автор: Mike(admin) от 7-06-2018, 06:55

Некоторые из интересных и необычных проектов с использованием Arduino и соответствующих аксессуаров – это те, которые кажутся совершенно очевидными в непредусмотрительности. Иногда решение проблемы настолько изящно, что вам интересно, почему это никогда не приходило вам в голову раньше.


Проект Arduino: передача данных с помощью ультразвука

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


С помощью ультразвуковых модулей приема и передачи, снятых с датчика HC-SR04, можно организовать простую настройку для использования ультразвуковых преобразователей для односторонней передачи данных. Управление передающей частью осуществляется напрямую, а для принимающей части нужно организовать подключение в соответствии с приведенной ниже схемой.


Проект Arduino: передача данных с помощью ультразвука

На макетке это может выглядеть так:


Проект Arduino: передача данных с помощью ультразвука

Вот код передающей части:



void setup() 
{
    Serial.begin(115200);
    pinMode(3,OUTPUT);
}

void loop() 
{
   send("Ultrasonic communication\n");
   send("Hello World\n\n");   
}

void send(String msg)
{
   byte ch;
   unsigned int pos = 0;
   unsigned int sz = msg.length();
   while(pos<sz)
   {
      ch = msg.charAt(pos);
      Serial.print((char)ch);
      tone(3,40000);
      delay(10);
      noTone(3);
      for(int i=0;i<8;i++)
      {
         boolean b;
         b = bitRead(ch,7-i);
         if(b) 
         {
            tone(3,40000);
            delay(2);
         }
         else
         {
            tone(3,40000);
            delay(4);
         }
         noTone(3);
         delay(11);
      }
      pos++;
   }
}

Далее код принимающей части:



int pos = 0;
unsigned char CH = 0;
unsigned int bits1 = 0;
boolean capture = false;

void setup() 
{
   Serial.begin(115200);
   pinMode(5,INPUT_PULLUP);
}

void loop() 
{
   if(digitalRead(5))
   {
      bits1 = 0;
      unsigned long deltaT = millis();
      while(millis()-deltaT <= 10) if(digitalRead(5)) bits1 ++;
      //Serial.println(bits1); 
      if(capture)
      {
         boolean b = 0;
         if(bits1 > 290 && bits1 < 600) b = 0;
         if(bits1 > 20 && bits1 < 290) b = 1;
         if(b) bitSet(CH,7-pos); else bitClear(CH,7-pos);
         //Serial.print(b);
         pos++;
         if(pos == 8)
         {
            Serial.print((char)CH);
            pos = 0;
            capture = false;
         }
      }
      if(bits1 > 600) 
      {
         capture = true;
         pos = 0;
      }
   }
}



© digitrode.ru


Теги: Arduino, ультразвук, HC-SR04



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий