Servo, Ethernat, Nrf24l01+, LCD, часы...

sirik
Offline
Зарегистрирован: 10.11.2012

Всем доброго дня.

Необходимо собрать все это добро и так чтобы одно не мешало другому (плата Uno оригинал).

Модуль часов реального времени, модуль экрана и Ethernet дружат нормально. У меня возник вопрос по серве и Nrf24l01+.

1. Можно ли подключить серву на другой выход отличный от 9 или 10?

2. Как "нормально" подружить Ethernet и Nrf24l01+?

 

ps/так же присутствует датчики температуры, но их можно повесить на любую ногу

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

1. Да.
2. Нет проблем, даже не смотря на то, что вы не указали, какой именно сетевой модуль.

sirik
Offline
Зарегистрирован: 10.11.2012

ethernet оригинал, а второй Nrf24l01+ с китая

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

оригинал чего?

модули бывают разные.

 

sirik
Offline
Зарегистрирован: 10.11.2012

оригинал италия

sirik
Offline
Зарегистрирован: 10.11.2012

вечером скину фотографии

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

А компьютеры бывают белые и черные.

 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

А ещё - оригинальные и китайские. Сколько характеристик!!

sirik
Offline
Зарегистрирован: 10.11.2012

Чего тут непонятного? Оригинал - он и в Африке оригинал: https://www.arduino.cc/en/Main/ArduinoEthernetShield

Nrf24l01+ с Китая, вот такой: http://stm32f4-discovery.com/2014/06/library-17-nrf24l01-stm32f4xx/

 

А просто набивать посты - дело каждого

sirik
Offline
Зарегистрирован: 10.11.2012

И да, самое главное забыл добавить: домуль Nrf24l01+ не должен использовать стандартные порты (9, 10, 11, 12, 13)

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

sirik, вы зря так реагируете.

повторю :

1. серву не обязательно подключать на пины 9 и 10

2. интерфейс SPI подразумевает подключение к одним и тем-же пинам нескольких устройств. различаются они пином SS (CE).

Далее - модули принято различать не по оригинальности (ибо проект открытый и сами разработчики уже разругались, кого считать ТруЪ). Модуль на чипе w5100 - один из нескольких, распространненых на этой платформе.

sirik
Offline
Зарегистрирован: 10.11.2012

На счет подключения nRF24L01+, думаю копать в сторону softSPI libraries, но сначала попробую подружить 2 платы стандартным подключением.

А на счет сервы вопрос сам отпадет, если научусь nRF24L01+ вешать на любые ноги

 

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

sirik пишет:

На счет подключения nRF24L01+, думаю копать в сторону softSPI libraries, но сначала попробую подружить 2 платы стандартным подключением.

Вы китайский комсомолец? Или просто любите копать?

sirik
Offline
Зарегистрирован: 10.11.2012

да не вроде) тогда можете показать как подружить модуля?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Gippopotam пишет:

...

2. интерфейс SPI подразумевает подключение к одним и тем-же пинам нескольких устройств. различаются они пином SS (CE).

...

sirik
Offline
Зарегистрирован: 10.11.2012

Т.е. ноги от 10 до 13 буду поключенны паралельно к Ethernet и nRF24L01+? Куда тогда подключить ногу nRF24L01+ CE (которая должна подчключатся к 9 ноге)? Эта нога у меня уже занята.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

sirik пишет:

Т.е. ноги от 10 до 13 буду поключенны паралельно к Ethernet и nRF24L01+? Куда тогда подключить ногу nRF24L01+ CE (которая должна подчключатся к 9 ноге)? Эта нога у меня уже занята.

К той ноге, которая не занята.

sirik
Offline
Зарегистрирован: 10.11.2012

Спасибо, буду пробовать

sirik
Offline
Зарегистрирован: 10.11.2012

Объясните вот что, если "Arduino использует цифровые порты 10, 11, 12 и 13 для обмена информацией с модулем Ethernet shield"

