rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: Pseudo » 7 lip 2013, 01:45

Witam
Robie pierwszy modul komunikacyjny.

Kod nadawania:

Kod: Zaznacz cały

#include <VirtualWire.h>

const char *wiadomosc;
 
void setup() {
  vw_set_ptt_inverted(true);
  vw_setup(2000);

  pinMode(13, OUTPUT);

}
 
void loop() {
 
  wiadomosc = "listy";
 
  digitalWrite(13, HIGH);
  delay(500);
  vw_send((uint8_t *)wiadomosc, strlen(wiadomosc));
  vw_wait_tx();
  digitalWrite(13, LOW);
  delay(1000);
}

Kod odbiornika:

Kod: Zaznacz cały

#include <VirtualWire.h>
 
#define listyLedPin 7

int i = 1;
 
void setup() {
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_rx_start();

  pinMode(listyLedPin, OUTPUT);
  
  digitalWrite(listyLedPin, HIGH);
  delay(500);
  digitalWrite(listyLedPin, LOW);
 
}
 
void loop() {
  uint8_t odebrano[VW_MAX_MESSAGE_LEN];
  uint8_t dlugosc = VW_MAX_MESSAGE_LEN;

  if(vw_get_message(odebrano, &dlugosc)) {
  
  if (i == 1)   { digitalWrite(listyLedPin, HIGH); i = 2; }
  else   { digitalWrite(listyLedPin, LOW); i = 1; }
  delay(500);

  }
 
 }

I tak...

Po odpaleniu odbiornika mignie dioda czyli soft dziala.
Wlaczam nadajnik i nic sie nie dzieje. Odbiornik i nadajnik z wlutowana antena 1 cm od siebie dodatkowo.

Moze ktos poparzy na kod i trzezwym okiem stwierdzy ze jest jakis kardynalny blad bo ja juz kilka godzin siedze i nie widze a nadal nie dziala.

Odbiornik oczywiscie podlaczony pod arduino pin 11 a nadajnik pod 12.

Czy jest jakas metoda na diagnostyke czy nadajnik cos wysyla ?
Bo teraz nawet nie moge stwierdzic po ktorej stronie jest problem.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: Pseudo » 7 lip 2013, 14:21

ok zrobilem uproszczona wersje na jednym arduino uno i podlaczonym nadajniku i odbiorniku (nizej kod)
niestety nadal nie dziala mimo ze odbiornik i nadajnik jest od siebie centymetr
leci tylko "send" a nic nie odbiera.

Kod: Zaznacz cały

#include <VirtualWire.h>
 
void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("setup");
    
  pinMode(11, INPUT);
  pinMode(12, OUTPUT);
  
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);

// Initialise the IO and ISR
  vw_set_tx_pin(12);
  vw_set_rx_pin(11);
  
  vw_set_ptt_inverted(true);
  vw_rx_start(); // Start the PLL receiver.}
  vw_setup(1200); // Transmission speed in bits per second.
 }
 
void loop()
{
  const char *msg = "hello";
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  vw_send((uint8_t *)msg, strlen(msg));  // Send 'hello' every 400ms.
  vw_wait_tx();
  Serial.println("send");
  delay(400);

  if(vw_get_message(buf, &buflen)) // non-blocking I/O
  {
    digitalWrite(13, HIGH);
    int i;
    String wiadomosc;
    // Message with a good checksum received, dump HEX
    Serial.print("Got: ");
    
    for(i = 0; i < buflen; i++) {wiadomosc += char(buf[i]);}
    
    Serial.println(wiadomosc);
    Serial.println("");
    digitalWrite(13, LOW);
  }
  
}
ogur
Młodszy majsterkowicz
Posty: 4
Rejestracja: 30 cze 2013, 15:42

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: ogur » 8 lip 2013, 19:26

też miałem trochę problemów z uruchomieniem tego nadajnika. Zasilasz arduino z usb czy zasilacza ? ja uruchamiałem nadajnik na atmega8a a odbiornik na arduino mega 2560 nie udało mi się uruchomić programu z odbiornikiem na atmega nie wiem czemu program się wiesza i nic nie działa.

Możesz podłaczyć diode na pinie data w odbiorniku będzie migać cały czas bo ten odbiornik wyłapuje dużo zakłóceń ale jeżeli transmiter będzie coś wysyłał można się dopatrzyć w tym miganiu jakieś regularności sposób sprawdzenia marny ale spróbować możesz.

ten delay w kodzie odbiornika jest chyba nie wskazany ale ręki nie dam sobie uciąć.

zobacz sobie mój wątek tam jest kod który działa http://majsterkowo.pl/forum/bezprzewodo ... t1053.html

EDIT:
przejrzałem jeszcze twój kod i w pierszym przykładzie jeżeli dioda ma migać to po digitalWrite(listyLedPin, HIGH) powinieneś dać delay a później i = 2;

w drugim przykładzie for(i = 0; i < buflen; i++) {wiadomosc += char(buf);}

Serial.println(wiadomosc);
nie potrzebnie komplikujsze lepiej serialem wysyłać samo buf.

ten kod nie będzie działał na jednym mikro-kontrolerze bo wysyłasz dane dajesz mu delay a później chcesz odbierać transmisje która poszła w świat 400ms wcześniej
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: Pseudo » 9 lip 2013, 21:21

no juz troche wnioskow wyciagnalem i przygotowalem dwa osobne uklady, jeden na atmega drugi na arduino uno.
niestety nadal zero efektu.
zastanawiam sie juz czy rfy ktore kupilem 5 sztuk u jednego chinczyka dzialaja ? moze wszystkie sa wadliwe ?

nizej moje ostatnie testy:

Zamieszczam kod nadajnika i odbiornika + linki do zbudowanych ukladow (odbiornik na arduino uno, nadajnik na zaprogramowanej atmege)

nadajnik:

Kod: Zaznacz cały

#include <VirtualWire.h>
const char *wiadomosc;
void setup() {
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}
void loop() {
  wiadomosc = "test";
  vw_send((uint8_t *)wiadomosc, strlen(wiadomosc));
  vw_wait_tx();
  delay(1000);
}

odbiornik:

Kod: Zaznacz cały

#include <VirtualWire.h>
void setup() {
Serial.begin(9600);
Serial.println("setup");
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_rx_start();
}
void loop() {
  uint8_t odebrano[VW_MAX_MESSAGE_LEN];
  uint8_t dlugosc = VW_MAX_MESSAGE_LEN;
 
  if(vw_get_message(odebrano, &dlugosc)) {
    String wiadomosc;
    int i;
    Serial.print("Got: ");
    for(i = 0; i < dlugosc; i++) {wiadomosc += char(odebrano[i]);}
    Serial.println(wiadomosc);
    Serial.println("");
  }
}
linki do ukladow:
http://w518.wrzuta.pl/obraz/3ilnCPf5F04/nadajnik
http://w518.wrzuta.pl/obraz/6vKmjstm6Q0/odbiornik
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: Pseudo » 9 lip 2013, 21:42

ZADZIALALO!!!!

bawilem sie tym dalej i przypadkiem zrobilem tak ze na nadajniku parametr byl:
vw_setup(2000);

a na odbiorniku zmienilem na:
vw_setup(1000);

odpalilem i dane dochodza poprawne. narazie zasieg maly bo ok 10metrow z antenami w domu ale wreszcie cos wysyla/odbiera


dziwne ze ten rozny parametr spowodowal ze zaczelo dzialac
Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: jacek » 9 lip 2013, 22:01

pamiętam jak pierwszy raz programowałem mikrokontroler to fuse bity ustawiłem na jedną częstotliwość, a parametr f_cpu w pliku boards.txt na inną, wszystkie delay itp działały wtedy wadliwie, być może u Ciebie jest analogiczna sytuacja.
pozdrawiam
Jacek
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: Pseudo » 10 lip 2013, 00:14

to moze byc to
ale niestety nic swiadomie z fusebitami nie ustawialem, moze jakis dobry manual jak to ustawiac ?
ogur
Młodszy majsterkowicz
Posty: 4
Rejestracja: 30 cze 2013, 15:42

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: ogur » 10 lip 2013, 01:17

Pseudo pisze:to moze byc to
ale niestety nic swiadomie z fusebitami nie ustawialem, moze jakis dobry manual jak to ustawiac ?
A jaką masz Atmege ? ja używam atmega8a-pu są najtańsze i w boards mam wpisane tak jak było tutaj na forum w poradniku do programowania atmega za pomocą arduino ide wszystko działa w wersji 8mhz jak i zewnętrznym kwarcem 16mhz. Mam ustawione w nadajniku i odbiorniku transmisje na 2000 bps a spróbuj ustawić w jednym i w drugim po 1000
co do zasięgu to dużo więcej z tego nie wyciśniesz. Jak się nie mylę trzeba by nadajnik i odbiornik zasilać większym napięciem
Awatar użytkownika
jacek
Młodszy majsterkowicz
Posty: 47
Rejestracja: 28 mar 2013, 22:17
Kontakt:

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: jacek » 10 lip 2013, 13:17

Pseudo pisze:to moze byc to
ale niestety nic swiadomie z fusebitami nie ustawialem, moze jakis dobry manual jak to ustawiac ?
Ja korzystałem z artykułu http://majsterkowo.pl/forum/programowan ... -t392.html.
Jest tam między innymi adres strony http://www.engbedded.com/fusecalc gdzie można te fuse bity wyliczać sobie. Programowałem w ten sposób atmega16 i atmega328.

A teraz jak to sprawdzić. Załaduj program blink z przykładów który mruga diodą co sekundę i obserwuj jak ona mruga, czy np nie dwa razy wolniej - std arduino chodzi na 16MHz, a goły mikrokontroler np na 8MHz.
pozdrawiam
Jacek
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: Pseudo » 10 lip 2013, 19:08

jacek pisze:pamiętam jak pierwszy raz programowałem mikrokontroler to fuse bity ustawiłem na jedną częstotliwość, a parametr f_cpu w pliku boards.txt na inną, wszystkie delay itp działały wtedy wadliwie, być może u Ciebie jest analogiczna sytuacja.

boards.txt mam z forum.
bledem chyba bylo ze programowalem ATmega328P @ 16 MHz zamiast ATmega328P @ 8 MHz

po zmiane na ATmega328P @ 8 MHz jest ok

Kod: Zaznacz cały

#################################################################

majsterkowo_atmega8a.name=ATmega8a @ 8 MHz

majsterkowo_atmega8a.upload.maximum_size=7168
majsterkowo_atmega8a.upload.using=arduino:arduinoisp

majsterkowo_atmega8a.bootloader.low_fuses=0xe4
majsterkowo_atmega8a.bootloader.high_fuses=0xc4
majsterkowo_atmega8a.bootloader.path=atmega
majsterkowo_atmega8a.bootloader.file=ATmegaBOOT_8.hex
majsterkowo_atmega8a.bootloader.unlock_bits=0x3F

majsterkowo_atmega8a.build.mcu=atmega8
majsterkowo_atmega8a.build.f_cpu=8000000L
majsterkowo_atmega8a.build.core=arduino
majsterkowo_atmega8a.build.variant=standard

#################################################################

majsterkowo_atmega328p8.name=ATmega328P @ 8 MHz

majsterkowo_atmega328p8.upload.maximum_size=30720
majsterkowo_atmega328p8.upload.using=arduino:arduinoisp

majsterkowo_atmega328p8.bootloader.low_fuses=0xE2
majsterkowo_atmega328p8.bootloader.high_fuses=0xDA
majsterkowo_atmega328p8.bootloader.extended_fuses=0x05

majsterkowo_atmega328p8.bootloader.path=atmega
majsterkowo_atmega328p8.bootloader.file=ATmegaBOOT_328.hex
majsterkowo_atmega328p8.bootloader.unlock_bits=0x3F
majsterkowo_atmega328p8.bootloader.lock_bits=0x0F

majsterkowo_atmega328p8.build.mcu=atmega328p
majsterkowo_atmega328p8.build.f_cpu=8000000L
majsterkowo_atmega328p8.build.core=arduino
majsterkowo_atmega328p8.build.variant=standard

#################################################################

majsterkowo_atmega328p16.name=ATmega328P @ 16 MHz

majsterkowo_atmega328p16.upload.maximum_size=30720
majsterkowo_atmega328p16.upload.using=arduino:arduinoisp

majsterkowo_atmega328p16.bootloader.low_fuses=0xE2
majsterkowo_atmega328p16.bootloader.high_fuses=0xDA
majsterkowo_atmega328p16.bootloader.extended_fuses=0x05

majsterkowo_atmega328p16.bootloader.path=atmega
majsterkowo_atmega328p16.bootloader.file=ATmegaBOOT_328.hex
majsterkowo_atmega328p16.bootloader.unlock_bits=0x3F
majsterkowo_atmega328p16.bootloader.lock_bits=0x0F

majsterkowo_atmega328p16.build.mcu=atmega328p
majsterkowo_atmega328p16.build.f_cpu=16000000L
majsterkowo_atmega328p16.build.core=arduino
majsterkowo_atmega328p16.build.variant=standard
Pseudo
Majsterkowicz
Posty: 55
Rejestracja: 28 cze 2013, 22:08

Re: rf 433, nie nadaje ? nie odbiera ? jak zdiagnozowac

Post autor: Pseudo » 10 lip 2013, 19:09

ogur pisze:
Pseudo pisze:to moze byc to
ale niestety nic swiadomie z fusebitami nie ustawialem, moze jakis dobry manual jak to ustawiac ?
A jaką masz Atmege ? ja używam atmega8a-pu są najtańsze i w boards mam wpisane tak jak było tutaj na forum w poradniku do programowania atmega za pomocą arduino ide wszystko działa w wersji 8mhz jak i zewnętrznym kwarcem 16mhz. Mam ustawione w nadajniku i odbiorniku transmisje na 2000 bps a spróbuj ustawić w jednym i w drugim po 1000
co do zasięgu to dużo więcej z tego nie wyciśniesz. Jak się nie mylę trzeba by nadajnik i odbiornik zasilać większym napięciem
mam ATmega328P, ten Twoj ma troche malo pamieci (8k) i czasami nie starcza
ODPOWIEDZ

Strony partnerskie: