Радиообмен между Iskra JS

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Жорик2003, 14 июл 2016.

  1. Жорик2003

    Жорик2003 Нерд

    Есть две Искры ЖС. Нужно, чтобы они передавали друг другу данные с помощью одного из этих модулей:
    http://amperka.ru/product/nRF24L01-wireless-module
    http://amperka.ru/product/rf-433-transmitter
    Не принципиально, какие будут модули использоваться.

    Вопрос в следующем - я так понимаю, что не существует библиотек для этих модулей, кроме как на Arduino? Т.е., JavaScript здесь в пролете?

    Что делать?
     
  2. Morgan

    Morgan Гик

    Привет!
    Ни капли не в пролете) модуль 433 МГц - это просто беспроводная кнопка. Какой лог. уровень на передатчике, такой и на приемнике.
    Для модуля NRF есть библиотека, ее описание находится на сайте espruino.com/NRF24L01P
    вкратце, так.
    Если возникнут трудности, пишите!
     
  3. Жорик2003

    Жорик2003 Нерд

    Большое спасибо. Пока два вопроса:
    1. Есть ли библиотеки для модуля 433МГц, чтобы передавать сообщения до килобайта с коррекцией ошибок?
    2. То есть, если правиольно подключить пины, библиотека для NRF совместима с Искрой?
     
  4. ИгорьК

    ИгорьК Гуру

    Не заработает она на "настоящих" модулях. Смотрел - там одна или две настройки, а остальное надо записью в ячейки памяти делать. Новичкам это не под силу. Да и мне влом, (как оказалось).
    Эх, где же nRF от тех, кто их изобрел - они на такой библиотеке, наверно, будут связываться. Остальные - вряд ли.

    Что касается 433МГц, то и библиотека на Espruino есть: http://www.espruino.com/433Mhz
    И пример работы: http://www.espruino.com/Remote+Control+Sockets

    Жорик2003! Это классно, что Вы говорите "спасибо", но, может, начнете сами действовать?
     
  5. Жорик2003

    Жорик2003 Нерд

    И изобретать велосипеды? Ну уж нет, спасибо.
     
  6. ИгорьК

    ИгорьК Гуру

  7. kajsat

    kajsat Нуб

    Здравствуйте, у меня есть две платы IskraJS(http://wiki.amperka.ru/js:iskra_js– IskraJSна сайте амперки) и IskraJSmini(http://wiki.amperka.ru/продукты:iskra-js-mini– IskraJSminiна сайте амперки) и два модуля беспроводной связи NRF24l01+.
    Я подключил модули к платам напрямую, используя вспомогательную схему распиновки с сайтов выше и на сам модуль к доступным интерфейсам SPI(без контакта IRQ):
    MISO – MISO;
    MOSI – MOSI;
    SCK – SCK;
    CSN – CSN;
    CE- CE;
    Vcc – 3.3V;
    GND – GND.

    [​IMG]
    Пользовался инструкцией с сайта(http://www.espruino.com/NRF24L01P - описание по подключению NRF24l01+ для работы через EspruinoIDE), как я понял там не требовалось подключение IRQ, ну я его и не подключал…
    [​IMG]
    В коде для платы Iskra JS, которая стала emitter(Master) прописал опять-же как из примера(только для нужных контактов):
    Код (Javascript):
    SPI2.setup({sck:B13, miso:B14, mosi:B15});
    var nrf = require("NRF24L01P").connect( SPI2, B0, B1 ); //B0(P6),B1(P5) на схеме
    function onInit() {
    nrf.init([0,0,0,0,2], [0,0,0,0,1]);}
    onInit();
    setInterval(function() {
    nrf.masterHandler();}, 50);
    И все больше ничего не мудрил – но заливается в память через раз (консоль выпадает при заливке прошивки).

    [​IMG]
    В коде для платы Iskra JS mini которая у меня стала receiver(Slave) прописал и залил(консоль работала нормально в Espruino ide):
    Код (Javascript):
    SPI1.setup({sck:A5, miso:A6, mosi:A7});
    var nrf = require("NRF24L01P").connect( SPI1, B0, B1 );
    function onInit() {
    nrf.init([0,0,0,0,1], [0,0,0,0,2]);}
    onInit();
    setInterval(function() {
    nrf.slaveHandler();}, 50);
    Тут все подрубал к SPI1 и как из примера наименования пинов совпали.
    Но дальше я не понимаю что делать, я пробовал команду вывести на консоль с искры жс мини, а на искре жс подключенную к блоку питания от розетки, через кнопку планировал отсылать сообщение из примера:
    Код (Javascript):
    nrf.sendCommand("1+2", function(r) { print("=="+r); });
    результатом должно быть
    Код (Javascript):
     =3
    Но этого не происходило… пробовал варианты из примера и тоже в пустую.

    Код на Mastereбыл такой:
    Код (Javascript):

    var knopa = require('@amperka/button').connect(P3);
    SPI2.setup({sck:B13, miso:B14, mosi:B15});
    var nrf = require("NRF24L01P").connect( SPI2, B0, B1 ); //B0(P6),B1(P5) на схеме искры
    function onInit() {
    nrf.init([0,0,0,0,2], [0,0,0,0,1]);}
    onInit();
    setInterval(function() {
    nrf.masterHandler();
    }, 50);
    knopa.on('press', function() {
    nrf.sendCommand("1+2", function(r) { print("=="+r);
    });
    });
     
    Прошу подсказать что и где я делал не так? А то запутался и понять где ошибка не могу сам.
    Если можно с подробным описанием, я еще не силен в JS, пока осваиваю.
     
    Последнее редактирование: 29 апр 2022
  8. Airbus

    Airbus Радиохулиган Модератор

    Код научимся вставлять А?
    [​IMG]
     
    kajsat нравится это.
  9. kajsat

    kajsat Нуб


    Прошло уже много времени, и я все еще жду кто может подсказать что я подключаю неправильно или прописываю неправильно в коде?

    (С использованием библиотеки Espruino - http://www.espruino.com/modules/NRF24L01P.js и инструкции с их-же сайта - http://www.espruino.com/NRF24L01P)

    Заранее благодарю.
     
  10. ИгорьК

    ИгорьК Гуру

    Коллега! Речь об этом модуле настолько длинна, что можно писать трактаты.

    Как итог, касающийся Еспруино - там Гордон похалявил с библиотекой и оная не позволяет выставить все настройки, чтобы завести "этот" модуль.

    "Этот" модуль бывает двух типов: поддельный (90% рынка) и настоящий (который мало кто знает где купить).
    У вас - поддельный. Иначе бы он завелся с библиотеки. (Правда есть еще особенности Искры).

    Что делать с поддельным - инициировать все регистры при старте (читайте ссылку).
    Спросите - как сделать в Еспруино? Ответа, скорее всего, не будет по причине того, что редко здесь встретишь поклонников данного девайса.

    Вот такая обстановка.

    Если нужна связь - я бы выбросил этот модуль и взял бы что-то другое.

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

    "Я правильно подключил библиотеку и жду что это заработает" в случае с этим NRF не прокатит.
    Здесь нужен уровень "я досконально понимаю как идет взаимодействие с модулем по SPI".

    Удачи.
     
    kajsat нравится это.
  11. kajsat

    kajsat Нуб

    Благодарю за ответ, это многое объясняет.
    Жаль что библиотека сразу не работает.
    Буду разбираться с модулем - да, брал чтоб две искры жс погонять по разной беспроводной связи и изучить интерфейсы)

    п.с. мне кажется потерялись ссылки в тексте
     
    Последнее редактирование: 12 май 2022
  12. parovoZZ

    parovoZZ Гуру

    Два варианта:
    1. Перейти на язык С
    2. Перейти на другой модуль

    Код на С можно поискать в моих опусах. Он 100% заводит модуль. При условии, что модуль заводится физически.
     
  13. ИгорьК

    ИгорьК Гуру

    Ссылка одна, та что в посте.

    На JS можно общаться с модулем по SPI не хуже чем C. На языке высокого уровня (поди допрыгни) еще проще.
     
  14. kajsat

    kajsat Нуб

    Да, вот об этом уже и думаю)).
    Только вы имеете в виду Си или С++, на Ардуино библиотеках или на чистом языке?
    Си я учил и по мне он отличается от С++... Си скорее больше по синтаксису на JS похож.

    Скорее всего я ошибаюсь, просто брался за плюсы очень давно и тогда небыло понимания и желания(ибо Ардуино еще не существовало в природе), скоро сам углублюсь в это - прикупил набор Матрешка и книгу по С++.
    Поискал по вашим сообщениям и не понял где именно можно посмотреть? Что вы имеете в виду под "моих опусах"?
     
  15. SergeiL

    SergeiL Оракул Модератор

    Да нет ничего от @parovoZZ заведомо рабочего, и компилируемого без ошибок. :( Я ни одного кода, что скомпилировался бы не видел.
    Могут быть только отдельные обрывки кода.
     
  16. parovoZZ

    parovoZZ Гуру

  17. parovoZZ

    parovoZZ Гуру

    Я имею ввиду язык Си. Что такое чистый си или грязный си - понятия не имею.