Skocz do zawartości

Czołg Bluetooth - problem z zasilaniem i sterownikiem silników


Cinek97

Pomocna odpowiedź

Dobry wieczór,

Jestem "świeży" w sprawach programowania kontrolerów takich jak arduino, ale musiałem zrobić projekt na uczelnie. Wybrałem sobie sterowany przez moduł bluethooth XM-15 czołg. Podłączyłem wszystko z lekką pomocą stworzyłem połączenie  z telefonem, przy użyciu terminala arduino "odpowiadało mi". Więc dodałem bibliotekę do silników dodałem kilka linijek kodu i wtedy zaczął się problem. Używam shielda z L293D i póki arduino jest połączone z komputerem czołg się porusza, ale jeśli podepnę zasilanie do złącza DC, nic nie działa. Używam Arduino Leonardo, a moduł bluethooth jest połączony do pinów 10,11. Czy to wina płytki czy coś w kodzie mam nie tak? Drugie pytanie czy da się zamiast terminala sterować za pomocą "gotowych kontrolerów" z google marketu. Poniżej kod programu:


#include <SoftwareSerial.h>                  
#include <MotorDriver.h>
//Deklaracja portu szeregowego dla Bluetootha
SoftwareSerial Bluetooth(10, 11);             //Utworz instancje Bluetooth 10-RX 11-TX
int buffer_in[200];
int i=0;
int BluetoothDane;                            //do zmiennej int będą zapisywane odebrane dane
MotorDriver m;
int jade=0;
void setup() {
 //i=0;
// jade=0;//uruchomienie transmisji z terminalem 
 while(!Serial); 
   Serial.begin(9600);
   Bluetooth.begin(9600);
   
        //uruchom SerialSoftware z prędkością 9600 baud
  //Serial.println("Polaczyles sie  z modulem Bluetooth czolgiem");
 // digitalWrite(13,LOW);
}

void loop() {

  if (Bluetooth.available())                  //Jeśli są jakieś dane
  {              
  i=0;
  while (Bluetooth.available()>0)  //Odczytujemy dane z bluetooth aż odczytamy wszystko
   {
    buffer_in[i]=Bluetooth.read();           //kopiuje dane z bluetooth do bufora
    i++;
   }
   digitalWrite (13,HIGH);
  Serial.println("Odebrano =\n"); 
 Serial.print(i);
//Serial.print("Zawartosc bufora\n");
for(int j=0;j<i-5;j++)
  Serial.println(buffer_in[j]);
 Serial.print("Koniec bufora\n"); 

  if (i>0) //sprawdzamy czy cokolwiek odebraliśmy
   {  //jesli tak to sprawdzamy co w buforze 
    if (buffer_in[0]==1)
     {
     Serial.println("jade do przodu");
      m.motor(1,FORWARD,255);
      m.motor(4,FORWARD,255);    
     }
    if (buffer_in[0]==2)
    { 
     Serial.println("jade do tylu");
      m.motor(1,BACKWARD,255);
      m.motor(4,BACKWARD,255);
    } 
    if (buffer_in[0]==3)
    {  
      Serial.println("prawo");
      m.motor(1,FORWARD,255);;
      m.motor(4,BRAKE,0);
    }
    if (buffer_in[0]==4)
       { 
      Serial.println("lewo");
      m.motor(4,FORWARD,255);
      m.motor(1,BRAKE,0);
      }
    if (buffer_in[0]==5)
     {
     Serial.println("Stop");
      m.motor(1,BRAKE,0);
      m.motor(4,BRAKE,0);
     }
      //jak już sprawdzilismy co w buforze to trzeba go wyczyscic 
      // i w następnym przebiegu petli znowu czekamy na coś co przyjdzie z blue  
      memset(buffer_in, 0, sizeof(buffer_in));
   }  
   delay(1);                                   //odczekaj 1ms  
  }  
}

 

Edytowano przez Cinek97
Link do komentarza
Share on other sites

10 godzin temu, Cinek97 napisał:

Więc dodałem bibliotekę do silników dodałem kilka linijek kodu i wtedy zaczął się problem. Używam shielda z L293D i póki arduino jest połączone z komputerem czołg się porusza, ale jeśli podepnę zasilanie do złącza DC, nic nie działa.

@Cinek97 witam na forum 🙂 Na pewno byłoby łatwiej pomóc, jeśli pokazałbyś schemat lub dałbyś namiar na ten shield - bez tego trochę trudno coś doradzić.

10 godzin temu, Cinek97 napisał:

jeśli podepnę zasilanie do złącza DC, nic nie działa

Nic to znaczy nawet samo Arduino się nie świeci? Podłączasz zasilanie do złącza DC na Arduino czy na jakimś shieldzie?

Link do komentarza
Share on other sites

Witam

To jest shield wpinany na arduino: https://botland.com.pl/pl/arduino-shield-kontrolery-silnikow-i-serw/8224-l293d-motor-driver-board-sterownik-silnikow-16v06a-nakladka-dla-arduino-iduino-st1138-5903351241267.html

Ogólnie dziś potestowałem dalej i doszedłem do takich wniosków:
-pierwsze wgranie + nie odłączenie kabla USB wpiętego do arduino Leonardo + zasilanie wpięte do shielda wszystko działa, czołg porusza się

- po odłączeniu przewodu od komputera i ponownym go podłączeniu program przestaje działać.

Dodam jeszcze, że to komunikacji z telefonem używam tego https://botland.com.pl/pl/moduly-bluetooth/6642-modul-bluetooth-21-xm-15b-33v5v.html

Link do komentarza
Share on other sites

17 godzin temu, Cinek97 napisał:

po odłączeniu przewodu od komputera i ponownym go podłączeniu program przestaje działać.

Co to znaczy, że przestaje działać? Bo ciągle nie rozumiem czy problem leży w tym, że nagle Arduino nie jest zasilane i nic się nawet nie świeci czy w tym, że jest to problem programowy i układ przestaje działać na wysyłane komendy 😉 Testowałeś najpierw samą elektronikę bez dokładania do tego zdalnego sterowania przez Bluetooth, aby można było wykluczyć problem sprzętowy?

17 godzin temu, Cinek97 napisał:

ponownym go podłączeniu program przestaje działać.

Czy wciskanie resetu na Arduino nie poprawia sytuacji?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Arduino było zasilane napięciem 5,5V, lecz po wyłączeniu zasilania i podłączeniu go z powrotem program przestał działać. Działo się tak jak opisuje jeśli po wgraniu programu arduino było ciągle zasilane wszystko było ok, lecz jeśli odłączyłem choćby na 10 sekund mu zasilanie, program przestawał działać. Przycisk restet nic nie dawał. Co lepsze jak wgrałem ten sam program na Arduino Uno to on działa lecz mam spadki napięcia  na wyjściach shielda. (wcześniej działałem na leonardo). W obu przypadkach używam tego samego kodu podanego w pierwszym poście.

Link do komentarza
Share on other sites

@Cinek97 przyznam, że nie mam pomysłu co to może być (chyba nadal w 100% nie rozumiem problemu), ale na pewno warto spróbować co się stanie, gdy zakomentujesz wszystkie fragmenty programu, które związane są z UARTem. Sprawdź czy wtedy program też przestaje działać po odłączeniu od PC 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.