ROWERY I INNE POJAZDY ELEKTRYCZNE - FORUM ARBITER Strona Główna

ROWERY I INNE POJAZDY ELEKTRYCZNE - FORUM ARBITER

Rowery, trójkołowce, ryksze, skutery, hulajnogi i inne lekkie pojazdy elektryczne
Porady, zdjęcia, filmy, konstrukcje, opinie


FAQFAQ  SzukajSzukaj  Szukaj z GoogleSzukaj z google  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum
E-biker.pl zestawy do konwersji rowerów elektrycznych

Poprzedni temat «» Następny temat
Przepis na Sabvotona i Bluetooth za 19 złociszy
Autor Wiadomość
Bartosh 
stażysta


Dołączył: 02 Maj 2017
Posty: 105
Skąd: Gdańsk
Wysłany: Pon 21 Sie, 2017   Przepis na Sabvotona i Bluetooth za 19 złociszy

Ahoj. Opiszę tutaj moje przygody z odpaleniem połączenia bluetooth w Sabvotonie SVMC 72V 150A (M). Kontroler nabyłem z kablem USB, jednak bez dodatkowego modułu BT. Po zbudowaniu pierwszego bajka ilość zmian podczas eksperymentów z różnymi nastawami sterownika okazała się bardzo duża. Kto bawił się w wielokrotne zdejmowanie boczków Falcona i targanie laptopa na plecach, ten wie, o czym mówię. Jednak główną motywacją była potrzeba włączania - z przycisku lub aplikacji mobilnej - hamowania regeneracyjnego i slide recharge w terenie na żądanie, np. podczas dłuższych zjazdów. Widziałem, że kilka osób zadawało nieśmiałe pytania w tym temacie. Ja również zaliczam się do tych osób. Pytania pozostały bez odpowiedzi, wobec czego wrzucam na forum własne znaleziska... a nóż komuś się to przyda.

Zacznę od d* strony, dla niecierpliwych. Przepis, jak na szybko odpalić dziada, nie wgłębiając się (prawie) w szczegóły techniczne:
- Kupujesz to: https://allegro.pl/listing?string=modul%20hc-05
- Ściągasz to: https://realterm.sourceforge.io/ i ustawiasz: baudrate 38400 (default dla HC-05) lub 9600 (default dla HC-06), 8 bitów danych, parzystość none, 1 bit stopu.
- Bierzesz jakiś stary kabel z gniazdem USB i podłączasz do niego moduł w ten sposób: RX - zielony, TX - biały, GND - czarny, VCC - czerwony. Do gniazda wpinasz męski kabel USB, który dostałeś w komplecie z Sabvotonem.
- Podpinasz moduł trzymając wciśnięty mały "guzik" na płytce.
- Odpalasz realterm’a, łączysz się z portem (Open) i konfigurujesz moduł tak (wersja minimum): AT+UART=19200,0,1 Ewentualnie zmieniasz nazwę przez AT+NAME=TWOJA_NAZWA
- Pamiętasz o tym, że po każdym poleceniu ma być jakaś odpowiedź, np. OK. Nie ma? Coś jest nie tak. Sprawdź inne nastawy dla portu.
- Moduł podłączasz teraz do kontrolera tak, jak wcześniej podłączałeś go do komputera, ale zamieniasz ze sobą przewody RX i TX.
- Zabezpieczasz płytkę kaptonem i upychasz ją w obudowie.
- Ostatecznie ściągasz zmodowaną przeze mnie apkę stąd https://www.dropbox.com/s...BcDPne5L1a?dl=0 parujesz BT (1234), odpalasz, łączysz się, ubijasz apkę, odpalasz ją ponownie i ponownie się łączysz (dlaczego tak? dziękuj Chińczykom).
- Voila! Możesz konfigurować Sabvotona z telefonu. Jeśli się nie udało za pierwszym razem, czytaj dalej.

Dla tych, którzy są zainteresowani tematem, poniżej kilka szczegółów technicznych.

1. Sprzęt

Na początek moduł BT. Po zdjęciu obudowy z kabla USB od kontrolera widać, że w środku siedzi układzik CH340, prosty konwerter USB-RS. Aby stworzyć sobie link bluetooth, podłączamy po stronie Sabvotona moduł HC-05 lub HC-06 (do kupienia za grosze np. na Allegro). Ja wybrałem HC-05 z racji tego, że obsługuje tryby master oraz slave (o tym później), a cena jest podobna. Zanim podepniemy moduł, trzeba go skonfigurować. Konfiguracja polega na puszczeniu odpowiednich poleceń AT, szczegóły np. tutaj: http://elecfreaks.com/sto...4%20revised.pdf Ja wykorzystałem kabel USB od Sabvotona i stare gniazdo USB. Moduł podłączyłem według schematu: RX - zielony, TX – biały, GND – czarny, VCC – czerwony. Aby zaprogramować moduł, musi odpowiadać na polecenia AT wg. Instrukcji w linku powyżej (zależnie od modelu). W moim przypadku zadziałało przytrzymanie przycisku przy podłączaniu modułu do portu, tudzież okazjonalne jego kliknięcie nawet po podłączeniu. Ważne, aby terminal zwracał jakieś wyjście. Moduł HC-05 według dokumentacji komunikuje się z baud rate 38400, 8 bitów danych, parzystość brak, 1 bit stopu. Dla modułu HC-06 najprawdopodobniej defaultowo będzie ustawione 9600 bodów. Nastawy zwraca polecenie AT+UART.

Gdy mamy podpięty sprzęt i możemy się z nim komunikować, jesteśmy w stanie robić różne ciekawe rzeczy, m.in.:
- AT+NAME=NAZWA - ustawiamy własną nazwę urządzenia
- AT+ROLE=0 lub 1 - ustawiamy rolę na slave lub master, u nas 0 = slave. Jest jeszcze pętla zwrotna, czyli wartość 2, dla nas w tym momencie nieprzydatna.
- AT+ADDR? - zwraca adres sprzętowy modułu
- AT+PSWD=PIN - ustawiamy pin (do parowania)
- AT+UART=19200,0,1 - najważniejsze dla nas polecenie - ustawiamy parametry przesyłu danych na 19200 bodów, 1 bit stopu oraz, co jest BARDZO ważne, kontrolę parzystości na ODD (!). Bez tego nasz moduł nie "pogada" ze sterownikiem i będzie bezużyteczny.
- AT+ORGL - przywraca ustawienia fabryczne. Zacznij od tego, jeśli korzystasz z używanego wcześniej modułu.

Więcej poleceń znajdziesz w dokumentacji, którą linkowałem wyżej. Jest ich sporo. Ważna informacja, jeśli niektóre polecenia nie zwracają żadnego wyjścia (a powinny), to przed wciśnięciem enter (lub wysłaniem polecenia) przytrzymaj mikrostyk na module. Przykładem takiego polecenia w HC-05 jest AT+NAME? Ciekawostka: moduł można skonfigurować w ten sposób, aby komunikował się tylko z wybranym urządzeniem (polecenie AT+BIND).

OK, skąd takie a nie inne nastawy portu? Wynikają z analizy komunikacji na kablu podczas działania aplikacji desktopowej SVMC, jak również aplikacji mobilnej na Androidzie odpalonej w trybie deweloperskim (można wyciągnąć BT HCI snoop log). W obu przypadkach widać ramki konfiguracyjne dla takich parametrów. Zmiana nastaw poleceniem AT+UART jest więc konieczna, aby ruszyć dalej.

Po zaprogramowaniu modułu możemy go podłączyć do gniazda Sabvotona. Ważne, aby przewody od pinów RX oraz TX zamienić w tym momencie miejscami. Moduł po podpięciu do kontrolera powinien szybko mrugać diodą. Po sparowaniu z telefonem lub komputerem dioda powinna migać z mniejszą częstotliwością. Część sprzętową mamy za sobą.

2. Soft

Po podpięciu modułu do Sabvotona i parowaniu BT, możemy zrobić kilka rzeczy:

- Korzystać z aplikacji mobilnej na Androida. Aplikacja jest zbugowana, ale działa. Trzeba do niej cierpliwości, ale ma całkiem przejrzysty interfejs i robi co trzeba. Oryginalna wersja nie działała na polskiej wersji językowej systemu z uwagi na pewien bug. Ale zrobiłem na szybko mod, wersja na polskiego Androida do pobrania tutaj: https://www.dropbox.com/s...BcDPne5L1a?dl=0

Recepta na poprawne działanie aplikacji, nie wgłębiając się w szczegóły: z reguły po pierwszym uruchomieniu programu i połączeniu z Sabvotonem zwracane są zerowe wartości. Dlaczego tak jest, wiedzą tylko Chińczycy. Remedium to ubicie apki i jej ponowne uruchomienie. Wtedy program zaczytuje dane. Możliwe, że ma to związek ze zmianami w samym Androidzie. Warto również wiedzieć, że aplikacja nie radzi sobie z działaniem w tle. Raz ją opuścisz, ubij i połącz się ponownie - zaoszczędzisz nerwów (-; Po każdej zmianie parametrów, trzeba je zapisać na ostatniej karcie, jeśli mają być widoczne po ponownym uruchomieniu sterownika.

- Korzystać z aplikacji windowsowej po uprzednim sparowaniu urządzenia i utworzeniu profilu SPP (wirtualny port COM). Mamy wówczas dostęp do wszystkich nastaw oraz (chińskiej) aplikacji MQCON. Jeśli zależy Ci na tej opcji, ale nie masz w komputerze wbudowanego modułu BT, możesz zakupić drugi moduł HC-05 i skonfigurować go w trybie master (AT+ROLE=1), po zbindowaniu ze wskazanym slavem (AT+ADDR?) będzie działał i łączył się automatycznie zaraz po podłączeniu.

- Możemy także pójść krok do przodu i stworzyć własną aplikację lub pobawić się tworzenie własnych ramek, które będzie rozumiał sterownik. Możliwości jest wiele. Kilka słów na ten temat poniżej.

3. Co to w ogóle jest?

Na koniec kilka informacji na temat komunikacji ze sterownikiem - tylko dla chętnych. Aby przesłać swoje nastawy, nie musimy wcale korzystać z laptopa ani zbugowanej aplikacji na Androida. Przy okazji analizy danych wędrujących po kablu, udało się zrozumieć "język", którym mówi kontroler. Okazuje się, że Sabvoton obsługuje protokół MODBUS. Więcej o nim tutaj: https://pl.wikipedia.org/wiki/Modbus#Modbus_RTU

Nie będę zagłębiał się w opis samego protokołu od podstaw. Przedstawię za to poniżej kilka przykładowych ramek z omówieniem - łatwiej będzie to zrozumieć.

1. Przywitanie
01 06 0F C7 34 21 ED FB

Prawdopodobnie umożliwia dalszy zapis wartości. Z moich eksperymentów wynika, że kontroler nie zapisuje danych do rejestrów bez tego hendszejka. Wysyłam zawsze na dzień dobry po nawiązaniu połączenia.

2. Slide recharge ON
01 06 0A 28 00 01 CB DA

3. Slide recharge OFF
01 06 0A 28 00 00 0A 1A

4. Prąd slide recharge na 100A
01 06 0A 29 00 64 5A 31

5. Regen ON
01 06 0A 1F 00 01 7A 14

6. Regen OFF
01 06 0A 1F 00 00 BB D4

7. Flux ON
01 06 0A 25 00 01 5A 19

8. Flux OFF
01 06 0A 25 00 00 9B D9

9. Fazowy na 350A (-;
01 06 09 F9 01 5E DA 0F

10. Zapis ustawień
01 06 0A 5F 00 01 7B C0

Omówmy przykład ustawienia prądu slide recharge na 100A, czyli 01 06 0A 29 00 64 5A 31.
01 - nasze urządzenie
06 - oznacza zapis do rejestru
0A 29 - oznacza adres tegoż rejestru
00 64 - wartość, którą zapisujemy
5A 31 - suma kontrolna

Ważna informacja - jeżeli chcesz modyfikować z ręki wartości w ramkach, musisz policzyć nową sumę kontrolną. Owa suma kontrolna to "specjalna" odmiana CRC16 MODBUS RTU i jest podawana w porządku little endian, czyli należy podać najpierw bajt młodszy, po naszemu: dajesz bajty sumy od końca. Tutaj jest przydatny kalkulator: https://www.lammertbies.n...alculation.html

Wszystkie wartości podajemy oczywiście w systemie szesnastkowym. Na przykład zmiana prądu slide recharge na 10A będzie wyglądać tak: 01 06 0A 29 00 0A DB DD

Co nam daje ta wiedza? Można stworzyć własne rozwiązanie sprzętowe/programowe lub zintegrować istniejące ze sterownikiem. Można stworzyć jakiś ciekawy projekt na Arduino, jakiś guzik flux on/off, wszystko, czego zmianę umożliwia aplikacja... i więcej. Przez "więcej" rozumiem ukryte rejestry, których analizę zostawiam Kolegom lub na czas wolniejszy (istnieje bardzo fajna implementacja Modbusa dla Pythona, w krótkim czasie można stworzyć fuzzer i "wykopać" nieudokumentowane rejestry. O ile zmiana prądów fazowych poza zakres jest ograniczona na innym poziomie [niestety, sprawdzone], to może uda się dotrzeć do innych funkcji sterownika).

Na szybko mogę zaproponować interesujące rozwiązanie na Androida, do wdrożenia w ciągu 2 minut. Instalujemy Serial Bluetooth Terminal, dodajemy guziki z presetami dla opcji, które potrzebujemy (np. Flux ON/OFF, Slide recharge ON/OFF, zmiana prądów fazowych). Efekt - mamy stabilną i zawsze działającą aplikację do dowolnych zastosowań. Korzystam z tego rozwiązania na co dzień i polecam. Działa w tle, łączy się w przypadku padnięcia linku.

Poza zapisem do rejestrów można je oczywiście odczytywać. Kontroler zwraca informacje na temat temperatury, prądu, obrotów - wszystko, co widać w aplikacji desktopowej, można wyciągać i dowolnie obrabiać. Moja motywacja ograniczała się jednak do zamiany kilku podstawowych nastaw, dlatego w odczyt się nie zagłębiałem. Warto jednak przy eksperymentach czytać po jednym bajcie, gdyż rejestry są porozrzucane. Komenda do odczytu to 03 (zamiast 06), przykładowo 01 03 09 F4 00 0F 47 A0 odczytuje 15 bajtów z rejestrów zaczynających się pod adresem 09 F4.

Tyle z mojej strony. Na zakończenie dodam, że wszystkie informacje zawarte powyżej dotyczą tylko i wyłącznie mojej konfiguracji, mogą zawierać błędy i nie ma gwarancji, że to zadziała u Ciebie. Nie ponoszę odpowiedzialności za ew. szkody (-; Przydatne? Kliknij "Pomógł". Dzięki i powodzenia.
 
 
tas 
szef


Pomógł: 154 razy
Dołączył: 02 Kwi 2012
Posty: 6156
Skąd: Beskidy
Wysłany: Pon 21 Sie, 2017   

Drugą opcją jest przechwytywanie ramek jakie wysyła sterownik z parametrami jazdy na zewnątrz, a wysyła komplet informacji aby obsługiwać komputerek pokładowy. Całą ramkę (jest specjalnie wydzielona na potrzeby tych informacji) ładnie widać w monitorze rs232 przy komunikacji po kablu
_________________
Silniki, sterowniki : SKLEP tel: 792304416
Kod rabatowy: "FORUM"
Ogniwa: SKLEP
Blog o ebajkach BLOG
 
 
Tomas 
szef



Pomógł: 20 razy
Wiek: 36
Dołączył: 23 Mar 2015
Posty: 1684
Skąd: Gdańsk
Wysłany: Pon 21 Sie, 2017   

Super sprawa i super opis :smile: Testowane wczoraj na moim bajku i działa bez problemu :cool:
_________________
Jeżdżę na:
teren:POISON ATOM
miasto:CARRERA BANSHEE
 
 
umbur 
prezes


Pomógł: 25 razy
Wiek: 35
Dołączył: 05 Paź 2015
Posty: 581
Skąd: Bielsko-Biała
Wysłany: Pon 21 Sie, 2017   

Świetny temat. Niestety nie kliknę "pomógł", bo sam założyłeś ten wątek i się nie da, ale WIELKIE dzięki. :wink:
 
 
tas 
szef


Pomógł: 154 razy
Dołączył: 02 Kwi 2012
Posty: 6156
Skąd: Beskidy
Wysłany: Wto 22 Sie, 2017   

Można także użyć modułu HC-06 ale zamiast polecenia AT+UART=19200,0,1 z wersji 05 użyć dla wersji 06 2 poleceń:
Kod:
AT+BAUD5
AT+P0
_________________
Silniki, sterowniki : SKLEP tel: 792304416
Kod rabatowy: "FORUM"
Ogniwa: SKLEP
Blog o ebajkach BLOG
 
 
Bartosh 
stażysta


Dołączył: 02 Maj 2017
Posty: 105
Skąd: Gdańsk
Wysłany: Wto 22 Sie, 2017   

A nie działało Ci polecenie at+uart na hc-06? Na tej wersji modułu też sprawdzałem i konfigurowałem w ten sam sposób. Chociaż to było dosyć dawno...
 
 
tas 
szef


Pomógł: 154 razy
Dołączył: 02 Kwi 2012
Posty: 6156
Skąd: Beskidy
Wysłany: Wto 22 Sie, 2017   

Niestety 06 nie mają takiej komendy, trzeba to aktywować osobno.
Tzn, nie wiem czy działa 06, bo tam nawet bitu stopu się nie da ustawić (ale pewnie jest nie zmieniane 1) :P

http://wiki.pinguino.cc/i...-06_AT_commands
_________________
Silniki, sterowniki : SKLEP tel: 792304416
Kod rabatowy: "FORUM"
Ogniwa: SKLEP
Blog o ebajkach BLOG
 
 
Bartosh 
stażysta


Dołączył: 02 Maj 2017
Posty: 105
Skąd: Gdańsk
Wysłany: Wto 22 Sie, 2017   

Z sabkiem 06 jako taki działa, bo... u Tomasa siedzi właśnie hc-06 i komunikuje się z apką na 100%. Może to kwestia wersji/odmian płytki?
_________________
Grzybiarz v1.0: https://forum.arbiter.pl/viewtopic.php?t=6548
 
 
tas 
szef


Pomógł: 154 razy
Dołączył: 02 Kwi 2012
Posty: 6156
Skąd: Beskidy
Wysłany: Wto 22 Sie, 2017   

No tak, 06 działa, ale...

Ale... Powyższy opis działa tylko ze sterownikami Sabvoton (M) czyli produkowanymi po fuzii z MQCON z powodu tegoż, gdyż iż w gneiździe USB idzie sobie komunikacja RS232.
W sterownikach Sabvotona w wersjach bez (M) komunikacja idzie po magistrali RS485 co już nie pozwala tak łatwo odpalić BT (potrzebny jest dodatkowy konwerter sygnałów).

No i apeluję do majsterkowiczów, aby wszelakie zabawy z zasilaniem +5V ze sterownika robili ostrożnie, grzebanie na uruchomionym sterowniku oraz jakiekolwiek zwarcia czy pomyłki w lutowaniu zasilania modułu BT mają przykrą tendencję do uszczuplania portfela na równowartość kilkuset zł :)

Przykadowym problemem jest kolorystyka żył w przewodzie USB. Nie podłączajcie tego kolorami tylko "pikajcie" jaka żyła jest od czego. Mam na stole przewód, który +5V to szary, GND to zielony, TX to czerwony, RX to biały :)

Ma być tak:
_________________
Silniki, sterowniki : SKLEP tel: 792304416
Kod rabatowy: "FORUM"
Ogniwa: SKLEP
Blog o ebajkach BLOG
 
 
Bartosh 
stażysta


Dołączył: 02 Maj 2017
Posty: 105
Skąd: Gdańsk
Wysłany: Wto 22 Sie, 2017   

Imho do zrobienia, ale będzie trochę drożej.

Pytanie do posiadaczy wersji starszych - czy do nich też producent/reseller proponował dongla?
_________________
Grzybiarz v1.0: https://forum.arbiter.pl/viewtopic.php?t=6548
 
 
Bartosh 
stażysta


Dołączył: 02 Maj 2017
Posty: 105
Skąd: Gdańsk
Wysłany: Wto 22 Sie, 2017   

Ale jaja. No z tymi kolorami to już mega przegięcie.
Ostatnio zmieniony przez Bartosh Wto 22 Sie, 2017, w całości zmieniany 1 raz  
 
 
tas 
szef


Pomógł: 154 razy
Dołączył: 02 Kwi 2012
Posty: 6156
Skąd: Beskidy
Wysłany: Wto 22 Sie, 2017   

Mam taki firmowy BT i jest inny dla wersji z M i bez M
Dodatkowo nawet przewody USB są inne i nie zamienne.
Bez M były znowuż 2 wersje, ze złączem USB z zasilaniem oraz ze złączem Andersona bez zasilania :P
Aby było jeszcze ciekawiej, wersje M różnią się kolejnością żył TX/RX, producent je oznaczał profesjonalnie mazakiem żółtym albo zielonym :D
_________________
Silniki, sterowniki : SKLEP tel: 792304416
Kod rabatowy: "FORUM"
Ogniwa: SKLEP
Blog o ebajkach BLOG
 
 
Bartosh 
stażysta


Dołączył: 02 Maj 2017
Posty: 105
Skąd: Gdańsk
Wysłany: Czw 24 Sie, 2017   

Taka informacja, gdyby ktoś miał kłopoty z trybem poleceń HC-05. Na rynku są różne wersje tego modułu. Trafiły mi się np. 2.0-20100601 i 2.0-20161226. Jeśli moduł nic nie zwraca na defaultowych nastawach portu (38400 bodów, 8 bitów danych, 1 bit stopu, parzystość brak) mimo trzymania "guzika" przy podpinaniu do usb, to spróbuj trzymać tenże guzik w momencie puszczania polecenia - powinno pomóc w przypadku nowszej wersji. Dla starej wersji (na płytce widnieje ZS-040) wystarczy raz zaklikać już po podłączeniu i od tego momentu moduł odpowiada na polecenia AT.

W przypadku zmiany standardowego pinu (1234) za pomocą polecenia AT+PSWD= ważne, aby dalej użyć cudzysłowów "".
 
 
Bujakoto 
prezes


Pomógł: 6 razy
Wiek: 35
Dołączył: 22 Gru 2015
Posty: 733
Skąd: Gdynia
Wysłany: Śro 06 Wrz, 2017   

O ku.....a! Spadłem z krzesła!

Szacun Bartek za zgłębienie tematu!
A jeszcze większy za podzielenie się opracowanym i gotowym projektem!!

Jestem pod wrażeniem.
 
 
jajo111 
początkujący


Dołączył: 02 Wrz 2017
Posty: 10
Skąd: Przemyśl
Wysłany: Wto 24 Kwi, 2018   

hej a nie orientuje sie ktoś czy z MLT-BT05 bedzie to też działać ? bo hc-05 i hc-06 nie obslugują iphona :/ i działała by z aplikacja mqcon.
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group