Выглядят они вот так:
Для примера будем пересылать температуру, полученную с датчика DS18B20.
В подключении к arduino ничего сложного нет, три провода: Vcc, GND, DATA - соответственно на "5V", "GND" и любой свободный пин (в данном случае 7).
Скетч для ардуины с трансмиттером:
//Transmitter
#include <VirtualWire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Data-нога датчика (или датчиков) к 12 пину ардуины
#define ONE_WIRE_BUS 12
// настройка oneWire для работы с любыми другими OneWire девайсами (не только Maxim/Dallas датчиками температуры)
OneWire oneWire(ONE_WIRE_BUS);
// подключаем Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup()
{
Serial.begin(9600);
vw_setup(2000); // bits per sec
vw_set_tx_pin(7); // пин, соединенный с DATA трансмиттера
Serial.println("Transmitter");
Serial.print("\n");
// Start up the library
sensors.begin(); // датчики темп.
}
void loop()
{
char msg[24];
sensors.requestTemperatures(); // опрос датчиков
dtostrf(sensors.getTempCByIndex(0), 6, 2, msg); //получение и форматирование Т в msg
vw_send((uint8_t *)msg, strlen(msg)); // отправляем
vw_wait_tx(); // ждем полного завершения передачи
}
Рессивер подключается точно так же. Код для второй ардуины:
//Reciever
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
Serial.print("Reciever");
Serial.print("\n");
vw_set_ptt_inverted(true);
vw_setup(2000);
vw_set_rx_pin(7);
vw_rx_start();
}
void loop()
{
char res[24];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
uint8_t buf[VW_MAX_MESSAGE_LEN];
if(vw_get_message(buf, &buflen))
{
digitalWrite(13,!digitalRead(13));
Serial.print("msg recieved...");
Serial.print("\n");
for(int i = 0;i < buflen;i++)
{
res[i] = buf[i];
}
digitalWrite(13,!digitalRead(13));
Serial.print(res);
Serial.print("\n");
}
}
Это все. Дальше заливаем на девайсы, запускаем монитор порта ардуины с рессивером и видим заветное
msg recieved...Помимо передачи данных на этих дешевых датчиках можно построить и беспроводное управление, все делается аналогично.
26.44
Ссылки по теме:
Библиотека VirtualWire
dtostrf()
Эти модули можно найти на aliexpress.com или dx.com по цене в районе $5. Для обратной связи потребуется 2 пары...
спасибо тебе огромное!!!
ОтветитьУдалитьНеплохо,надо теперь попробовать контроллер датчиков на attiny13 поменять, а на uno экран добавить с кнопками
ОтветитьУдалить