Attiny85 + приемник/передатчик 433Mhz

satway
Offline
Зарегистрирован: 06.12.2014

Решил попробовать передавать данные с датчика на Uno по радиоканалу. Передатчик собрал на Attiny 85, приемник на UNO. Приемник-передатчик такие http://ru.aliexpress.com/item/RF-wireless-receiver-module-transmitter-module-board-Ordinary-super-regeneration-315-433MHZ-DC5V-ASK-OOK/1814791569.html?recommendVersion=1

Attiny  прошил на 8  Mhz на внутреннем осцилляторе и залил такой скетч:

#include <VirtualWire.h>
const int txPin     = 4;
void setup()
{
    Serial.begin(9600);	  
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec
    vw_set_tx_pin(txPin);

void loop()
{
    const char *msg = "hello";

    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(200);
}

Скетч для UNO тоже стандартный:

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec
    vw_set_rx_pin (9);
    vw_rx_start();       // Start the receiver PLL running
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
	int i;

        digitalWrite(13, true); // Flash a light to show received good message
	// Message with a good checksum received, dump it.
	Serial.print("Got: ");
	
	for (i = 0; i < buflen; i++)
	{
	    Serial.print(buf[i], HEX);
	    Serial.print(" ");
	}
	Serial.println("");
        digitalWrite(13, false);
    }
}

В итогое все как бы работает, но нестабильно. Если закрыть монитор порта и выйти из IDE  - прием-передача продолжаеться еще где-то минуту, потом TX диод прекращает мигать и горит постоянно. Я так понимаю, прием прекращаеться. Если опять запустить IDE  и открыть монитор порта - мигание продолжиться и побегут обычные пакеты:

Got: 68 65 6C 6C 6F 

Got: 68 65 6C 6C 6F
 
Так и должно быть? Прием-передача должен прерываться. если монитор порта выключен?
 
 
TevatroN
Offline
Зарегистрирован: 17.11.2013

Не изобретайте велосипед, тут тоже но более готовое, хотя там тоже есть ошибки, проверял: http://sagis.ru/blog/?p=195

satway
Offline
Зарегистрирован: 06.12.2014

Спасибо за ссылку, будем бороться