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

 

Проект 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




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

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

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