• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Automatyczna blokada przy użyciu Hc-05 i serwo
#1
Witam serdecznie wszystkich Forumowiczów, 
tworzę sobie taki mały projekt, mianowicie automatyczną blokadę napędu w rowerze przy użyciu serwo. Zamysł był taki, że po sparowaniu telefonu z modułem bluetooth ma pójść sygnał do serwo, który wykona ruch o 90 stopni, następnie po rozłączeniu się z bluetooth serwo wracałby do pozycji początkowej, czyli blokować napęd i chciałem zapytać czy jest w ogóle taka możliwość. Próbowałem wszystkich znanych mi sposób napisania tego w kodzie, ale bez skutku, więc wolę się dowiedzieć czy w ogóle istnieje taka możliwość. Jeśli tak to czy ktoś mógłby mi w tym pomóc. Bez sparowania bluetooth szybko mruga, czyli tak jak powinno, następnie przy sparowaniu zwalnia mruganie, jednak po rozłączeniu moduł mruga cały czas tak jakby był sparowany, nie wraca do tego szybkiego mrugania i nie wiem czy to też nie stanowi jakiegoś problemu.

Posiadam Arduino Uno, najzwyklejszy malutki serwo oraz moduł bluetooth Hc-05.
 
Odpowiedź
#2
Podrzuć kod, który napisałeś, będziemy myśleć co z nim zrobić żeby zadziałało.
 
Odpowiedź
#3
A tak będzie wyglądało rozładowanie baterii  lub zerwanie połączenia z przyczyn niezależnych:
   
Lepiej chyba użyć urządzenia, które nie wymaga parowania, np. modułu radiowego na 433 MHz lub NRF24.
Ta technologia nawet w komercyjnym zastosowaniu z samochodami pozostawia wiele do życzenia, choć jest bardzo precyzyjna, samochód nie otworzy się jeśli stoi się od niego dalej niż metr, nie wyłączy się też jeśli już został odpalony i kluczyk poszedł sobie z torebką żony na zakupy. Przynajmniej póki działa prawidłowo.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#4
Niestety wiem czym to grozi, dokładnie to sugerowałem prowadzącemu, co jest w memie, jednak takie dostałem wymogi i muszę się tego trzymać.

Kod:
#include <Servo.h>
#include <SoftwareSerial.h>

Servo myservo;

SoftwareSerial bluetooth(2, 3); // RX, TX

int currentPos = 0; // początkowa pozycja serwomechanizmu

void setup() {
  myservo.attach(7); // podłączenie serwomechanizmu do pinu 7
  bluetooth.begin(9600); // inicjalizacja modułu Bluetooth
  myservo.write(currentPos); // ustawienie początkowej pozycji serwomechanizmu
}

void loop() {
  if (bluetooth.available()) { // jeśli dane są dostępne z modułu Bluetooth
    char incomingByte = bluetooth.read(); // odczytaj dane
    if (incomingByte == '0') { // jeśli otrzymano wartość 0
      if (currentPos != 0) {
        for (int i = currentPos; i >= 0; i--) { // obracaj serwomechanizm z obecnej pozycji do pozycji 0 stopni
          myservo.write(i);
          delay(15); // opóźnienie między krokami
        }
        currentPos = 0; // aktualizuj pozycję serwomechanizmu
      }
    }
    if (incomingByte == '1') { // jeśli otrzymano wartość 1
      if (currentPos != 90) { // jeśli serwomechanizm nie jest już w pozycji 90 stopni
        for (int i = currentPos; i <= 90; i++) { // obracaj serwomechanizm z obecnej pozycji do pozycji 90 stopni
          myservo.write(i);
          delay(15); // opóźnienie między krokami
        }
        currentPos = 90; // aktualizuj pozycję serwomechanizmu
      }
    }
  }
}
Mój kod wygląda następująco, działa przy użyciu Terminalu, bo sprawdzałem na telefonie, jednak chciałem, aby to odbywało się automatycznie, czyli po sparowaniu wysyła sygnał 1 i po rozłączeniu 0 i nie wiem czy to w ogóle jest możliwe.
 
Odpowiedź
#5
Moduł HC-05 ma na jednym z pinów status - podłączony lub nie. Wystarczy w loop czytać wartość pinu i wiesz, czy serwo ma ruszyć, czy nie.
 
Odpowiedź
#6
Trochę okrężną drogą, ale rozwiązałem problem. Mianowicie stworzyłem aplikację w Mit App Inventor, która działała na zasadzie takiej, że przy sparowanym urządzeniu, gdy włączę aplikację, to automatycznie wysyła 1, żeby poruszyć serwo, a po naciśnięciu "Wstecz" w telefonie, to wyłącza aplikację i wysyła 0, żeby serwo wróciło do pozycji początkowej i rozłączyło urządzenia.

Temat do zamknięcia, dziękuję wszystkim za pomoc Smile
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości