0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 2

Поборол приёмопередатчик xy-wb (xy-wa) на lt8920!

30.11.2020, 12:07. Показов 2242. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добился работы этих радиомодулей. Выкладываю рабочие примеры. Подключение в принципе на видео видно, могу выложить фото.
https://studio.youtube.com/video/PvTOcWAljk4/edit ,кому пригодится просьба подписаться, мне будет приятно, что работа проделана не зря.
150 метров дальности связи проверено!
На мой взгляд очень удобный модуль, изменяя в скетче слово синхронизации или номер канала можно принимать и передавать данные определённой ардуине.

Для МЕГИ с выводом в монитор порта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <SPI.h>
#include "LT8920.h"
 
const uint8_t PIN_NRF_RST = 26;
const uint8_t PIN_NRF_CS = 28;
const uint8_t PIN_NRF_PKT = 30;
char sbuf[32];
LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST);
uint8_t a = 0;
uint8_t b = 181;
uint8_t c = 16;
uint8_t d = 7;
uint8_t e = 249;
 
void setup()
{
Serial.begin(9600);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV16);
 
lt.begin();
lt.setDataRate(LT8920::LT8920_1MBPS);
lt.setChannel(80);
lt.setSyncWord(0x1234123412341234);
 
//verify chip registers.
for (int i = 0; i <= 52; i++)
{
uint16_t value = lt.readRegister(i);
sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value);
Serial.print(sbuf);
}
}
 
void loop()
{
uint8_t data[] = { a,b,c,d,e };
lt.sendPacket(data, 5);
Serial.print("Packet send:");
Serial.println(a);
 
a=a+1;
if (a>=256)
{
a=0;
}
lt.startListening();
delay(2000);
if (lt.available())
{
uint8_t buf[32];
int packetSize = lt.read(buf, 32);
if (packetSize > 0)
{
Serial.println(F("Packet read OK"));
for(int i = 0; i < packetSize; i++)
{
Serial.print(i);
Serial.print("=");
Serial.println(buf);
}
}
else
{
Serial.println(F("Packet read fail"));
}
}
}
Такой-же для УНО:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <SPI.h>
#include "LT8920.h"
 
const uint8_t PIN_NRF_RST = 6;
const uint8_t PIN_NRF_CS = 5;
const uint8_t PIN_NRF_PKT = 4;
char sbuf[32];
LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST);
uint8_t a = 0;
uint8_t b = 126;
uint8_t c = 34;
uint8_t d = 219;
uint8_t e = 4;
 
void setup()
{
Serial.begin(9600);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV16);
 
lt.begin();
lt.setDataRate(LT8920::LT8920_1MBPS);
lt.setChannel(80);
lt.setSyncWord(0x1234123412341234);
 
//verify chip registers.
for (int i = 0; i <= 52; i++)
{
uint16_t value = lt.readRegister(i);
sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value);
Serial.print(sbuf);
}
}
 
void loop()
{
uint8_t data[] = { a,b,c,d,e };
lt.sendPacket(data, 5);
Serial.print("Packet send:");
Serial.println(a);
 
a=a+1;
if (a>=256)
{
a=0;
}
lt.startListening();
delay(2000);
if (lt.available())
{
uint8_t buf[32];
int packetSize = lt.read(buf, 32);
if (packetSize > 0)
{
Serial.println(F("Packet read OK"));
for(int i = 0; i < packetSize; i++)
{
Serial.print(i);
Serial.print("=");
Serial.println(buf);
}
}
else
{
Serial.println(F("Packet read fail"));
}
}
}
Для МЕГИ светодиод моргнёт после приёма пакета:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <SPI.h>
#include "LT8920.h"
 
const uint8_t PIN_NRF_RST = 26;
const uint8_t PIN_NRF_CS = 28;
const uint8_t PIN_NRF_PKT = 30;
char sbuf[32];
LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST);
uint8_t a = 0;
uint8_t b = 181;
uint8_t c = 16;
uint8_t d = 7;
uint8_t e = 249;
const int ledPin = 2;
 
void setup()
{
Serial.begin(9600);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV16);
 
pinMode(ledPin, OUTPUT);
 
lt.begin();
lt.setDataRate(LT8920::LT8920_1MBPS);
lt.setChannel(80);
lt.setSyncWord(0x1234123412341234);
 
//verify chip registers.
for (int i = 0; i <= 52; i++)
{
uint16_t value = lt.readRegister(i);
sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value);
Serial.print(sbuf);
}
}
void loop()
{
uint8_t data[] = { a,b,c,d,e };
lt.sendPacket(data, 5);
Serial.print("Packet send:");
Serial.println(a);
 
a=a+1;
if (a>=256)
{
a=0;
}
digitalWrite(ledPin,LOW);
lt.startListening();
delay(1500);
if (lt.available())
{
uint8_t buf[32];
int packetSize = lt.read(buf, 32);
if (packetSize > 0)
{
 
Serial.println(F("Packet read OK"));
for(int i = 0; i < packetSize; i++)
{
Serial.print(i);
Serial.print("=");
Serial.println(buf);
}
digitalWrite(ledPin, HIGH);
delay(500);
}
else
{
Serial.println(F("Packet read fail"));
}
}
}[/CODE]
 
[B]Для УНО с дисплеем I2C:[/B]
[CODE]#include <SPI.h>
#include "LT8920.h"
#include <LCD_1602_RUS.h>
LCD_1602_RUS lcd(0x26,16,2);
 
const uint8_t PIN_NRF_RST = 6;
const uint8_t PIN_NRF_CS = 5;
const uint8_t PIN_NRF_PKT = 4;
 
char sbuf[32];
LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST);
uint8_t a = 0;
uint8_t b = 126;
uint8_t c = 34;
uint8_t d = 219;
uint8_t e = 46;
 
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.print("Hello, world!");
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV16);
 
lt.begin();
lt.setDataRate(LT8920::LT8920_1MBPS);
lt.setChannel(80);
lt.setSyncWord(0x1234123412341234);
 
//verify chip registers.
for (int i = 0; i <= 52; i++)
{
uint16_t value = lt.readRegister(i);
sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value);
Serial.print(sbuf);
}
}
 
void loop()
{
uint8_t data[] = { a,b,c,d,e };
lt.sendPacket(data, 5);
lcd.setCursor(0,0);
lcd.print("Packet send: ");
lcd.print(a,DEC);
lcd.print(" ");
a=a+1;
if (a>=256)
{
a=0;
}
lt.startListening();
delay(2000);
if (lt.available())
{
uint8_t buf[32];
int packetSize = lt.read(buf, 32);
if (packetSize > 0)
{
lcd.setCursor(0,1);
for(int i = 0; i < packetSize; i++)
{
lcd.print(buf,DEC);
lcd.print(" ");
}
lcd.print(" ");
}
}
else
{
lcd.setCursor(0,1);
lcd.print("Packet read -- ");
}
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2020, 12:07
Ответы с готовыми решениями:

ИК приемопередатчик
Что за ИК (приемопередатчик) устанавливается в датчиках присутствия/перемещения? Если можно тип, ссылку на даташит или любую другую инфу. ...

WiFi-приемопередатчик.
Здрасте всем. Подскажите пожалуйста, существуют ли боль-мень доступные wi-fi модули с микроконтроллером на борту? Пока зацепился за...

Приемопередатчик starline a9
Перестал приходить обратный сигнал на пульт. Сам пульт полностью исправный так как проверял на друге пульты на них тоже сигнал обратный не...

2
Модератор
Эксперт по электронике
8967 / 6733 / 921
Регистрация: 14.02.2011
Сообщений: 23,792
30.11.2020, 16:14
Olegmih, ссылка не рабочая, перезалейте
0
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 2
30.11.2020, 16:27  [ТС]

https://www.youtube.com/watch?v=PvTOcWAljk4

Добавлено через 9 минут
Для УНО с дисплеем I2C:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <SPI.h>
#include "LT8920.h"
#include <LCD_1602_RUS.h>
LCD_1602_RUS lcd(0x26,16,2);
 
const uint8_t PIN_NRF_RST = 6;
const uint8_t PIN_NRF_CS = 5;
const uint8_t PIN_NRF_PKT = 4;
 
char sbuf[32];
LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST);
uint8_t a = 0;
uint8_t b = 126;
uint8_t c = 34;
uint8_t d = 219;
uint8_t e = 46;
 
void setup()
{
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  lcd.print("Hello, world!");
  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  SPI.setClockDivider(SPI_CLOCK_DIV16);
 
  lt.begin();
  lt.setDataRate(LT8920::LT8920_1MBPS);
  lt.setChannel(80);
  lt.setSyncWord(0x1234123412341234);
 
      //verify chip registers.
  for (int i = 0; i <= 52; i++)
  {
    uint16_t value = lt.readRegister(i);
    sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value);
    Serial.print(sbuf);
  }
}
 
void loop()
{
    uint8_t data[] = { a,b,c,d,e };
    lt.sendPacket(data, 5);
    lcd.setCursor(0,0);
    lcd.print("Packet send: ");
    lcd.print(a,DEC);
    lcd.print("  ");
    a=a+1;
    if (a>=256)
    {
      a=0;
    }
      lt.startListening();
      delay(2000);
   if (lt.available())
    {
      uint8_t buf[32];
      int packetSize = lt.read(buf, 32);
      if (packetSize > 0)
       {
        lcd.setCursor(0,1);
        for(int i = 0; i < packetSize; i++)
        {
          lcd.print(buf,DEC);
          lcd.print(" ");
        }
       lcd.print("  ");
      }
    }
  else
   {
        lcd.setCursor(0,1);
        lcd.print("Packet read --  ");
   }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2020, 16:27
Помогаю со студенческими работами здесь

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

Blue screen (не поборол за месяц)
Проблема: BSOD уже на протяжении месяца После чего началось: После переезда Проявление: В процессе работы без критических нагрузок....

Поборол прожекторы или тестер светодиодов
Мне очень нравится использовать многоцветные светодиоды. Да вот только они обычно оказываются прожекторами (если по даташитам) или баланс...

Сма Ardo DMPA Н 7.9, кто поборол программный глюк выхода на отжим
Сма Ardo DMPA Н 7.9 кто поборол программный глюк выхода на отжим прошу подсказать ... мои идеи закончились ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru