Arduino МАЛЕНЬКОЕ ЧУДО nRF24L01 BLE Bluetooth low energy Smart Лайфхак Своими руками

Поділитися
Вставка
  • Опубліковано 11 тра 2017
  • Download - sketch.
    yadi.sk/d/dv6qRGM63J4SDp
    + sketch оставлю в комментарии - под видео.
    ______.
    (Получатель). Осипов Дмитрий Рафаэлович
    (БИК или наименование банка получателя). 044525716
    (ВТБ 24 (ПАО) Г.МОСКВА к/c:). 30101810100000000716
    (Счет получателя). 30232810481100000009
    (Назначение платежа).
    Для зачисления на карту 4272290003079712 Осипов Дмитрий Рафаэлович
    На счет моего мобильного телефона "МТС Moskva".
    +7 (915) 001-17-12
    www.paypal.me/1DmitryOsipov
    ______.
    Вспомогательные видео.
    Arduino nRF24L01 BLE Recv Send Bluetooth low energy Smart Лайфхак Своими руками
    • Arduino nRF24L01 BLE R...
    Основу для sketch, брал здесь: doc.lijun.li/misc-nrf24-ble.html
    ______.
    /* nRF24L01 BLE Transmitter Wireless Arduino Android iPhone v.1 20170511.*/
    #include "SPI.h"
    #define PIN_CE 9
    #define PIN_CSN 10
    #define MY_MAC_0 0x11
    #define MY_MAC_1 0x22
    #define MY_MAC_2 0x33
    #define MY_MAC_3 0x44
    #define MY_MAC_4 0x55
    #define MY_MAC_5 0x66
    uint8_t bleName[17];
    bool macBool = 0;
    uint8_t buf[32];
    static const uint8_t chRf[] = {2, 26, 80};
    static const uint8_t chLe[] = {37, 38, 39};
    uint8_t ch = 0;
    void btLeCrc(const uint8_t* data, uint8_t len, uint8_t* dst) {
    uint8_t v, t, d;
    while (len--) {
    d = *data++;
    for (v = 0; v &lt 8; v++, d &gt&gt= 1) {
    t = dst[0] &gt&gt 7;
    dst[0] &lt&lt= 1;
    if (dst[1] & 0x80) dst[0] |= 1;
    dst[1] &lt&lt= 1;
    if (dst[2] & 0x80) dst[1] |= 1;
    dst[2] &lt&lt= 1;
    if (t != (d & 1)) {
    dst[2] ^= 0x5B;
    dst[1] ^= 0x06;
    }
    }
    }
    }
    uint8_t swapbits(uint8_t a) {
    uint8_t v = 0;
    if (a & 0x80) v |= 0x01;
    if (a & 0x40) v |= 0x02;
    if (a & 0x20) v |= 0x04;
    if (a & 0x10) v |= 0x08;
    if (a & 0x08) v |= 0x10;
    if (a & 0x04) v |= 0x20;
    if (a & 0x02) v |= 0x40;
    if (a & 0x01) v |= 0x80;
    return v;
    }
    void btLeWhiten(uint8_t* data, uint8_t len, uint8_t whitenCoeff) {
    uint8_t m;
    while (len--) {
    for (m = 1; m; m &lt&lt= 1) {
    if (whitenCoeff & 0x80) {
    whitenCoeff ^= 0x11;
    (*data) ^= m;
    }
    whitenCoeff &lt&lt= 1;
    }
    data++;
    }
    }
    static inline uint8_t btLeWhitenStart(uint8_t chan) {
    return swapbits(chan) | 2;
    }
    void btLePacketEncode(uint8_t* packet, uint8_t len, uint8_t chan) {
    uint8_t i, dataLen = len - 3;
    btLeCrc(packet, dataLen, packet + dataLen);
    for (i = 0; i &lt 3; i++, dataLen++)
    packet[dataLen] = swapbits(packet[dataLen]);
    btLeWhiten(packet, len, btLeWhitenStart(chan));
    for (i = 0; i &lt len; i++)
    packet[i] = swapbits(packet[i]);
    }
    uint8_t spi_byte(uint8_t byte) {
    SPI.transfer(byte);
    return byte;
    }
    void nrf_cmd(uint8_t cmd, uint8_t data) {
    digitalWrite(PIN_CSN, LOW);
    spi_byte(cmd);
    spi_byte(data);
    digitalWrite(PIN_CSN, HIGH);
    }
    void nrf_simplebyte(uint8_t cmd) {
    digitalWrite(PIN_CSN, LOW);
    spi_byte(cmd);
    digitalWrite(PIN_CSN, HIGH);
    }
    void nrf_manybytes(uint8_t* data, uint8_t len) {
    digitalWrite(PIN_CSN, LOW);
    do {
    spi_byte(*data++);
    } while (--len);
    digitalWrite(PIN_CSN, HIGH);
    }
    void setup() {
    pinMode(PIN_CSN, OUTPUT);
    pinMode(PIN_CE, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(13, OUTPUT);
    digitalWrite(PIN_CSN, HIGH);
    digitalWrite(PIN_CE, LOW);
    SPI.begin();
    SPI.setBitOrder(MSBFIRST);
    nrf_cmd(0x20, 0x12);
    nrf_cmd(0x21, 0x00);
    nrf_cmd(0x22, 0x00);
    nrf_cmd(0x23, 0x02);
    nrf_cmd(0x24, 0x00);
    nrf_cmd(0x26, 0x06);
    nrf_cmd(0x27, 0x3E);
    nrf_cmd(0x3C, 0x00);
    nrf_cmd(0x3D, 0x00);
    nrf_cmd(0x31, 32);
    nrf_cmd(0x22, 0x01);
    buf[0] = 0x30;
    buf[1] = swapbits(0x8E);
    buf[2] = swapbits(0x89);
    buf[3] = swapbits(0xBE);
    buf[4] = swapbits(0xD6);
    nrf_manybytes(buf, 5);
    buf[0] = 0x2A;
    nrf_manybytes(buf, 5);
    }
    void loop() {
    String str = "";
    if (macBool)str = (String) "A0=" + analogRead(A0) + "-A1=" + analogRead(A1);
    else str = (String) "A2=" + analogRead(A2) + "-A3=" + analogRead(A3);
    str.toCharArray(bleName, sizeof(bleName));
    delay(1);
    for (ch = 0; ch &lt sizeof(chRf); ch++)
    {
    uint8_t i, L = 0;
    buf[L++] = 0x42;
    buf[L++] = 16 + 11;
    buf[L++] = MY_MAC_0;
    buf[L++] = MY_MAC_1;
    buf[L++] = MY_MAC_2;
    buf[L++] = MY_MAC_3;
    buf[L++] = MY_MAC_4;
    buf[L++] = macBool = !macBool;
    buf[L++] = 2;
    buf[L++] = 0x01;
    buf[L++] = 0x06;
    buf[L++] = sizeof(bleName);
    buf[L++] = 0x08;
    for (i = 0; i &lt sizeof(bleName) - 1; i++)buf[L++] = bleName[i];
    buf[L++] = 0x55;
    buf[L++] = 0x55;
    buf[L++] = 0x55;
    nrf_cmd(0x25, chRf[ch]);
    nrf_cmd(0x27, 0x6E);
    btLePacketEncode(buf, L, chLe[ch]);
    nrf_simplebyte(0xE2);
    nrf_simplebyte(0xE1);
    digitalWrite(PIN_CSN, LOW);
    spi_byte(0xA0);
    for (i = 0 ; i &lt L ; i++) spi_byte(buf[i]);
    digitalWrite(PIN_CSN, HIGH);
    nrf_cmd(0x20, 0x12);
    digitalWrite(PIN_CE, HIGH);
    delay(2);
    digitalWrite(PIN_CE, LOW);
    }
    delay(100);
    }
  • Наука та технологія

КОМЕНТАРІ • 86

  • @d36073
    @d36073  7 років тому +12

    /* nRF24L01 BLE Transmitter Wireless Arduino Android iPhone v.1 20170511.*/
    #include "SPI.h"
    #define PIN_CE 9
    #define PIN_CSN 10
    #define MY_MAC_0 0x11
    #define MY_MAC_1 0x22
    #define MY_MAC_2 0x33
    #define MY_MAC_3 0x44
    #define MY_MAC_4 0x55
    #define MY_MAC_5 0x66
    uint8_t bleName[17];
    bool macBool = 0;
    uint8_t buf[32];
    static const uint8_t chRf[] = {2, 26, 80};
    static const uint8_t chLe[] = {37, 38, 39};
    uint8_t ch = 0;
    void btLeCrc(const uint8_t* data, uint8_t len, uint8_t* dst) {
    uint8_t v, t, d;
    while (len--) {
    d = *data++;
    for (v = 0; v < 8; v++, d >>= 1) {
    t = dst[0] >> 7;
    dst[0]

    • @fpv_am
      @fpv_am 7 років тому

      а как отправлять данные с андроида на нрф?

    • @d36073
      @d36073  7 років тому +1

      ua-cam.com/video/F9yMTdcd33w/v-deo.html
      4:27

    • @ajiekceumapecbe8316
      @ajiekceumapecbe8316 7 років тому

      А у меня ардуина не хочет работать с нрф(наверное потому что кондеры не припаяны)
      И с передачиками и приемниками на 433мгц (а вот тут хз почему, разные способы перепробовал не помогло)

    • @kneht90
      @kneht90 7 років тому

      Здравствуйте, Дмитрий, подскажите пожалуйста по соединению двух мк ATMEGA 328 чтобы они принимали данные как один мк

    • @TEENASPECT
      @TEENASPECT 7 років тому

      Soul-La -Lamento есть копеечные модули-переходникт для нрф. рекомендую сразу их использовать

  • @user-ml8yx2ig7r
    @user-ml8yx2ig7r 7 років тому +34

    Вообще мужик трешует, всегда лайкую за информационность и отдельно за фон))

  • @user-xg7mf6mf3s
    @user-xg7mf6mf3s 7 років тому +24

    Меня поражает этот человек, все идеи реально прикольные))) Кондёр на nrf'ке это уже классика. Однозначно за видео лайк.

  • @sunman778
    @sunman778 7 років тому +15

    Дмитрий, имей севесть... Не пропадай так надолго ;-) Ты народу принадлежишь. Спасибо за видео и гениальность, доброту с которой ты всем делишься с народом.

  • @user-jc2xt8hn7k
    @user-jc2xt8hn7k 7 років тому +5

    Спасибо, Дмитрий за интересный и полезный урок! Рад Вас снова видеть! Желаю крепкого здоровья и творческих успехов!

  • @evgeniygul1131
    @evgeniygul1131 5 років тому

    ваши видео являются национальным достоянием ценность которых трудно переоценить! спасибо.

  • @user-xh3db7xi8p
    @user-xh3db7xi8p 6 років тому +2

    Спасибо вам за ваш труд.. Dmitry OSIPOV

  • @gigabelka
    @gigabelka 7 років тому +22

    УРА, Бог Ардуино вернулся!!!

  • @MrObituss
    @MrObituss 4 роки тому +2

    Дмитрий, респект тебе и уважуха. Очень информативные видео у тебя.

  • @user-iy6ng5sg4z
    @user-iy6ng5sg4z 7 років тому +2

    Это черная магия. Спасибо за видео, больше не буду за кривые блютус модули переплачивать

  • @user-do6nl1rz6m
    @user-do6nl1rz6m 7 років тому +3

    все очень интересно и полезно

  • @nodirbektursunbaev4800
    @nodirbektursunbaev4800 7 років тому

    блогадарю. вы супер. спасибо бога зато что вы есть.

  • @pavelstitch9795
    @pavelstitch9795 6 років тому

    Стриженная борода хорошо смотрится.

  • @ekkeer
    @ekkeer 7 років тому +37

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

    • @user-eg7to8uj7q
      @user-eg7to8uj7q 6 років тому +6

      потому что земля действительно охвачена зомби и ими подобным

  • @evil_bob73
    @evil_bob73 7 років тому +1

    Лайк за инфу в видео и за подстриженную бороду

  • @yurycz8933
    @yurycz8933 7 років тому

    + Спасибо

  • @areamemory38
    @areamemory38 5 років тому

    Сейчас буду делать .

  • @TLion256
    @TLion256 2 роки тому

    Добрый день! В конце видео мелькал скрин со скетчем App Inventor. Очень интересно, не поделитесь?

  • @areamemory38
    @areamemory38 5 років тому

    Великолепно ! Наверно можно сделать на этой основе ibeacon (ru.wikipedia.org/wiki/IBeacon) маяк ?

  • @user-go2jg4up4s
    @user-go2jg4up4s 5 років тому

    Уважаемый Дмитрий сделайте пожалуйста передачи звука и видео на расстояние ? Ещё GPS ?

  • @user-nh1vc1ff4j
    @user-nh1vc1ff4j 7 років тому +1

    Агонь !!! !!! !!! респект полюбасу за интересные идеи )))))

  • @user-nl9oc9rp1h
    @user-nl9oc9rp1h 6 років тому

    Дмитрий, не замечал, что у тебя видосы называются как товары на алиэкспресс.

  • @user-dc5ek5tk8n
    @user-dc5ek5tk8n 4 роки тому

    Замечательная штука ! Но как все это реализовать для MEGA2560? Замена SPI пинов не помогает, библиотека SPI вроде должна подойти . Сам NRF c Мегой подружились , даже в каналах почти нет помех

  • @user-cf6hb1jj9g
    @user-cf6hb1jj9g 4 роки тому

    Добрый день! Есть ли у вас готовое предложение для ардуино с возможность вкл\выкл приборов, димингом и отображением температуры и влажности? Чтобы приложение могло посредством GSM связи управляться со смартфона.

  • @user-yj2si6ej7v
    @user-yj2si6ej7v 2 роки тому

    Может ли nrf24l01 работать без модуля ардуино? Есть одна идея для разработки.

  • @iandreyz
    @iandreyz 5 років тому

    Какая ориентировочная дальность действия nrf в режиме блютуза?

  • @bekarysabdramanov4603
    @bekarysabdramanov4603 6 років тому

    так как же принимать значения температуры и влажности воздуха?
    понимаю так: датчик dht22 подключаем на пин А0, а на экране значение выросло до 1023 и не изменяется.
    надо библиотеку загрузить stDHT.h? и как скетч изменится?

  • @UA-fn5cl
    @UA-fn5cl 4 роки тому

    Подскажите пожалуйста, можно ли организовать связь
    двух устройств по USB на основе модулей nRF24L01?

  • @user-bq5ce2px3b
    @user-bq5ce2px3b 7 років тому

    Дима, майки тебе идут. Почаще одевай их) Мятая рубашка глаз режет.

  • @lyohanerevenko1364
    @lyohanerevenko1364 6 років тому

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

  • @tomasinagmailcom
    @tomasinagmailcom 7 років тому +1

    Я правильно вижу что плата Arduino лежит на металлической пластине и не коротит? :)

  • @klepikov.makos.95
    @klepikov.makos.95 6 років тому

    Как с вами можно связаться

  • @sarincanoname2716
    @sarincanoname2716 7 років тому +3

    Ну вот смысл радиомодулей и блютуз? Радиус действия маленький, можно​ поднять зад и посмотреть или включить что либо без этих приблуд. А вот дистанционно было бы интересно (на esp8266 или что нить подобное).

  • @IonWP
    @IonWP 7 років тому

    для iPhone можно сделать ?

  • @user-tx8op6kz6e
    @user-tx8op6kz6e 5 років тому

    Можешь подсказать почему при компиляции вылетает ошибка компиляции платы esp8266 nod mcu

  • @electronics_is_easy
    @electronics_is_easy 7 років тому +2

    Димон, ты когда обои переклеишь? Они кажется еще времени первой мировой войны.

    • @saszab
      @saszab 7 років тому +1

      Дмитрий Иванов
      Ты бы ещё антикварную кровать заменить попросил! Нет у тебя чувства стиля.

  • @kneht90
    @kneht90 7 років тому

    Здравствуйте, Дмитрий, подскажите пожалуйста по соединению двух мк ATMEGA 328 чтобы они принимали данные как один мк

    • @d36073
      @d36073  7 років тому

      Expand I/O ports with another Arduino using I2C
      ua-cam.com/video/lZBZ_Nco1pc/v-deo.html&feature=player_embedded
      rodelectronics.blogspot.ru/2010/03/expand-io-ports-with-another-arduino.html
      или
      v.01 Arduino увеличиваем количество Pins Atmega328 Increase pins Serial
      ua-cam.com/video/upv7N7dDyYo/v-deo.html
      вот Как-то так:

    • @kneht90
      @kneht90 7 років тому

      спасибо большое, нашёл информацию на иностранных ресурсах

    • @kneht90
      @kneht90 7 років тому

      разобрался , благодаря видео. Дмитрий, я так понимаю скетч заливать на каждый мк придётся свой для каждого мк? А для получения данных например с Bluetooth соединять мк по цепи tx1 > rx2 > tx2 > rx3 > tx3 > rx1???

  • @qashqaldakqashqaldak8
    @qashqaldakqashqaldak8 5 років тому

    как прочитать магнитне полосу карта

  • @passaw7
    @passaw7 3 роки тому

    А как в обратную отправлять данные?

  • @nodirbektursunbaev4800
    @nodirbektursunbaev4800 7 років тому

    nrf плюс не подойдет?

    • @d36073
      @d36073  7 років тому

      подойдет ✔

  • @lasyapothina8663
    @lasyapothina8663 2 роки тому

    we doing water tank full with nrf24 but pcb 328p not working

  • @nodirbektursunbaev4800
    @nodirbektursunbaev4800 7 років тому

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

    • @d36073
      @d36073  7 років тому

      ua-cam.com/video/F9yMTdcd33w/v-deo.html
      8:08

  • @nodirbektursunbaev4800
    @nodirbektursunbaev4800 7 років тому

    а где подропности на какому пину ардуино потключит нрф ?

    • @d36073
      @d36073  7 років тому

      ua-cam.com/video/F9yMTdcd33w/v-deo.html
      8:08

  • @user-Atman
    @user-Atman 2 роки тому

    Могу ли вам написать на почту?????

  • @alexiva886
    @alexiva886 7 років тому +2

    Идея неплоха, НО это вообще не секьюрно

    • @SplashT
      @SplashT 7 років тому

      Alex Iva а можно шифровать это дело и потом известным ключем расшифровывать

    • @alexiva886
      @alexiva886 7 років тому

      Можно, но не целесообразно.

    • @Pompiduskus
      @Pompiduskus 7 років тому +1

      Alex Iva, не умничайте. о какой без-ти может идти речь при использовании радиопередачи и ардуино? это вам что deepblue чтоли.

    • @DmitryFomin
      @DmitryFomin 7 років тому

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

  • @user-ix7zs8bt4e
    @user-ix7zs8bt4e 7 років тому

    правильно говорить не "фалзэ", а "шайзэ" ))))))))))

  • @MrQuantumR
    @MrQuantumR 6 років тому

    хорошие и интересные видео делает мужик, но хочу сказать одно, ему надо найти бабу, СРОЧНО ...... пока не поздно.

  • @andreydavidenko3212
    @andreydavidenko3212 7 років тому

    здравствуйте может подскажите как обойти глушилку GSM сигнализации ( срабатывает от наклона велосипеда: поступает незаметно для вора звонок владельцу) при использовании глушилки звонок просто не дойдет. может как-то можно сделать потоковый обмен через GSM интернет сигнализации и сервера или незнаю чего еще. чтобы при прирывании приходил звонок хозяину.

    • @MrMotoped
      @MrMotoped 7 років тому +1

      Легко но для этого нужен сервер. После постановки на охрану GSM модуль шлет каждую минуту по gprs на сервер команду что все нормально, А сервер если не получает команду шлет тревогу на телефон. Ну как то так.

    • @andreydavidenko3212
      @andreydavidenko3212 7 років тому

      Кто этим занимается подключает к серверу и к какому ( какой специалист??)

    • @MrMotoped
      @MrMotoped 7 років тому

      Кто сделает не знаю. я могу себе сам сделать сервер дома. А так за деньги слышал есть такое для машин.

    • @user-ix7zs8bt4e
      @user-ix7zs8bt4e 7 років тому

      "GSM модуль шлет каждую минуту по gprs на сервер команду "
      это бесплатно, или нужно платить за связь?

    • @MrMotoped
      @MrMotoped 7 років тому

      Нужно платить за gprs

  • @user-jz9ly2cy2h
    @user-jz9ly2cy2h 5 років тому

    Все подключил, залил и н чего не работает( ни Самсунг галакси3 ни айфон se его не увидели