Arduino i komunikacja radiowa – Budowa robota #1

odbiornik

O Arduino napisano już dużo, przyszła więc i pora na mnie. Nie będę jednak opisywał na łamach bloga jak mrugać diodami LED. W tej serii artykułów mam zamiar zaprezentować proces budowy prostego robota, którego każdy z Was będzie w stanie zmodyfikować w dowolny sposób.

Co nam będzie potrzebne?

  • Arduino Uno R3 – lub odpowiednik (95 PLN)
  • Płytka stykowa – 830 otworów (12 PLN)
  • Przewody połączeniowe (kilka PLN, można też wykorzystać stary kabel od internetu)
  • 4-kanałowy moduł radiowy wraz z pilotem (29 PLN)
  • Dioda LED i rezystor ~200 Ω (kilka groszy)

Wszystkie te produkty dostępne są w sklepie Botland, tam też sam wykonałem zakupy.

Zacznijmy od rozmowy komunikacji

Podwaliną w tworzeniu zdalnie sterowanych urządzeń jest proces przesyłania danych. My wykorzystamy w tym celu 4-kanałowy moduł radiowy z pilotem w zestawie. Będzie to komunikacja jednostronna, lecz do naszych celów na początek w zupełności wystarczy.

Podłączenie modułu polega na podpięciu:

  • GND
  • Zasilania 5V
  • 4 pinów wyjściowych odbiornika do wejść na Arduino
  • Dodatkowo nóżkę sygnalizującą odebranie informacji do diody LED
  • Opcjonalnie antenę (górny lewy róg).

odbiornik

Programowanie czas zacząć

Gdy nasza płytka jest już gotowa, możemy włączyć Arduino IDE, to tutaj zaczyna się nasza przygoda. Na początku kodu należy zadeklarować piny od 2 do 5 jako wejściowe – ich stan będzie odpowiadał za wciśnięcie konkretnego przycisku na pilocie. Następnie w pętli głównej programu odczytujemy czy przycisk na pilocie został wciśnięty, poprzez odczyt stanu wejścia konkretnego pinu.

// 4-kanałowe sterowanie radiowe
int A = 3;
int B = 5;
int C = 2; 
int D = 4;
 
void setup() {
  Serial.begin(9600);
 
  pinMode(A, INPUT);
  pinMode(B, INPUT);
  pinMode(C, INPUT);
  pinMode(D, INPUT);
}
 
void loop() {
  int A_ = digitalRead(A);
  int B_ = digitalRead(B);
  int C_ = digitalRead(C);
  int D_ = digitalRead(D);
 
  // Nie odebrano sygnału
  if(A_ == LOW && B_ == LOW && C_ == LOW && D_ == LOW) {
    Serial.println("A- B- C- D-");
  }
 
  //Wciśnięto "A"
  if(A_ == HIGH) {
    Serial.println("A+");
  }
 
  if(B_ == HIGH) {
    Serial.println("B+");
  }
 
  if(C_ == HIGH) {
    Serial.println("C+");
  }
 
  if(D_ == HIGH) {
    Serial.println("D+");
  }
 
  delay(100);
}

Odebrany sygnał wypisywany jest do Monitora Portu Szeregowego w Arduino IDE. Można go otworzyć z poziomu menu>Narzędzia>Monitor Portu Szeregowego (Ctrl+Shift+M).

Na końcu pętli należy umieścić odpowiednie opóźnienie, w celu stabilizacji odebranego sygnału. Bez opóźnienia moglibyśmy otrzymać na wejściu stan wysoki, następnie 10 razy stan niski, a po tym znów wysoki, mimo ciągłego trzymania przycisku. Aby polepszyć jakość sygnału możemy (w górnym lewym rogu odbiornika) zamontować dodatkową antenę, której optymalna długość powinna wynosić 69 cm.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *