Witam serdecznie - to pierwszy mój wpis
Brakuje mi pomysłów na przyczynę problemów w komunikacji przez ATB-BTM-222, więc proszę o radę.
Mam bezproblemowo działającą (po kablu usb) drukarkę 3d opartą na ARDUINO MEGA 2560 + RAMPS 1.4, próbuję dodać komunikację przez BT CLASS1 i pozbyć się kabla. Używam OSX, ale to nie ma większego znaczenia, moduł jest widoczny, mogę się z nim łączyć, mogę zacząć drukować, ale po rozpoczęciu drukowania, druk spowalnia, gubione są kroki, jeżeli wymuszę w programie sterującym wydrukiem czekanie na odpowiedź (coś w rodzaju ping-pong) kroki nie są gubione, ale bardzo wolne i przestają być płynne.
- sprawdziłem 2 różne firmware'y drukarki (Marlin i Repetier) - ten sam efekt, ale minimalną podpowiedź otrzymałem gdy
- zmieniłem wartość
Kod:
BUFSIZE
w firmwarze Marlin do możliwe dużej (64)
Kod:
static char cmdbuffer[BUFSIZE][MAX_CMD_SIZE]
Mam wrażenie, że do momentu wypełnienia bufora wydruk był płynny (czyli optycznie odrobinę dłużej drukowała normalnie - tzn około 5 cm
). Najgorzej wygląda to przy okręgach, krzywych - fragmenty proste drukuje całkiem normalnie - wnioskuję, że czas między punktem A i B jest większy i jest więcej czasu na komunikację (?).
- nie do końca rozumiem jak jest z hardware flow control - manual tutaj mówi "H/W or none":
https://www.maritex.com.pl/media/uploads/products/wi/BLU_BTM222.pdfAle nie podaje komendy na ustawienie H/W. Z kolei tutaj mamy komendy, choć to inny układ:
http://www.tme.eu/gr/Document/dd4f4d23feb6055a8b3eec77ed90af65/BTM-230.pdfATC1/ATC0/ATC?
BTM222 przyjmuje te komendy, choć nie wiem czy to rzeczywista zmiana. Sprawdziłem je - bez zmian.
- układ mogę programować bez problemu przy pomocy komend AT (mam moduł UART>USB, używam screen /dev/... 9600) - dla podglądu włączam ATE1, ATQ0 - gdy wiem, że wszystko jest ok wracam do ATE0, ATQ1.
- sprawdzałem 2 różne BT w komputerze (wbudowany i dongle na usb) - ten sam efekt.
- sprawdzałem prędkości 9600, 34800, 57600 i 115200 (te same ustawione w firmwarze ARDUINO, w programie obsługi drukarki i w samym module BT)
- nie mogę dać sobie rady z wyższymi prędkościami, bo z tego co wiem dla prędkości 230400 musiałbym przekompilowywać bootloader dla arduino, które z kolei nie ma problemu z 250000, ale tej prędkości nie ma w komendach AT BTM-222 (prawda?). Tak czy inaczej efekt przy 9600 i 115200 był podobny
- sprawdzałem UART Serial1 w ARDUINO MEGA - ten sam, który jest używany przy połączeniu przez USB, oraz Serial2 (ARDUINO MEGA ma 3 porty RX/TX) - to samo.
- nie mam niczego co mogłoby akurat w danym momencie siać i zakłócać BT, w tej chwili dystans to 1,5m.
Podsumowując:
- firmware z dowolnymi ustawieniami prędkości działa po kablu USB bez zarzutu (zarówno Marlin jak i Repetier).
- bluetooth jest wykrywalny, łączy się, ma te same prędkości jak po kablu (choć nie musi), drukarka łączy się, mogę ręcznie (przez program) poruszyć osiami XYZ, sterować temperaturą itd.
- zaczynam wydruk, drukarka bez problemu wykonuje ruchy, które są na dłuższym dystansie (takie mam wrażenie) - czyli z pozycji HOME, spokojnie dojeżdża do rozpoczęcia wydruku.
- dłuższe odcinki (mogą być w dwóch osiach - po przekątnej) drukuje normalnie, przy krótkich, niemiłosiernie wolno pracuje, gubi kroki (widzę wysyłane komendy i słyszę odpowiedź drukarki, co któryś krok jest wykonywany), jeżeli wymuszę programowo czekanie na odpowiedź, że krok został wykonany, ruch jest jeszcze wolniejszy.
Zależy mi na BT Class1, bo dużo drukuję i wolałbym puszczać druk na noc z drukarką za ścianą. Wiem, że są inne rozwiązania, np. po TCP/IP, ale ATB BTM-222 wygląda bardzo dobrze i jestem przekonany, że to kwestia jakichś ustawień.
Będę wdzięczny za podpowiedź co mógłbym jeszcze sprawdzić.