Какую тогда ногу шилд (Ethernet) использует в качестве CE?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

10

sirik
Offline
Зарегистрирован: 10.11.2012

Тогда зачем nRF24L01+ нужна СЕ -> 9 нога? Что-то я запутался(

Radjah
Offline
Зарегистрирован: 06.08.2014

CE - chip enable - включение nRF24

CS - chip select - выбор устройства для обмена данными

Для nRF24 подойдут любые цифровые пины. Они указываются при инициализации объекта в коде.

MOSI, MISO, SCK у всех устройств общие.

sirik
Offline
Зарегистрирован: 10.11.2012

Т.е. если на пальцах, то в один момент времени Enternet щелкает на пин 10 (начинает работать с через SPI), а в другой nRF24L01+ щелкает CS (допустим 3) и уже только он работает?

Почему немного запутался, прочитал на одном сайте: "

SCK (Serial ClocK) — тактирование (синхронизация).

MOSI / MI (Master Out Slave In) — вход данных.

MISO / MO (Master In Slave Out) — выход данных.

CE/SS - Выбор ведомого на шине SPI из нескольких устройств.

SCN - выбор режима приема/передача , фактически тот же CE.

IRQ - выход прерывания,чаще всего не используется. Необходим для немедленной реакции микроконтроллера при приеме нового пакета данных.

GND - земля,масса,минусовая шина.

Vcc  -питание модуля 3.3в. Для надежной работы паралельно питанию как можно ближе к радиомодулю рекомендуется подключить электролитический конденсатор не менее 100мкф , а так же керамический на 0.1 мкф."

 

Смутило описание SCN

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Radjah пишет:

CE - chip enable - включение nRF24

CS - chip select - выбор устройства для обмена данными

Вы уверены, что это не одно и то-же?

Radjah
Offline
Зарегистрирован: 06.08.2014

Gippopotam пишет:

Radjah пишет:

CE - chip enable - включение nRF24

CS - chip select - выбор устройства для обмена данными

Вы уверены, что это не одно и то-же?

Более чем.

https://www.sparkfun.com/datasheets/RF/nRF2401rev1_1.pdf страница 3 и 11

sirik
Offline
Зарегистрирован: 10.11.2012

В общем подключил ногу nRF24L01+ CE на 3 вход, CSN оставил на 10.

При приеме всегда получаю значение 513, хотя отправляю рандомное от 1 до 1023. если же CSN подключаю на ногу 2, то вообще получаю одни нули.

Уже замучился(

ps/ Мало того, если отключить CE и CSN, то значения все теже -513. хрень какая-то

ps2/ Если оставить просто шилд Ethernet, а в коде вообще его не использовать, то всегда получаю 513

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Если у вас мало опыта - не кидайтесь в омут с головой.
Сначала заставьте работать примеры идущие с библиотекой, при стандартном подключении. Потом уже меняйте конфигурацию.
Потом повторите все вышеперечисленное для других модулей.
А уже потом собирайте все в кучу.

sirik
Offline
Зарегистрирован: 10.11.2012

В стандартном подключении все работает отлично, т.е. без Ethernet модуля

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

sirik пишет:
В стандартном подключении все работает отлично, т.е. без Ethernet модуля

Если радиомодули подключены на неконфликтые пины и по отдельности все работает - значит вам осталось разобраться, как выбирать активное устройство на SPI.
 

подсказка - нужно подавать высокий/низкий уровень на SS.

 

sirik
Offline
Зарегистрирован: 10.11.2012

Пины не конфликтные 2 и 3.
Почему когда я подключил Ethernet shield , но не инициализировал его, spi же не должна его «видеть», поражаються глюки/баги Хз что такое?

sirik
Offline
Зарегистрирован: 10.11.2012

В общем немного поторопился с nRF24L01+: подключение стандартное, припаяны конденсаторы (напряжение 3.3).

Пакеты то приходят, то нет: Заметил такую штуку: как только рукой трогаю на передающем устройстве кварц, доходят почти все пакеты (потери 1-2 из 10), как только забираю - потери порядка 50%.

 

Код передатчика:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> // https://github.com/maniacbug/RF24
 
const uint64_t pipe = 0xF0F1F2F3F4LL;
 
RF24 radio(9, 10); // CE, CSN
 
int data[2] = {0, 0};  

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

  radio.begin();
  delay(100);
  radio.setChannel(120); // канал (0-127)
  radio.setDataRate(RF24_1MBPS); 
  radio.setPALevel(RF24_PA_HIGH);   
  radio.openWritingPipe(pipe);

  delay(500);
} 


void loop(){

  data[0]= data[0] + 1;
  
  data[1] = 1;

  radio.write(&data, sizeof(data));
  
    Serial.println("Send: ");
    Serial.print(data[0]);
    Serial.print(data[1]);
    Serial.println();
 
    delay(500);
} 

 

Код приемника:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> // https://github.com/maniacbug/RF24

const uint64_t pipe = 0xF0F1F2F3F4LL;

RF24 radio(9, 10); // CE, CSN

int data[2];
    
void setup(){
  
  Serial.begin(9600);

  radio.begin();
  delay(100);
  radio.setChannel(120); // канал (0-127)  
  radio.setDataRate(RF24_1MBPS); 
  radio.setPALevel(RF24_PA_HIGH);   
  
  radio.openReadingPipe(1, pipe);
  radio.startListening();

  Serial.println("Lising...");
  
}
 
void loop() {  
  if (radio.available()){ // проверяем не пришло ли чего в буфер.
    radio.read(&data, sizeof(data)); // читаем данные, указываем сколько байт читать
    
    Serial.println("Receive: ");
    Serial.print(data[0]);
    Serial.print(data[1]);
    Serial.println();

  }
} 

 

sirik
Offline
Зарегистрирован: 10.11.2012

Дошло до смешного: припаял кусок провода к одному выходу кварца, потери порядка 1 к 20

Radjah
Offline
Зарегистрирован: 06.08.2014

Скорость снизь.

Radjah
Offline
Зарегистрирован: 06.08.2014

del

sirik
Offline
Зарегистрирован: 10.11.2012

Снижал до 256Кб\с - все ровно. Причем проводок надо приваивать именно предающему устройству

sirik
Offline
Зарегистрирован: 10.11.2012

Gippopotam пишет:

sirik пишет:
В стандартном подключении все работает отлично, т.е. без Ethernet модуля

Если радиомодули подключены на неконфликтые пины и по отдельности все работает - значит вам осталось разобраться, как выбирать активное устройство на SPI.
 

подсказка - нужно подавать высокий/низкий уровень на SS.

 

 

Подведу некие выводы:

1. подключить одновременно Nrf24l01+ и Ethernet Shield все-таки получилось, чему я безмерно рад: CE выход Nrf24l01+ подключил на A2 (просто потому, что он свободный был) и при инициализации определил его как выход.

2. однако, вне зависимости от подключения Ethernet shield'а, пакеты все ровно теряются, причем конденсатор припаян, питание на ножках точно +3.3... Заметил следующее, если рукой прикоснуться к передающему модулю, к ножке кварца, то прием-передача более-менее (потеря пакетов порядка 2 из 10). Не знаю как это побороть(

Думал мб диапазон занят, но сканер показывает следующее:

RF24/examples/scanner/

00000000000000001111111111111111222222222222222233333333333333334444444444444444555555555555555566666666666666667777777777777777

0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

00000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000011000000001110001001000000000001000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000

 

sirik
Offline
Зарегистрирован: 10.11.2012

В общем вопрос можно закрыть: все дули дружат нормально, серва тоже. Но появилась новая: бутерброд сильно греется...