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 < 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);
} - Наука та технологія
/* 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]
а как отправлять данные с андроида на нрф?
ua-cam.com/video/F9yMTdcd33w/v-deo.html
4:27
А у меня ардуина не хочет работать с нрф(наверное потому что кондеры не припаяны)
И с передачиками и приемниками на 433мгц (а вот тут хз почему, разные способы перепробовал не помогло)
Здравствуйте, Дмитрий, подскажите пожалуйста по соединению двух мк ATMEGA 328 чтобы они принимали данные как один мк
Soul-La -Lamento есть копеечные модули-переходникт для нрф. рекомендую сразу их использовать
Вообще мужик трешует, всегда лайкую за информационность и отдельно за фон))
Меня поражает этот человек, все идеи реально прикольные))) Кондёр на nrf'ке это уже классика. Однозначно за видео лайк.
Дмитрий, имей севесть... Не пропадай так надолго ;-) Ты народу принадлежишь. Спасибо за видео и гениальность, доброту с которой ты всем делишься с народом.
Спасибо, Дмитрий за интересный и полезный урок! Рад Вас снова видеть! Желаю крепкого здоровья и творческих успехов!
ваши видео являются национальным достоянием ценность которых трудно переоценить! спасибо.
Спасибо вам за ваш труд.. Dmitry OSIPOV
УРА, Бог Ардуино вернулся!!!
Дмитрий, респект тебе и уважуха. Очень информативные видео у тебя.
Это черная магия. Спасибо за видео, больше не буду за кривые блютус модули переплачивать
все очень интересно и полезно
блогадарю. вы супер. спасибо бога зато что вы есть.
Стриженная борода хорошо смотрится.
Почему твои видео напоминают записи ученого, который ищет способ вылечить землю, охваченную зомби?
потому что земля действительно охвачена зомби и ими подобным
Лайк за инфу в видео и за подстриженную бороду
+ Спасибо
Сейчас буду делать .
Добрый день! В конце видео мелькал скрин со скетчем App Inventor. Очень интересно, не поделитесь?
Великолепно ! Наверно можно сделать на этой основе ibeacon (ru.wikipedia.org/wiki/IBeacon) маяк ?
Уважаемый Дмитрий сделайте пожалуйста передачи звука и видео на расстояние ? Ещё GPS ?
Агонь !!! !!! !!! респект полюбасу за интересные идеи )))))
Дмитрий, не замечал, что у тебя видосы называются как товары на алиэкспресс.
Замечательная штука ! Но как все это реализовать для MEGA2560? Замена SPI пинов не помогает, библиотека SPI вроде должна подойти . Сам NRF c Мегой подружились , даже в каналах почти нет помех
Добрый день! Есть ли у вас готовое предложение для ардуино с возможность вкл\выкл приборов, димингом и отображением температуры и влажности? Чтобы приложение могло посредством GSM связи управляться со смартфона.
Может ли nrf24l01 работать без модуля ардуино? Есть одна идея для разработки.
Какая ориентировочная дальность действия nrf в режиме блютуза?
так как же принимать значения температуры и влажности воздуха?
понимаю так: датчик dht22 подключаем на пин А0, а на экране значение выросло до 1023 и не изменяется.
надо библиотеку загрузить stDHT.h? и как скетч изменится?
Подскажите пожалуйста, можно ли организовать связь
двух устройств по USB на основе модулей nRF24L01?
Дима, майки тебе идут. Почаще одевай их) Мятая рубашка глаз режет.
а какой скетч надо чтобы управлять ардуиной через смартфон? то чото не получается.
Я правильно вижу что плата Arduino лежит на металлической пластине и не коротит? :)
Как с вами можно связаться
Ну вот смысл радиомодулей и блютуз? Радиус действия маленький, можно поднять зад и посмотреть или включить что либо без этих приблуд. А вот дистанционно было бы интересно (на esp8266 или что нить подобное).
для iPhone можно сделать ?
Можешь подсказать почему при компиляции вылетает ошибка компиляции платы esp8266 nod mcu
Димон, ты когда обои переклеишь? Они кажется еще времени первой мировой войны.
Дмитрий Иванов
Ты бы ещё антикварную кровать заменить попросил! Нет у тебя чувства стиля.
Здравствуйте, Дмитрий, подскажите пожалуйста по соединению двух мк ATMEGA 328 чтобы они принимали данные как один мк
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
вот Как-то так:
спасибо большое, нашёл информацию на иностранных ресурсах
разобрался , благодаря видео. Дмитрий, я так понимаю скетч заливать на каждый мк придётся свой для каждого мк? А для получения данных например с Bluetooth соединять мк по цепи tx1 > rx2 > tx2 > rx3 > tx3 > rx1???
как прочитать магнитне полосу карта
А как в обратную отправлять данные?
nrf плюс не подойдет?
подойдет ✔
we doing water tank full with nrf24 but pcb 328p not working
почему то у меня это не получается сделать. а все с клавиятурой с мышкой и всем осталним уроком бес проблем разобрался. а тут не могу понят обиснте пожалуста по повуду подключени нрф на ардуино по пинам.
ua-cam.com/video/F9yMTdcd33w/v-deo.html
8:08
а где подропности на какому пину ардуино потключит нрф ?
ua-cam.com/video/F9yMTdcd33w/v-deo.html
8:08
Могу ли вам написать на почту?????
Идея неплоха, НО это вообще не секьюрно
Alex Iva а можно шифровать это дело и потом известным ключем расшифровывать
Можно, но не целесообразно.
Alex Iva, не умничайте. о какой без-ти может идти речь при использовании радиопередачи и ардуино? это вам что deepblue чтоли.
а зачем вам секьюрность, передавая уровень влажности почвы и температуру в теплице?
правильно говорить не "фалзэ", а "шайзэ" ))))))))))
хорошие и интересные видео делает мужик, но хочу сказать одно, ему надо найти бабу, СРОЧНО ...... пока не поздно.
здравствуйте может подскажите как обойти глушилку GSM сигнализации ( срабатывает от наклона велосипеда: поступает незаметно для вора звонок владельцу) при использовании глушилки звонок просто не дойдет. может как-то можно сделать потоковый обмен через GSM интернет сигнализации и сервера или незнаю чего еще. чтобы при прирывании приходил звонок хозяину.
Легко но для этого нужен сервер. После постановки на охрану GSM модуль шлет каждую минуту по gprs на сервер команду что все нормально, А сервер если не получает команду шлет тревогу на телефон. Ну как то так.
Кто этим занимается подключает к серверу и к какому ( какой специалист??)
Кто сделает не знаю. я могу себе сам сделать сервер дома. А так за деньги слышал есть такое для машин.
"GSM модуль шлет каждую минуту по gprs на сервер команду "
это бесплатно, или нужно платить за связь?
Нужно платить за gprs
Все подключил, залил и н чего не работает( ни Самсунг галакси3 ни айфон se его не увидели