wifi troyka через SoftwareSerial

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем vadsky, 30 сен 2019.

  1. vadsky

    vadsky Нуб

    Как подключить wifi troyka через SoftwareSerial на iskra js.

    хочу подключить wifi troyka в слоты B и E слот шилде v2
     
  2. NikitOS

    NikitOS Король шутов Администратор

  3. vadsky

    vadsky Нуб

    Спасибо огромное!
     
  4. NikitOS

    NikitOS Король шутов Администратор

    Ну и если совсем не понятно....

    Начиная с Espruino v2.00 вы можете настроить программного Serial, используя код, подобный этому:
    Код (Javascript):
    var s =newSerial();
    s.setup(9600,{rx:a_pin, tx:a_pin});
    // или s.setup(9600,{tx:a_pin}); только для передачи
    Вы можете использовать любой пин и создавать несколько экземпляров программного Serial. Однако программный Serial не использует части объекта инициализации ck, cts, parity, flow или error.

    Примечание: поскольку программный Serial не использует аппаратную часть платы, есть некоторые недостаткт:

    • Скорость передачи выше 9600 бод может не дать ожидаемого результата
    • Отправка более одного или двух символов заблокирует выполнение другого кода до завершения (аппаратные последовательные порты имеют буфер передачи ~ 100 байт)
    • Программный Serial будет становиться все более ненадежным с увеличением нагрузки на процессор.

    Т.е код примерно такой:
    Код (Javascript):

    // Настраиваем интерфейс UART
    var wifiSerial =newSerial();
    wifiSerial.setup(9600,{rx:a_pin, tx:a_pin});
    // логин и пароль WiFi-сети
    var SSID = 'Amperka.ru';
    var PSWD = 'iskraJS';
    var wifi = require('@amperka/wifi').setup(wifiSerial, function(err) {
      // подключаемся к Wi-Fi сети
      wifi.connect(SSID, PSWD, function(err) {
        print('Connected');
        // Выполняем запрос
        require('http').get('http://amperka.ru', function(res) {
          var response = '';
          res.on('data', function(d) { response += d; });
          res.on('close', function() { print(response); });
        });
      });
    });

    Но опять же, я бы лучше использовал аппаратный Serial, он надежнее и быстрее
     
  5. vadsky

    vadsky Нуб

    Дело в том что я собираю на базе нян кэт на искре нотификатор vk сообщений и место под wifi занимают кнопка и зуммер, + два led и место остается только там.
    поэтому надо выкручиваться как я понял.

    | led matrix | wifi | button |
    --------------- -----------
    | led matrix | wifi | buzzer |

    вот схематичное расположение на Troyka Slot Shield v2

    уже подумываю взять просто Troyka Shield но реально ли все запихнуть внутрь структора нян
     
  6. NikitOS

    NikitOS Король шутов Администратор

    Ну а Вы пробовали способ, что в документации?
    WiFi заводится?
     
  7. b707

    b707 Гуру

    отказывайте от шилдов вообще, шилды - это для обучения школьников. Переходите на нормальные платы
     
    NikitOS нравится это.
  8. vadsky

    vadsky Нуб

    Да, когда вставил в слоты C и F то все работает, но туда по задумке мне не нужно так как там кнопка и зуммер


    Код (Javascript):
    // Настраиваем интерфейс UART
    var serial = Serial3;
    //var serial = newSerial();
    serial.setup(115200);

    //var wifi = require('@amperka/wifi');
    var http = require('http');

    var SSID = 'Beliro';
    var PSWD = 'Biro65!9';

    var wifi = require('@amperka/wifi').setup(serial, function(err) {
      // подключаемся к Wi-Fi сети
      print('WIFI RESET...');
      wifi.reset(function(err) {
        print('WIFI RUN...');
        wifi.connect(SSID, PSWD, function(err) {
          if(err){
            print('CONNECT NO');
          }else{
            print('CONNECT YES');
            // в консоли покажет сколько занято памяти
            process.memory();
            getZapros();
          }
        });
      });
    });

    function getZapros() {
        var token = '0';
        http.get('http://api.vk.com/method/friends.search?count=60&access_token='+token+'&v=5.101', function(res) {
          var response = '';
          res.on('data', function(d) { response += d; });
          res.on('close', function() { console.log(response); });
        }).on('error', function(e) {
          console.log('ERROR', e);
        });
    }
    щас попробовал вставить в слоты B и E и загрузить код с вашего примера пишет оишбку

    Uncaught ReferenceError: "newSerial" is not defined
    at line 5 col 14
    var serial = newSerial();

    тоесть функцию не видит? ее подключать отдельно надо?
     
  9. vadsky

    vadsky Нуб

    уже понял это когда столкнулся напрямую, придется нян кэта пожирнее делать походу))
     
  10. NikitOS

    NikitOS Король шутов Администратор

    Может так?
    Код (Javascript):
    // Настраиваем интерфейс UART
    var wifiSerial =newSerial();
    wifiSerial.setup(9600,{rx:A2, tx:A3});

    //var wifi = require('@amperka/wifi');
    var http = require('http');

    var SSID = 'Beliro';
    var PSWD = 'Biro65!9';

    var wifi = require('@amperka/wifi').setup(serial, function(err) {
      // подключаемся к Wi-Fi сети
      print('WIFI RESET...');
      wifi.reset(function(err) {
        print('WIFI RUN...');
        wifi.connect(SSID, PSWD, function(err) {
          if(err){
            print('CONNECT NO');
          }else{
            print('CONNECT YES');
            // в консоли покажет сколько занято памяти
            process.memory();
            getZapros();
          }
        });
      });
    });

    function getZapros() {
        var token = '0';
        http.get('http://api.vk.com/method/friends.search?count=60&access_token='+token+'&v=5.101', function(res) {
          var response = '';
          res.on('data', function(d) { response += d; });
          res.on('close', function() { console.log(response); });
        }).on('error', function(e) {
          console.log('ERROR', e);
        });
    }
     
    WiFi Slot в B и E, чтобы TX и RX модуля были на B
     
  11. vadsky

    vadsky Нуб

    Распишу немного для тех кто столкнется в будущем)
    Разобрался, во первых обновил прошивку до 2v01.49 была 1.98
    во вторых newSerial(); добавил пробел new Serial(); (вообще затупил я чето) )
    конекта пока недобился...

    плюс через dump();
    в начале кода выводит

    pinMode(A2, "af_output", true);
    pinMode(A3, "af_output", true);
    я так понял это указывает на то какие пины задействованы