Электронный компонент:Seeeduino LoRaWAN
Seeeduino LoRaWAN[1]
Seeeduino LoRaWAN – это микроконтроллерная Arduino-плата на базе процессора ATSAMD21G18 и модуля RHF76-052AM. Она коммуницирует через протокол LoRaWAN, который часто используется в области интернета вещей. Seeeduino LoRaWAN поддерживает два диапазона частот, а также совместима с LoRaWAN-устройствами классов A и C.
Кроме того, плата оснащена четырьмя Grove-коннекторами, с помощью которых ее можно подключать к различным Grove-модулям. Благодаря этому, как пишут разработчики, пользователь может сосредоточиться на самом проекте, не беспокоясь о совместимости между разными модулями. Seeeduino LoRaWAN также имеет встроенный чип для управления литиевой батареей, благодаря которому ее можно заряжать через USB-интерфейс. Если переключить плату в режим низкого энергопотребления, одна полностью заряженная литиевая батарея, как пишут разработчики, cможет обеспечить Seeeduino LoRaWAN питанием в течение нескольких месяцев.
Версии Seeeduino LoRaWAN:
- Seeeduino LoRaWAN – выпущена 20 декабря 2016 года (купить можно по этой ссылке)
- Seeeduino LoRaWAN с GPS – выпущена 20 декабря 2016 года (купить можно по этой ссылке)
Внимание! Перед первым использованием Seeeduino LoRaWAN рекомендуем обновить прошивку до последней версии.
Примечание: Версия Seeeduino LoRaWAN с GPS оснащена GPS-модулем.
Функционал
- Минимальное энергопотребление (от 3.7-вольтовой литий-полимерной батареи) – 2 мА
- Минимальное энергопотребление (от 3.7-вольтовой литий-полимерной батареи, без светодиода PWR) – 80 мкА
Процессор ATSAMD21G18 (Arduino)
- Тактовая частота – 48 МГц (при питании / вольтовой логике в 3.3 вольта)
- Совместимость с Arduino (используется загрузчик Arduino Zero)
- Чип управления литиевой батареей и светодиодный индикатор
- 20 GPIO-контактов
- 4 встроенных Grove-коннектора
- 18 контактов с поддержкой ШИМ
- 6 входных аналоговых контактов
- 1 выходной аналоговый контакт (A0)
- 3.3-вольтовый регулятор напряжения, выдающий 200 мА
- Кнопка сброса
LoRaWAN-модуль RHF76-052
- Энергопотребление в режиме WOR (от «wake on radio», что можно перевести как «пробуждение при наличии радиосигнала») – 1.45 мкА (это характеристики модуля, но не платы)
- Бюджет канала связи – 160 децибел
- Чувствительность приемника – около -140 дБм
- Мощность передатчика – до 19 дБм
- Два диапазона связи – 434/470 МГц (19 дБм) и 868/915 МГц (14 дБм)
- Протокол связи – LoRaWAN, классы A и C
- Высокая дальность связи
- Низкое энергопотребление
- Возможность обновлять прошивку
- Маленький размер – 23 мм х 28 мм
- SMT-выводы (от «surface-mount technology», что значит «технология монтирования на поверхность») – 33 шт.
Внимание! Плата Seeeduino LoRaWAN работает на 3.3 вольтах. Следовательно, максимальное напряжение, которое могут выдержать ее I/O контакты – это 3.3 вольта. Если подать на них больше 3.3 вольт, это может повредить плату.
Характеристики
- Микроконтроллер – ATSAMD21G18, 32 бита, ARM Cortex M0+
- Рабочее напряжение – 3.3 вольта
- Цифровые I/O контакты – 20 шт.
- Контакты ШИМ – все, кроме 2 и 7
- Порты UART – 2 шт. (штатный и для программирования)
- Входные аналоговые контакты – 6 шт. (12-битные АЦП-каналы)
- Входные аналоговые контакты – 1 шт. (10-битный ЦАП-канал)
- Внешние прерывания – все контакты, кроме 4
- Сила (постоянного) тока на одном I/O контакте – 7 мА
- Flash-память – 256 Кб
- SRAM – 32 Кб
- EEPROM – нет
- Тактовая частота – 48 МГц
- Длина – 68 мм
- Ширина – 53 мм
- Вес – 19.6 г (без GPS) или 19.9 г (с GPS)
Области применения
- Интернет вещей
- «Умный» дом
- Безопасность
- «Умные» энергосистемы
- «Умное» сельское хозяйство
- «Умная» парковка
Для расширения проекта используйте Grove-модули – Seeeduino LoRaWAN оснащена 4 коннекторами для подключения таких модулей. Если вы в первый раз слышите о системе Grove, то более подробно о ней можно почитать тут. Если вкратце, то Grove – это сотни стандартизированных устройств вроде коммуникационных плат, датчиков, кнопок, регуляторов, светодиодов, зуммеров, дисплеев и пр.
Описание компонентов
- 1 – разъем MicroUSB (для программирования и питания платы)
- 2 – Grove-коннекторы
- 3 – входной порт JST2.0 (для 3.7-вольтовой литий-полимерной батареи) и статусный светодиод
- 4 – кнопка DFU (от «device firmware update», что значит «обновление прошивки на устройстве») для перехода в режим апдейта прошивки
- 5 – кнопка сброса
- 6 – цифровые и аналоговые контакты (как на Arduino)
- 7 – ICSP-контакты
- 8 – светодиод, сообщающий о переходе в режим прошивки
- 9 – проводная антенна
- A – антенна с разъемом U.FL
- B – радиочастотный модуль RHF76-052AM
- C – процессор ARM Cortex M0 (ATSAMD21G18)
- D – светодиоды
- RX/TX – мигают при UART-коммуникации (т.е. при приеме/передаче данных по USB-порту)
- L – светодиод, подключенный к 13-ому контакту
- PWR – светодиодный индикатор питания
Подсказка: Чтобы работать с Grove-коннекторами, нужно пустить питание через контакт VCC. Это делается с помощью строчки digitalWrite(38, HIGH). В противном случае Grove-коннекторы просто не получат питание.
Распиновка
Номер контакта | GPIO-номер контакта | Внешние прерывания | ШИМ | Ввод аналоговых данных | Вывод аналоговых данных | Функция |
---|---|---|---|---|---|---|
0 | #0 | Да | Да | RX(Serial) | ||
1 | #1 | Да | Да | TX(Serial) | ||
2 | #2 | Да | ||||
3 | #3 | Да | Да | |||
4 | #4 | Да | ||||
5 | #5 | Да | Да | |||
6 | #6 | Да | Да | |||
7 | #7 | Да | ||||
8 | #8 | Да | Да | |||
9 | #9 | Да | Да | |||
10 | #10 | Да | Да | |||
11 | #11 | Да | Да | SPI_MOSI | ||
12 | #12 | Да | Да | SPI_MISO | ||
13 | #13 | Да | Да | SPI_SCK | ||
SDA | #20 | Да | Да | |||
SCL | #21 | Да | Да | |||
A0 | #A0 | Да | Да | Да | Да | |
A1 | #A1 | Да | Да | Да | ||
A2 | #A2 | Да | Да | Да | ||
A3 | #A3 | Да | Да | Да | ||
A4 | #A4 | Да | Да | Да | Напряжение батареи | |
A5 | #A5 | Да | Да | Да | Статус зарядки |
Примечание: Все контакты могут действовать как цифровые I/O контакты.
С чего начать
Эта глава написана с использованием Windows 10 и IDE Arduino версии 1.6.0.
Во-первых, вам нужно установить последнюю версию IDE Arduino, а затем установить в IDE Arduino аддон для плат Seeeduino.
Установка драйвера (на Windows)
Если это первый раз, когда вы подключаете Seeeduino LoRaWAN к своему ПК, то для нее нужно установить драйвер. Загрузить его можно по этой ссылке.
Чтобы убедиться в том, что драйвер был установлен успешно, откройте «Диспетчер устройств». Найдите пункт «Порты (COM и LPT)», а в нем – запись «Seeeduino LoRaWAN». Если она существует, то драйвер установлен успешно.
Первый скетч – «Blink»
Теперь давайте загрузим на Seeeduino LoRaWAN первый демо-скетч, который называется «Blink» (т.е. «Мигание»).
Откройте IDE Arduino и кликните на Файл > Примеры > 01.Basics > Blink (File > Examples > 01.Basics > Blink). В результате в IDE Arduino откроется демо-скетч «Blink». Или можно просто скопировать в рабочую область IDE Arduino код, показанный ниже:
// код в блоке setup() запускается только один раз –
// когда вы нажимаете на кнопку сброса
// или подключаете к плате питание:
void setup() {
// выставляем 13-ый цифровой контакт на вывод данных (OUTPUT):
pinMode(13, OUTPUT);
}
// код в блоке loop() работает бесконечно:
void loop() {
digitalWrite(13, HIGH); // включаем светодиод, давая сигнал HIGH
delay(1000); // ждем секунду
digitalWrite(13, LOW); // выключаем светодиод, давая сигнал LOW
delay(1000); // ждем секунду
}
После этого проделайте следующее:
- Нажмите в IDE Arduino на Инструменты > Плата > Seeeduino LoRaWAN (Tools > Board > Seeeduino LoRaWAN)
- Нажмите в IDE Arduino на Инструменты > Порт (Tools > Port) и выберите номер порта, к которому подключена плата (это не COM1)
Теперь кликните по кнопке «Загрузка» («Upload»), которая находится в левом верхнем углу IDE Arduino. Спустя несколько секунд код должен загрузиться на Seeeduino LoRaWAN:
Если загрузка прошла успешно, на Seeeduino должен замигать светодиод, а в нижней части IDE Arduino должен появиться примерно такой текст:
Батарея
Плату можно питать не только от USB, но и от 3.7-вольтовой литий-полимерной батареи. В комплекте с Seeeduino LoRaWAN идет кабель JST2.0 – используйте его, если у вашей батареи не будет коннектора JST2.0.
Внимание! Обязательно убедитесь, что отрицательный и положительный полюса батареи подключены правильно. В противном случае можно повредить плату.
Для Seeeduino LoRaWAN можно написать код, позволяющий узнавать статус зарядки и измерять напряжение батареи. Для этого контакт статуса зарядки и положительный контакт батареи должны быть подключены к контактам A4 и A5 на Seeeduino LoRaWAN. Пример такого кода смотрите ниже:
// определение статуса зарядки и напряжения батареи,
// подключенной к плате Seeeduino LoRaWAN
const int pin_battery_status = A5;
const int pin_battery_voltage = A4;
void setup() {
SerialUSB.begin(115200);
pinMode(pin_battery_status, INPUT);
}
void loop() {
int a = analogRead(pin_battery_voltage);
float v = a/1023.0*3.3*11.0; // в цепи используется
// делитель напряжения
// с резисторами на 1 МОм и 100 кОм
SerialUSB.print(v, 2);
SerialUSB.print('\t');
SerialUSB.println(digitalRead(pin_battery_status));
delay(1000);
}
Примечание: Если этот скетч вернет «0», то это значит, что зарядка еще не выполнена, а если «1», то это значит, что зарядка завершена или батарея не подключена.
Отправка и получение данных
Для LoRaWAN-модулей существует хорошая библиотека, которая позволяет делать простые проекты, не зная совершенно ничего о протоколе LoRa (он сложен для понимания). Эта библиотека называется «LoRaWAN». Конечно, если вы хотите сделать более продвинутый проект, то такие знания обязательно понадобятся. Библиотеку устанавливать не нужно, она идет в комплекте с аддоном для платы Seeeduino LoRaWAN, который вы установили выше, в разделе «С чего начать».
Для этого примера понадобятся две платы Seeeduino LoRaWAN. Одна будет использоваться для отправки, а другая – для приема данных.
Отправка
Откройте IDE Arduino и кликните на Файл > Примеры > LoRaWAN > p2p_tx (File > Examples > LoRaWAN > p2p_tx), в результате чего откроется скетч, превращающий плату в устройство для отправки данных. Или можно просто скопировать в рабочую область IDE Arduino код, показанный ниже (это тот же самый код). Этот скетч каждые 3000 мс отправляет принимающей плате строчку «Hello, World!»
// Демо-скетч для отправки данных с помощью Seeeduino LoRaWAN
#include <LoRaWan.h>
void setup(void)
{
SerialUSB.begin(115200);
lora.init();
lora.initP2PMode(433, SF12, BW125, 8, 8, 20);
}
void loop(void)
{
lora.transferPacketP2PMode("Hello World!"); // "Привет, мир!"
SerialUSB.println("Send string."); // "Строка отправлена."
delay(3000);
}
Прием
Откройте IDE Arduino и кликните на Файл > Примеры > LoRaWAN > p2p_rx (File > Examples > LoRaWAN > p2p_rx), в результате чего откроется скетч, превращающий плату в устройство для приема данных. Или можно просто скопировать в рабочую область IDE Arduino код, показанный ниже:
// Демо-скетч для приема данных с помощью Seeeduino LoRaWAN
#include <LoRaWan.h>
unsigned char buffer[128] = {0, };
void setup(void)
{
SerialUSB.begin(115200);
lora.init();
lora.initP2PMode(433, SF12, BW125, 8, 8, 20);
}
void loop(void)
{
short length = 0;
short rssi = 0;
memset(buffer, 0, 128);
length = lora.receivePacketP2PMode(buffer, 128, &rssi, 1);
if(length)
{
SerialUSB.print("Length is: "); // "Объем данных: "
SerialUSB.println(length);
SerialUSB.print("RSSI is: "); // "RSSI: "
SerialUSB.println(rssi);
SerialUSB.print("Data is: "); // "Присланная строчка: "
for(unsigned char i = 0; i < length; i ++)
{
SerialUSB.print("0x");
SerialUSB.print(buffer[i], HEX);
SerialUSB.print(" ");
}
SerialUSB.println();
}
}
Загрузив оба скетча, откройте монитор порта IDE Arduino на принимающей плате и проверьте, приходят ли какие-нибудь данные. Они должны выглядеть примерно так:
Примечание: По этой ссылке можно почитать о наборе для сборки LoRaWAN-шлюза. В скором будущем разработчики обещают добавить в него описание режимов OTAA (от «over-the-air activation», что значит «беспроводная активация») и ABP (от «activation by personalization», что значит «активация путем записи в устройство персональных настроек»).
Другие демо-скетчи
В библиотеке «LoRaWAN» есть и другие скетчи-примеры для работы с Seeeduino LoRaWAN. Их можно посмотреть, кликнув в IDE Arduino по Файл > Примеры > LoRaWAN (File > Examples > LoRaWAN). Там будет четыре скетча-примера (последние два были описаны выше):
- ABP
- OTAA
- p2p_rx
- p2p_tx
Вы также можете попробовать на Seeeduino LoRaWAN вот эти демо-скетчи:
Передача данных по GPS
Этот скетч работает только на Seeeduino LoRaWAN с функцией GPS:
void setup()
{
Serial.begin(9600);
SerialUSB.begin(115200);
}
void loop()
{
while(Serial.available())
{
SerialUSB.write(Serial.read());
}
while(SerialUSB.available())
{
Serial.write(SerialUSB.read());
}
}
Загрузив код, откройте монитор порта IDE Arduino. Там должны появиться данные, полученные по GPS:
Низкое энергопотребление
Согласно нашим тестам, самое низкое энергопотребление Seeeduino LoRaWAN – это 80 мкА. Чтобы добиться такого же результата, проделайте следующее:
- Снимите светодиод PWR (если его не снять, энергопотребление будет выше 2 мА)
- Снимите светодиод CHG
- Загрузите на вашу плату код, показанный ниже:
#include <LoRaWan.h>
#include <EnergySaving.h>
EnergySaving nrgSave;
void blink()
{
for(unsigned char i = 0; i < 5; i ++)
{
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
}
void setup()
{
for(unsigned char i = 0; i < 26; i ++) // для экономии энергии
// важно выставить все
// контакты на HIGH
{
pinMode(i, OUTPUT);
digitalWrite(i, HIGH);
}
lora.init();
blink();
lora.setDeviceLowPower();
blink();
// кнопка на контакте D7 используется для пробуждения платы:
nrgSave.begin(WAKE_EXT_INTERRUPT, 7, dummy);
nrgSave.standby();
}
void loop()
{
blink();
nrgSave.standby();
}
void dummy(void)
{
// ничего не делаем
}
// конец файла
Обновление прошивки
На данный момент самая последняя версия прошивки – это 2.0.10, и если вы хотите обновиться до этой версии, следуйте инструкциям ниже:
1. Проверьте версию прошивки. Для этого загрузите на плату вот такой код:
void setup()
{
Serial1.begin(9600);
SerialUSB.begin(115200);
}
void loop()
{
while(Serial1.available())
{
SerialUSB.write(Serial1.read());
}
while(SerialUSB.available())
{
Serial1.write(SerialUSB.read());
}
}
Затем откройте монитор порта IDE Arduino и введите:
AT+VER
После этого монитор порта должен сообщить версию прошивки:
2. Скопируйте и загрузите на Seeeduino LoRaWAN код ниже:
// Обновление прошивки модуля HF76-052AM
#include <Arduino.h>
void setup()
{
SerialDBG.begin(115200);
SerialUSB.begin(115200);
}
void loop()
{
while(SerialDBG.available())
{
SerialUSB.write(SerialDBG.read());
}
while(SerialUSB.available())
{
SerialDBG.write(SerialUSB.read());
}
}
3. Отключите плату от USB-порта, а затем снова подключите и нажмите на кнопку DFU. В результате должен мигнуть светодиод, сообщающий о переходе в режим прошивки. Если мигнул, переходим к следующему шагу
4. Кликните здесь, чтобы скачать последнюю версию прошивки (это файл формата «*.bin»)
5. Откройте PuTTy и подключитесь к плате (последнюю версию PuTTy можно скачать отсюда):
6. Когда вы успешно подключите плату к PuTTy, в рабочем окне программы начнет постоянно печататься символ «C». Нажмите на Files Transfer > Ymodem > Send, а затем выберите файл «*.bin», который вы загрузили в шаге 4. Это должно запустить обновление
Полезные ссылки
- Схема в формате Eagle
- Схема в формате SketchUp (3D)
- Европейский сертификат соответствия RHF 76-052
- Прошивка для RHF76-052 (версия 2.0.10)
- Даташит RHF76-052AM
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Электронный компонент
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Seeeduino LoRaWAN
- Платформа Arduino
- Arduino платформа
- Arduino