Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 03525ebe93 | |||
| 9d18b80bb6 | |||
| 415de7a97a | |||
| 970e454920 | |||
| b416ae981a | |||
| e66a74de62 |
@@ -14,6 +14,8 @@
|
||||
|
||||
## Содержание
|
||||
- [Установка](#install)
|
||||
- [Интерфейс](#interface)
|
||||
- [Подключение](#wiring)
|
||||
- [Инициализация](#init)
|
||||
- [Использование](#usage)
|
||||
- [Пример](#example)
|
||||
@@ -33,6 +35,31 @@
|
||||
- (Arduino IDE) автоматическая установка из .zip: *Скетч/Подключить библиотеку/Добавить .ZIP библиотеку…* и указать скачанный архив
|
||||
- Читай более подробную инструкцию по установке библиотек [здесь](https://alexgyver.ru/arduino-first/#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA)
|
||||
|
||||
<a id="interface"></a>
|
||||
## Интерфейс
|
||||
- Перед отправкой данных идёт синхронизирующий импульс, *TRAIN* мс
|
||||
- Далее старт импульс, *START* мс, LOW
|
||||
- Данные кодируются длиной импульса
|
||||
- Завершает отправку стоп импульс, *TRAIN* мс
|
||||

|
||||

|
||||
|
||||
<a id="wiring"></a>
|
||||
## Подключение
|
||||

|
||||
Передатчики:
|
||||
- SYN115, маленький чип: 1.8-3.6V, макс. скорость 8000
|
||||
- FS1000A: 3-12V, макс. скорость 10000
|
||||
- WL102-341: 2.0-3.6V, макс. скорость 6000
|
||||
|
||||
Приёмники:
|
||||
- SYN480R, крупный чип: 3.3-5.5V
|
||||
- MX-RM-5V (RF-5V): 5V
|
||||
- RX470 (WL101-341): 3-5V
|
||||
|
||||

|
||||

|
||||
|
||||
<a id="init"></a>
|
||||
## Инициализация
|
||||
```cpp
|
||||
@@ -56,14 +83,16 @@ Gyver433_RX<пин, буфер, CRC> rx;
|
||||
// ========= Gyver433_TX =========
|
||||
void sendData(T &data); // отправить данные любого типа (CRC добавляется автоматически)
|
||||
void write(uint8_t* buf, uint8_t size); // отправить массив байт указанного размера (CRC не добавляется)
|
||||
uint8_t buffer[]; // доступ к буферу приёма
|
||||
uint8_t byteBuf; // доступ к буферу принятого байта
|
||||
|
||||
// ========= Gyver433_RX =========
|
||||
// приём в прерывании
|
||||
void tickISR(); // тикер приёма для вызова в прерывании по CHANGE
|
||||
uint8_t tickISRraw(); // ручной приём в прерывании по CHANGE. Вернёт 1 (начало приёма), 2 (принят байт), 3 (конец пакета)
|
||||
|
||||
// приём в loop
|
||||
uint16_t tick(); // неблокирующий приём. Вернёт количество успешно принятых байт
|
||||
uint16_t tickWait(); // блокирующий приём. Вернёт количество успешно принятых байт
|
||||
|
||||
bool readData(T &data); // прочитает буфер в любой тип данных (в указанную переменную)
|
||||
uint16_t getSize(); // получить размер принятых данных
|
||||
uint16_t gotData(); // вернёт количество успешно принятых в tickISR() байт (см. пример isr_rx)
|
||||
@@ -87,10 +116,19 @@ uint8_t G433_crc_xor(uint8_t *buffer, uint8_t size); // ручной CRC XOR
|
||||
#define G433_CUT_RSSI // [RX] убрать расчёт RSSI из кода (сэкономит чуть памяти)
|
||||
```
|
||||
|
||||
### Работа приёмника без прерываний
|
||||
Для приёма данных достаточно вызывать в основном цикле метод `tick()`, он сам опрашивает пин радио.
|
||||
- Если в программе есть блокирующие места и loop() выполняется с задержками - будет потеря данных
|
||||
- Для более надёжного приёма рекомендуется вызывать `tickWait()`, она блокирует выполнение кода на время приёма.
|
||||
|
||||
### Работа приёмника с прерываниями
|
||||
Рекомендуется использовать приём в прерывании по CHANGE, для этого нужно вызывать в нём `tickISR()`.
|
||||
Тогда приём будет асинхронный и будет работать даже в загруженной программе.
|
||||
- Если стандартных пинов прерываний не хватает, можно задействовать PCINT. Вручную или с помощью библиотеки https://github.com/NicoHood/PinChangeInterrupt
|
||||
|
||||
<a id="example"></a>
|
||||
## Примеры
|
||||
Остальные примеры смотри в **examples**!
|
||||

|
||||
### Отправка
|
||||
```cpp
|
||||
#include <Gyver433.h>
|
||||
@@ -136,17 +174,6 @@ void loop() {
|
||||
}
|
||||
```
|
||||
|
||||
## Заметка по модулям:
|
||||
Передатчики:
|
||||
- SYN115, маленький чип: 1.8-3.6V, макс. скорость 8000
|
||||
- FS1000A: 3-12V, макс. скорость 10000
|
||||
- WL102-341: 2.0-3.6V, макс. скорость 6000
|
||||
|
||||
Приёмники:
|
||||
- SYN480R, крупный чип: 3.3-5.5V
|
||||
- MX-RM-5V (RF-5V): 5V
|
||||
- RX470 (WL101-341): 3-5V
|
||||
|
||||
<a id="versions"></a>
|
||||
## Версии
|
||||
- v1.0
|
||||
@@ -156,8 +183,9 @@ void loop() {
|
||||
- v1.4 - переделан FastIO
|
||||
- v1.4.1 - убран FastIO, CRC вынесен отдельно
|
||||
- v2.0 - убран буфер на отправку, убран манчестер, полностью переделан и оптимизирован интерфейс связи
|
||||
- v2.0.1 - fix compiler warnings
|
||||
|
||||
<a id="feedback"></a>
|
||||
## Баги и обратная связь
|
||||
При нахождении багов создавайте **Issue**, а лучше сразу пишите на почту [alex@alexgyver.ru](mailto:alex@alexgyver.ru)
|
||||
Библиотека открыта для доработки и ваших **Pull Request**'ов!
|
||||
Библиотека открыта для доработки и ваших **Pull Request**'ов!
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 183 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 222 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 333 KiB After Width: | Height: | Size: 172 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
+1
-1
@@ -1,5 +1,5 @@
|
||||
name=Gyver433
|
||||
version=2.0
|
||||
version=2.0.1
|
||||
author=AlexGyver <alex@alexgyver.ru>
|
||||
maintainer=AlexGyver <alex@alexgyver.ru>
|
||||
sentence=Simple library for 433 MHz radio
|
||||
|
||||
+3
-2
@@ -21,6 +21,7 @@
|
||||
v1.4 - переделан FastIO
|
||||
v1.4.1 - убран FastIO, CRC вынесен отдельно
|
||||
v2.0 - убран буфер на отправку, убран манчестер, полностью переделан и оптимизирован интерфейс связи
|
||||
v2.0.1 - fix compiler warnings
|
||||
*/
|
||||
|
||||
#ifndef _Gyver433_h
|
||||
@@ -53,7 +54,7 @@
|
||||
#define G433_EDGE_S (G433_START + G433_WINDOW)
|
||||
|
||||
// жоский delay для avr
|
||||
#ifdef AVR
|
||||
#ifdef _delay_us
|
||||
#define G433_DELAY(x) _delay_us(x)
|
||||
#else
|
||||
#define G433_DELAY(x) delayMicroseconds(x)
|
||||
@@ -85,7 +86,7 @@ public:
|
||||
|
||||
// отправка, блокирующая. Кушает любой тип данных
|
||||
template <typename T>
|
||||
bool sendData(T &data) {
|
||||
void sendData(T &data) {
|
||||
uint8_t *ptr = (uint8_t*) &data;
|
||||
write(ptr, sizeof(T));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user