logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Zmiana prędkości transmisji RX-TX z 1800 bps na 9600 bps w komunikacji 433MHz?

fachman1964 06 Lip 2024 11:47 540 23
  • #1 21144849
    fachman1964
    Poziom 3  
    Czy da się zmienić w programie prędkość transmisji RX-TX z 1800 bps na 9600bps?
    Komunikacja radiowa 433MHz pomiędzy attiny 13A a Atmega 8A.
  • #2 21144882
    gps79
    Poziom 35  
    To zależy...
    Jakimi częstotliwościami i z jakich źródeł taktowane są oba mikrokontrolery?
    Jak wygląda kod źródłowy konfiguracji UART w Atmega8 i kod "bitbangignu" w Attiny13A (bo tu nie ma UART-a)?

    Dodano po 2 [minuty]:

    No i co istotne, to czy moduły nadajnika i odbiornika 433MHz są w stanie komunikować się na 9600bps?
  • #3 21145404
    fachman1964
    Poziom 3  
    Szukałem do zrobienia prosty termometr bezprzewodowy.
    Znalazłem na stronie naszego przyjaciela Czecha: https://danyk.cz/avr_btep_en.html
    taki.
    Schemat termometru bezprzewodowego z ATtiny13 i ATmega8
    Po zmontowaniu okazało się, że nawet działa poprawnie. Ale nie spełnia do końca moich oczekiwań. Nasz przyjaciel Danyk z niewiadomych przyczyn zastosował najgorszy z najgorszych nadajnik/odbiornik 433MHz.
    Dwuczęściowy moduł radiowy 433MHz składający się z nadajnika i odbiornika.
    Przetestowałem - zasięg tylko w obrębie pokoju.
    Przetestowałem też to:
    Dwa moduły RF 433 MHz na niebieskich płytkach PCB z widocznymi komponentami.
    Moduł radiowy 433MHz z oscylatorem WL315 i zwojem anteny
    Moduł transmisji bezprzewodowej 433 MHz z pinami
    Totalne badziewie. A producent deklaruje zasięg 100m. Ech przez ścianę traci łączność!
    W końcu natrafiłem na to:
    Moduł nadajnika/odbiornika HC-12
    Datasheet:w załczniku
    Niesamowite i zdumiewające! Zasięg w zabudowaniu osiedlowym murowany blok 8 piętro z podwórkiem! Skąd wiem. Do RX jednego z pary podłączyłem w/w nadajnik termometr attiny13 a do TX drugiego oscyloskop. Sygnał na wyjściu TX nie przerwał ani razu pomimo tak dużej odległości. Niestety przedstawiony nadajnik/odbiornik ma fabrycznie ustawiona prędkość transmisji 9600bps. A termometr 1800bps i nie mogą się porozumieć.
    W załączeniu kod źródłowy.
  • #4 21145439
    tmf
    VIP Zasłużony dla elektroda
    Na stronie autora masz kod źródłowy - musisz go zmienić, poprawiając konfigurację UART, tak aby uzyskać wymagane 9600 bps. Po czym ponownie zasemblować kod i wczytać do MCU. I to wszystko.
  • #5 21145687
    gps79
    Poziom 35  
    Niestety moduł HC-12 nie będzie transmitował danych z projektu Danyk, ze względu na to, ze Danyk wysyła ramki danych we własnym niestandardowym formacie, a HC-12 komunikuje się jedynie w standardzie UART.
  • #6 21146989
    miszcz310
    Poziom 24  
    @gps79
    No i co z tego? Komunikujesz się z hc-12 po uart, ale możesz wysłać, co chcesz (ewentualnie musisz "upchnąć" to, co chcesz w formacie, jaki jest dostępny ), przecież. Inna sprawa, że sam hc-12 ma już stm8 na pokładzie i może ten attiy13A byłby niepotrzebny (ale to jest sporo kombinacji alpejskich).

    fachman1964 napisał:
    Po zmontowaniu okazało się, że nawet działa poprawnie. Ale nie spełnia do końca moich oczekiwań. Nasz przyjaciel Danyk z niewiadomych przyczyn zastosował najgorszy z najgorszych nadajnik/odbiornik 433MHz.

    Wydaje mi się, że to celowe działanie z jego strony. On chyba mieszka w mniejszej miejscowości (takie raczej sielskie klimaty w pierwszych filmikach i na starych postach z jego strony). Poza tym wydaje mi się, że jego filozofia jest zbliżona do "minimalnego działającego, bezpiecznego, funkcjonalnego prototypu". Dlatego takie moduły idealnie pasują tutaj.

    Jeżeli zależy Ci na "dużych" zasięgach w silnie zaszumionych/za tłumionych warunkach, do tego oszczędzanie energii (ale nie koniecznie szybkości komunikacji), to może przyjrzyj się modułom LoRa.
    Wydaje mi się, że przy tak zdefiniowanym projekcie to mógłbym pomóc z ewentualnym pisaniem nowego programu (chatGPT, też sobie powinien poradzić ze zrobieniem czegoś realizującego jedną, dobrze określoną funkcjonalność).

    Edit:
    Poszperałem i oczywiście już ktoś wpadł na pomysł hackowania tego modułu, ale! Jak zawsze (po pandemii) są już pierdyliony wersji "tego samego modułu hc-12", które mają różne procki...
    https://github.com/Nevvman18/HC-12_Reverse_Engineering
  • #7 21147047
    gps79
    Poziom 35  
    miszcz310 napisał:
    No i co z tego?
    to, że gdyby autor umiał to zrobić, to by nie pytał na forum. Nie pomoze tu pisanie o hakowaniu modułu HC-12.
    Bez gruntownego przepisania programu nadajnika i odbiornika się nie da. Mniejszym kosztem byłoby napisanie programu od początku w języku wyższego poziomu.
    Odnośnie LoRa, jest takie powiedzenie, że jeśli ktoś umie się posługiwać tylko młotkiem, to wszystko wydaje mu się być gwoździem.
  • #8 21147061
    miszcz310
    Poziom 24  
    gps79 napisał:
    miszcz310 napisał:
    to, że gdyby autor umiał to zrobić, to by nie pytał na forum. Nie pomoze tu pisanie o hakowaniu modułu HC-12.
    Bez gruntownego przepisania programu nadajnika i odbiornika się nie da. Mniejszym kosztem byłoby napisanie programu od początku w języku wyższego poziomu.

    Spokojnie. Wydaje mi się, że od tego projektu nie zależy niczyje życie i autor ma trochę czasu na jego realizację. Napisałem o hackowaniu, bo ktoś to już zrobił i oszczędziłoby to pracy, bo program na attiny13 i tak trzeba inaczej napisać, żeby działał z tym modułem. Dlatego jak trzeba przepisać, to może attiny nie jest w ogóle potrzebny?

    gps79 napisał:
    Odnośnie LoRa, jest takie powiedzenie, że jeśli ktoś umie się posługiwać tylko młotkiem, to wszystko wydaje mu się być gwoździem.

    Nie bardzo rozumiem, o co chodzi w tym porównaniu. Osobiście wydaje mi się, że te modułu zostały zaprojektowane do tej aplikacji. Niski poziom poboru energii, bardzo duże zasięgi, automatyczna korekcja błędów, stosunkowo niska cena, doskonała dokumentacja, ogrom przykładów, tutoriali, gotowych projektów. Także nie bardzo rozumiem, że wszystko jest gwoździem. Jakie według Ciebie jest bardziej dopasowane rozwiązanie w tym przypadku?
  • #9 21147123
    fachman1964
    Poziom 3  
    Bardzo, bardzo dziękuje wszystkim za zainteresowanie tym tematem.
    Czy da się jakoś poprawić kod programu aby można zastosować HC-12. Albo dostosować sam HC-12 do wymaganej transmisji danych. Albo poradzie jaki zastosować wypróbowany transmiter aby zwiększyć zasięg.
    Naprawdę HC-12 ma rewelacyjne osiągi jeżeli chodzi o dystans przesyłu danych!
    Kolega wyżej pisze, że może zastąpić attiny13 czymś innym- to może atmega 8a.
    Na poborze prądu przez nadajnik absolutnie mi nie zależy. Odbiornik przecież można
    zasilić dowolną ilością akumulatorów 18650.
  • #10 21147239
    miszcz310
    Poziom 24  
    Ok, podsumujmy:
    1. Pobór prądu nie ma znaczenia.
    2. Chcemy użyć HC-12
    3. Skupmy się na avr (rozumiem, że masz programator i umiesz programować)
    4. Czy masz zrobioną jakąś płytkę już, czy na razie nie ma części sprzętowej?

    Dodatkowe pytanie. Jak dużo wysiłku chcesz w to włożyć?
  • #11 21147311
    ex-or
    Poziom 28  
    fachman1964 napisał:
    Nasz przyjaciel Danyk z niewiadomych przyczyn zastosował najgorszy z najgorszych nadajnik/odbiornik 433MHz

    Moduły słabe, ale prawdziwym powodem marnego zasięgu jest, IMHO, nieodpowiedni dla nich protokół komunikacji. Te moduły wymagają sygnału ze zrównoważona długością 1 i 0 (tutaj 1 jest 2x dłuższa od przerwy, która jest 2x dłuższa od 0) a początek transmisji potrzebuje "rozbiegówki" dla dostrojenia się odbiornika (nie patrzyłem w kod więc nie wiem czy jest).
  • Pomocny post
    #12 21147402
    bart-projects
    Poziom 29  
    Zrobiłem taki termometr na tych najtańszych modułach i tak jak pisze poprzednik jest tam rozbiegówka do synchro, na przykład ciąg 01010101 (0x55) i 10101010 (0xAA). Do tego on obsługuje ID dla kilku termometrów zewnętrznych. Przesyła też dane o napięciu baterii... Ma bufor cykliczny po to by się lepiej synchronizować.
    Zrobiłem go dawno temu bo w 2017 roku więc pewnie co nieco juz bym poprawił.

    Nadajnikiem jest Tiny13 i jest tam nawet projekt płytki, screen 3D z KiCad i foty płytki do tego Tiny.
    Oryginalnie odbiornik miał wyświetlacz LCD. Później powstała wersja na 3x7segment LED.
    Była też wersja na Nixie.
    Obrazek przedstawia projekt płytki drukowanej z elementami elektroniki.

    Można się zapoznac z tym tutaj -> Link

    Z tego co widze to wersja na 7segment nawet tez pokazywała napięcie po przełączeniu MODE. Nawet nagrałem wideo o którym zapomniałem :D
    Ależ kiedyś miałem słaby aparat. Już dawno nic nie nagrywałem.





    Zasięg to miało jakieś 20m przez okno do garażu.

    Wracając do HC-12. Te najtańsze nadajniki mają chyba stan nadawania wyzwalany stanem wysokim a w "normalnym" serialu aktywnym stanem jest stan niski. Dlatego jesli się ich używało z UARTem to się włączało tryb INVERTED i tak samo zrobił ten Czech.

    Nic nie stoi na przeszkodzie skompilować na zgodny Baudrate i bez opcji INVERTED to bedzie działało z HC-12.
  • #13 21147440
    fachman1964
    Poziom 3  
    miszcz310 napisał:
    Ok, podsumujmy:
    1. Pobór prądu nie ma znaczenia.

    Absolutnie żadnego, bo przy dzisiejszym dostępie i niskich cenach akumulatorów Li-Jon można za grosze zbudować każdą "elektrownie"!
    miszcz310 napisał:
    Ok, podsumujmy:
    2. Chcemy użyć HC-12


    Z tego co jest dostępne na Ali.... oraz na znanym polskim portalu aukcyjnym i w tym absurdalnie niskim przedziale finansowym - wydaje się dobrym rozwiązaniem.
    Za kilkanaście złotych uzyskać stabilną komunikację od piwnicy do dachu wieżowca to chyba dobry wybór.
    miszcz310 napisał:
    Ok, podsumujmy:

    3. Skupmy się na avr (rozumiem, że masz programator i umiesz programować).

    Radze sobie z Chińskim TL866 ale musze mieć skompilowany program do .HEX
    Nie musi to być absolutnie identyczne rozwiązanie jak u Czeskiego kolegi
    Tutaj jest zastosowany jako czujnik MCP9700A jest to przetwornik temperatura/napięcie . Nie jest to do końca dobre rozwiązanie ze względu na możliwość rozkalibrowania się (rezystor,potencjometr montażowy). Nie wiem czy nie prostszym i lepszym rozwiązaniem byłoby przejście na kultowy 1-wire DS18B20.

    miszcz310 napisał:

    4. Czy masz zrobioną jakąś płytkę już, czy na razie nie ma części sprzętowej?
    Dodatkowe pytanie. Jak dużo wysiłku chcesz w to włożyć?

    Nadajnik jest już na płytce drukowanej. Żaden problem zrobić kolejna wedle potrzeby. Odbiornik jeszcze na stykowej .
    Jeżeli chodzi o zaangażowanie to posiadam AVR- y na stanie Attiny różne jak i Atmegi też różne
    Koszta są nie istotne. Radzę sobie z elektroniką niestety nie z pisaniem kodów.
    Drodzy koledzy! Jak by się dało połączyć ze sobą ds18b20 - HC12- AVR - standardowy wyświetlacz siedmiosegmentowy LED (żadne tam LCD, OLED ) i do tego pracowało to stabilnie, ale było by fenomenalne rozwiązanie!! Marzy mi się termometr z Big najlepiej niebieskim wyświetlaczem
    coś z 20cm - takim na pól ściany. i do tego z czujnikiem na podwórku w dowolnym
    miejscu. Jak coś tego wyjdzie sensownego opublikuje się wszystko (schematy, wzory płytek, w dziale DIY - na elektrodzie, niech wszyscy chętni korzystają. Ech. ale odleciałem w marzeniach.

    EDIT: Właśnie kolega @ bart-projects przysłał mi schematy i program do tego termometru z filmu. Wygląda bardzo obiecująco. Ma odczyt dwóch temperatur, fotorezystor do regulacji jasności wyświetlacza. Zabieram się do montażu na płytce stykowej. Jak uruchomię to dam znać.
  • #14 21148302
    miszcz310
    Poziom 24  
    Wydaje mi się, że kolega @bart-projects pozamiatał w tym temacie :D
    Nie mogę zobaczyć kodu, stąd pytanie: Czy kolega napisał to w asm na tego attiny13A?
    Pozdrawiam!
  • #16 21148361
    fachman1964
    Poziom 3  
    Witam ponownie.
    Mam problem z uruchomieniem odbiornika kolegi @ bart-projects na atmega8 w obudowie dip28. Nie startuje wyświetlacz. W/g schematu jest on ze wspólna anodą -tak?
    Nie wiem czy program napisany na kontroler tqfp 32 będzie działał na dip28.
    Schemat układu elektronicznego z mikrokontrolerem ATmega8 w obudowie DIP28
    Fuse bit tak jak w zaleceniu kolegi @ bart-projects.
    Zrzut ekranu programu MiniPro z ustawieniami dla mikrokontrolera ATmega8.
    Nadajnik chyba działa na oscyloskopie pojawiają się co minuta jakieś impulsy.
  • #17 21148380
    miszcz310
    Poziom 24  
    fachman1964 napisał:
    Nie wiem czy program napisany na kontroler tqfp 32 będzie działał na dip28.

    Jak porty są te same to powinien działać. A na oscyloskopie widać, że "mryga" i multipleksuje na pinach?
  • Pomocny post
    #18 21148385
    bart-projects
    Poziom 29  
    Wkradł się bład przy wpisywaniu. Fuse Bity E4 D9 a nie 99 bo to pokazuje jasno na Twoim screenie Watchdog Always On :D

    Wyswietlacz nawet bez nadajnika ma wyświetlac po starcie trzy poziome kreski.
    W programie łatwo odczytać że żeby ustawić zero na wyświetlaczu procesor podaje masę na sześć segmentów.
    Wspólna końcówka wyświetlacza jest sterowana poprzez tranzystor PNP podłaczony do 5V i dlatego do zapalenia konkretnego wyświetlacza procesor steruje jego bazą też masą. Wychodzi na to że to wspólna anoda.

    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • #19 21148407
    fachman1964
    Poziom 3  
    Czy na pewno teraz jest poprawnie?
    Zrzut ekranu programu MiniPro v6.85 z interfejsem do konfiguracji układu ATMEGA8A.
  • #21 21148462
    fachman1964
    Poziom 3  
    HURA!!! Działa!!!
    Tylko czy kolega mógłby wprowadzić drobną korektę do programu nadajnika attiny85. Na razie do wersji z badziewiastym nadajnikiem.
    Chodzi o ten pomiar temperatury co 1 min.
    Ma to ogromne znaczenie jak się oszczędza baterie. Ja na szczęście nie muszę niczego oszczędzać. Zasilanie nadajnika z akumulatora Li-Jon.
    Jakby się dało skrócić czas pomiędzy pomiarami w nadajniku co 10 sek. byłoby dla mnie super! Wykonalne to jest?
  • #23 21148570
    fachman1964
    Poziom 3  
    Mam dobrą i złą wiadomość.
    Dobra jest taka ,że odpaliłem termometr na HC -12. Działa! Zasięg taki , że chyba
    w kosmosie jest widoczny sygnał - to jest to właśnie! Oto chodziło!
    Niestety jest też i zła wiadomość.
    Jest wada działania. Jak złapie raz sygnał to się nie odświeża wyświetla cały czas taką samą temperaturę - dotyczy to wyłącznie pomiaru z nadajnika. Jest tak samo na HC-12 jak i na badziewiastym transmiterze. Z wewnętrznego DS18B20 jest w porządku.
    Jak podgrzeję czujnik to w mig zmienia się temperatura na wyświetlaczu. Z zewnętrznego nic się nie zmienia. Nawet po upływie tej wymaganej minuty.
  • #24 21186807
    fachman1964
    Poziom 3  
    Temat uważam za rozwiązany.Kolega @Ba_rt-projects zmodyfikował swój soft pod względem moich potrzeb i mam teraz termometr taki jaki potrzebowałem. Dziękuję!

Podsumowanie tematu

W dyskusji poruszono możliwość zmiany prędkości transmisji danych z 1800 bps na 9600 bps w komunikacji radiowej 433MHz pomiędzy mikrokontrolerami ATtiny 13A a ATmega 8A. Uczestnicy wskazali, że zmiana ta wymaga modyfikacji kodu źródłowego, w tym konfiguracji UART w ATmega 8A oraz dostosowania formatu danych do wymagań modułów komunikacyjnych. Zwrócono uwagę na ograniczenia związane z używaniem modułów HC-12, które nie obsługują niestandardowych formatów danych. Uczestnicy podzielili się doświadczeniami z budową bezprzewodowego termometru, wskazując na problemy z zasięgiem i synchronizacją danych. Ostatecznie, po modyfikacjach, udało się osiągnąć stabilną komunikację z wykorzystaniem HC-12, jednak wystąpiły problemy z odświeżaniem danych z zewnętrznego czujnika DS18B20.
Podsumowanie wygenerowane przez model językowy.
REKLAMA