Arduino совместимая платформа, с реле и nRF24l01

Представляет собой программно совместимую с Arduino плату, с микроконтроллером в DIP корпусе, реле и разъемом под радиомодуль nRF24l01+

Подробнее можно узнать в видео.



Внешний вид платы.

02

Принципиальная схема

Untitled Sketc

Плата в формате .lay

pcb

Список компонентов.

Кол-во Обозначение на схеме тип Номинал примечание маркировка
2 С3, С4 Керамический конденсатор 22pf   220
1 С1 Керамический конденсатор 220nf (0,22uf)   224
1 С7 Керамический конденсатор 100nf (0,1uf) SMD 8050  
           
1 С6 Электролитический конденсатор 1uf x 10v    
1 С2 Электролитический конденсатор 100uf x 16v    
2 R1, R6 Резистор 10к CF-0.25 Вт 5%  
2 R3, R5 Резистор CF-0.25 Вт 5%  
2 R4, Резистор 560 CF-0.25 Вт 5%  
           
1 Q1 Транзистор SS8050    
2 D1, D2 Диод 1N4007    
2 LED1, LED2 Светодиод 3мм    
           
1 RL1 Реле SRD-05VDC-SL-C    
1 U2 Регулятор напряжения LM317T TO-220  
1 XTAL1 Кварцевый резонатор 16MHz HC49U, HC49US  
1 U1 Микроконтроллер ATMEGA8A-PU (or 168, 328) DIP-28  
1   DIP панель 28 контактов узкая SCS-28    
           
1 J5 разъемы PBD2-8 DS-1026-2X4  
1 J4 разъемы PLS-4 DS-1021-1×4  
1 J2 разъемы PLS-10 DS-1021-1×10  
           
1 J1 Клеммник винтовой, 3-контактный, 5мм, прямой      
1 J3 Клеммник винтовой, 2-контактный 3.5мм, прямой    

 

Код из видео

Приемник
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> // https://github.com/maniacbug/RF24

#define RELAY1 5 // пин релюшки

    // команды 
#define RELAY1_ON 1       //включение реле
#define RELAY1_INVERT 2   // инвертирт (если вкл, то выкл)

const uint64_t pipe = 0xF0F1F2F301LL; // труба 

RF24 radio(9, 10); // CE, CSN
  
void setup(){
//  Serial.begin(9600);
  pinMode(RELAY1, OUTPUT);
  
  radio.begin();  
  delay(2);
  radio.setChannel(9); // канал (0-127)
  radio.setDataRate(RF24_1MBPS);     
  radio.setPALevel(RF24_PA_HIGH);   
    
  radio.openReadingPipe(1,pipe); // открываем первую трубу с индитификатором "pipe"
  radio.startListening(); // включаем приемник, начинаем слушать трубу
}


void loop(){  
  byte data = 0; 
                        
  
  if (radio.available()){ // проверяем не пришло ли чего в буфер.
    radio.read(&data, sizeof(data)); // читаем данные, указываем сколько байт читать  
   
      switch (data) {             // смотрим что за команда
        case RELAY1_ON:
          digitalWrite(RELAY1, HIGH);  // включаем реле
        break;
          
        case RELAY1_INVERT:
          digitalWrite(RELAY1, !digitalRead(RELAY1));  
        break; 
        
        default:
          digitalWrite(RELAY1, LOW);  // если что другое выключаем 
        break;      
      
      }         
      
    }
    
   
} 

Передатчик
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> // https://github.com/maniacbug/RF24
 
     // команды 
#define RELAY1_ON 1       //включение реле
#define RELAY1_INVERT 2   // инвертирт (если вкл, то выкл)
  
const uint64_t pipe = 0xF0F1F2F301LL; // индитификатор передачи, "труба"
 
RF24 radio(9, 10); // CE, CSN
 

void setup(){
  Serial.begin(9600);

  radio.begin();
  delay(2);
  radio.setChannel(9); // канал (0-127)
  radio.setDataRate(RF24_1MBPS);    
  radio.setPALevel(RF24_PA_HIGH);   

  radio.openWritingPipe(pipe); // открываем трубу на передачу.
} 


void loop() {
  
  byte data = RELAY1_INVERT;
  
  radio.write(&data, sizeof(data)); // отправляем данные и указываем сколько байт пакет
  
  delay(500);
} 


Передатчик (команды с Serial)
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> // https://github.com/maniacbug/RF24
 
     // команды 
#define RELAY1_ON 1       //включение реле
#define RELAY1_INVERT 2   // инвертирт (если вкл, то выкл)
  
const uint64_t pipe = 0xF0F1F2F301LL; // индитификатор передачи, "труба"
 
RF24 radio(9, 10); // CE, CSN
 

void setup(){
  Serial.begin(9600);

  radio.begin();
  delay(2);
  radio.setChannel(9); // канал (0-127)
  radio.setDataRate(RF24_1MBPS);    
  radio.setPALevel(RF24_PA_HIGH);   

  radio.openWritingPipe(pipe); // открываем трубу на передачу.
} 


void loop() {
   byte data = 0;
  
  if (Serial.available()){
    data = Serial.parseInt();
    radio.write(&data, sizeof(data)); // отправляем данные и указываем сколько байт пакет
  } 
  
  
  
   
} 


 

 

.