Устройство дистанционной связи представляет собой два одинаково выполненных по конструкции приёмопередатчика на базе трансивера RF1100SE и управлением Arduino Pro Mini. Имеет три кнопки управления [A0, A1, A2] и выводы от трёх оптопар для подачи на дальнейшие исполнительные цепи [7, 8, 9]. Проведённые испытания в полевых условиях показали дальность действия около 300-350 метров на открытой местности. Работа от полностью заряженных noname китайских малогабаритных аккумуляторов составляет более 3 часов.
#include <RadioLib.h> CC1101 radio = new Module(10, 2, RADIOLIB_NC, 3); int i = 0; int t = 0; int tt = 0; void setup() { Serial.begin(9600); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); int state = radio.begin(436.5); if (state == RADIOLIB_ERR_NONE) { Serial.println(F("Init success!")); } else { Serial.print(F("Init failed, code: ")); Serial.println(state); while (true); } } void loop() { String rx = "000"; String tx = "000"; if(digitalRead(A0)==LOW) tx[0] = '1'; if(digitalRead(A1)==LOW) tx[1] = '1'; if(digitalRead(A2)==LOW) tx[2] = '1'; radio.transmit(tx); if (radio.receive(rx) == RADIOLIB_ERR_NONE) { digitalWrite(7, (rx[2]=='1' ? HIGH : LOW)); digitalWrite(8, (rx[1]=='1' ? HIGH : LOW)); digitalWrite(9, (rx[0]=='1' ? HIGH : LOW)); digitalWrite(6, HIGH); i=3; t = millis()/1000; if(t != tt){ Serial.print(radio.getRSSI()); Serial.println(" dBm; RX:" + rx + "; TX:" + tx); tt = t; } } if(i>0){ i--; }else if(i==0){ digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW); } }
Проект корпуса для 3д печати в STL-формате.
Видео работы https://youtu.be/75P1ydtKNb0