Arduino МАЛЕНЬКОЕ ЧУДО nRF24L01 BLE Bluetooth low energy Smart Лайфхак Своими руками
Download - sketch.
https://yadi.sk/d/dv6qRGM63J4SDp
+ sketch оставлю в комментарии - под видео.
______.
(Получатель). Осипов Дмитрий Рафаэлович
(БИК или наименование банка получателя). 044525716
(ВТБ 24 (ПАО) Г.МОСКВА к/c:). 30101810100000000716
(Счет получателя). 30232810481100000009
(Назначение платежа).
Для зачисления на карту 4272290003079712 Осипов Дмитрий Рафаэлович
На счет моего мобильного телефона "МТС Moskva".
+7 (915) 001-17-12
https://www.paypal.me/1DmitryOsipov
______.
Вспомогательные видео.
Arduino nRF24L01 BLE Recv Send Bluetooth low energy Smart Лайфхак Своими руками
https://youtu.be/c8lWFAzINc8
Основу для sketch, брал здесь: http://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 < 8; v++, d >>= 1) {
t = dst[0] >> 7;
dst[0] <<= 1;
if (dst[1] & 0x80) dst[0] |= 1;
dst[1] <<= 1;
if (dst[2] & 0x80) dst[1] |= 1;
dst[2] <<= 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 <<= 1) {
if (whitenCoeff & 0x80) {
whitenCoeff ^= 0x11;
(*data) ^= m;
}
whitenCoeff <<= 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 < 3; i++, dataLen++)
packet[dataLen] = swapbits(packet[dataLen]);
btLeWhiten(packet, len, btLeWhitenStart(chan));
for (i = 0; i < 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 < 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 < 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 < 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);
}
Видео Arduino МАЛЕНЬКОЕ ЧУДО nRF24L01 BLE Bluetooth low energy Smart Лайфхак Своими руками канала Dmitry OSIPOV
https://yadi.sk/d/dv6qRGM63J4SDp
+ sketch оставлю в комментарии - под видео.
______.
(Получатель). Осипов Дмитрий Рафаэлович
(БИК или наименование банка получателя). 044525716
(ВТБ 24 (ПАО) Г.МОСКВА к/c:). 30101810100000000716
(Счет получателя). 30232810481100000009
(Назначение платежа).
Для зачисления на карту 4272290003079712 Осипов Дмитрий Рафаэлович
На счет моего мобильного телефона "МТС Moskva".
+7 (915) 001-17-12
https://www.paypal.me/1DmitryOsipov
______.
Вспомогательные видео.
Arduino nRF24L01 BLE Recv Send Bluetooth low energy Smart Лайфхак Своими руками
https://youtu.be/c8lWFAzINc8
Основу для sketch, брал здесь: http://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 < 8; v++, d >>= 1) {
t = dst[0] >> 7;
dst[0] <<= 1;
if (dst[1] & 0x80) dst[0] |= 1;
dst[1] <<= 1;
if (dst[2] & 0x80) dst[1] |= 1;
dst[2] <<= 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 <<= 1) {
if (whitenCoeff & 0x80) {
whitenCoeff ^= 0x11;
(*data) ^= m;
}
whitenCoeff <<= 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 < 3; i++, dataLen++)
packet[dataLen] = swapbits(packet[dataLen]);
btLeWhiten(packet, len, btLeWhitenStart(chan));
for (i = 0; i < 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 < 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 < 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 < 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);
}
Видео Arduino МАЛЕНЬКОЕ ЧУДО nRF24L01 BLE Bluetooth low energy Smart Лайфхак Своими руками канала Dmitry OSIPOV
Показать
Комментарии отсутствуют
Информация о видео
Другие видео канала
Подключение и настройка nRF24L01 к Arduino (модуль беспроводной связи)Arduino nRF24L01+ Соединяем несколько Arduino по радиоканалу multi Connect Transmitter ReceiverУправление моторами с ArduinoArduino Поворотное устройство для камеры Android Bluetooth Servo Pan Tilt Лайфхак Своими рукамиDeel 12 - Arduino, gegevens doorsturen naar telefoon via Bluetooth, nRF24L01 module en Android AppArduino nRF24L01 BLE Recv Send Bluetooth low energy Smart Лайфхак Своими руками🔊Беспроводная колонка своими рукамиУроки Ардуино. ПИД регуляторРеализация приема-передачи данных по радиоканалу с помощью NRF24l01+ в программе FLProg#179 Was it worth waiting for Bluetooth? How Much Current Needs the ESP32 Bluetooth in BLE?🚗Bluetooth танк - powerbank своими руками10 Новых лайфхаков для телефона🎒Вызов принят: рюкзак с дисплеем своими руками!nRF24L01 и Ардуино: побеждаем модульЖучок - прослушка на Arduino + NRF24L01use NRF as a BLE Module | Arduino NRF24L01 Bluetooth Low Energy TutorialБеспроводной термодатчик для метеостанции на Arduino своими рукамиHow To Build Custom Android App for your Arduino Project using MIT App InventorTurn your HC-05 into a HID Bluetooth device (No Parallel Port Method)Самая простая сигнализация для дома, дачи, гаража - своими руками Лайфхак GSM alarm HC-SR501 Arduino