Настройка радиомодуля APC220 в Ubuntu и Mac OS

APC220 + USB-TTL

APC220 — это модуль цифровой беспроводной связи, поддерживающий расстояние до 1 км (при отсутствии помех) и  поддерживает довольно большие скорости передачи. Кроме того, эти модули умеют организовывать между собой сети с поддержкой бродкаста. Да и цена привлекательная. Все классно, только вот эти модули нужно сначала настроить.

Обычно, всё, что выдает гугл и яндекс по запросу «настройка APC220» это статьи, которые говорят «скачайте и запустите программу RF-Magic, вбейте нужные поля и нажмите Write». Только вот все эти статьи бесполезны для пользователей Mac и Linux — создатели этой утилиты даже и не думали, что кто-то, кроме юзеров винды, будет ее запускать.

К счастью,  APC220, согласно даташиту, поддерживает настройку в режиме online, которую мы и будем использовать.

Общая схема

Итак, сам модуль соединяется по UART,

UART для чайников
У модуля модуля есть специальный пин — SET. Если подать на него ноль, то APC220 перейдет в режим конфигурации, настройки UART сбросятся на дефолтные 9600 8-N-1.

Теперь можно получить текущую конфигурацию, отослав по UART команду «RD\r\n», в ответ на которую, модуль пришлет «PARA <частота передатчика> <скорость в эфире> <мощность передатчика> <скорость UART> <четность UART>\r\n»

По поводу каждой из опций:

  • частота передатчика задается в килогерцах, шестизначным числом — 418000 -455000
  • скорость в радиопередачи задается номером 1-4 что соответствует элементам в списке [2400,4800,9600,19200] бит/сек
  • мощность передатчика: 0-9, что соответствует диапазону 0мВт- 20мВт
  • скорость UART: номер 0-6 [1200, 2400, 4800, 9600, 19200, 38400, 57600] бит/сек
  • проверка четности: 0- нет проверки, 1- проверка четности, 2-проверка нечетности

После опционального чтения текущей конфигурации мы можем поднять уровень SET, что отключит режим конфигурации, либо установим новую конфигурацию, отправив команду «WR <частота передатчика> <скорость в эфире> <мощность передатчика> <скорость UART> <четность UART>\r\n», на что модуль ответит подтверждением с новыми настройками. После этого мы должны подать единицу на SET — новые настройки применятся и модуль заработает в режиме передатчика. Настройки сохраняются, так что, разумеется, каждый раз проделывать это не нужно 🙂

PC — Arduino — APC220

Самый простой способ- подключаем модуль к ардуине, заливаем конфигурирующий скетч, ресет… вуаля! Собсна, чего тянуть, вот скетч (подключаем пины vcc, gnd, rx, tx, set):

#include <SoftwareSerial.h>

const int pinRX = 12;
const int pinTX = 11;
const int pinSET= 13;

SoftwareSerial apc220(pinRX, pinTX);

void setupSoftAPC(void){
    pinMode(pinSET, OUTPUT);
    apc220.begin(9600);
}

void setSettings(void){
    digitalWrite(pinSET, LOW);
    delay(10);
    apc220.println("WR 434000 3 9 3 0");
    delay(10);

    while (apc220.available()) {
        Serial.write(apc220.read());
    }
    digitalWrite(pinSET, HIGH);
    delay(200);
}
void getSettings(void) {
    digitalWrite(pinSET, LOW);
    delay(10);
    apc220.println("RD");
    delay(10);

    while (apc220.available()) {
        Serial.write(apc220.read());
    }
    digitalWrite(pinSET, HIGH);
    delay(200);
}

void setup(){
    Serial.begin(9600);
    setupSoftAPC();
//    getSettings();
    setSettings();
}

void loop(){
    Serial.println("voila!");
}

PC — APC220

это лучше прочитать тем, кто собирается подключать передатчик к компу

Для тех, у кого нет свободной ардуины или есть желание сделать все еще хардкорднее- можно сделать это с компа, при помощи USB-UART конвертера, идущего в комплекте. Единственная сложность- придется руками замыкать пин SET с GND. В плане софта- полная свобода, можно даже сделать все прямо в питонской консоли, если установлен pyserial.

Нюанс

USB-UART конвертер dfrobotКонвертер из комплекта имеет ошибку- когда ваша консоль поднимает линию RST (Request To Send, опциональна для UART), он наоборот, опускает напряжение на ней в ноль. А линия эта подключена к пину EN, если подать ноль на который, как утверждает даташит, то APC220 перейдет в режим сна. Похоже, это ошибка конкретно этой модели/партии USB-UART конвертеров, идущих с dfrobot.com.

Поэтому, тут несколько вариантов:

  1. «апгрейд» конвертера путем перерезания дорожки, ведущей к линии RTS. Она все равно не нужна 🙂
    How to cut RTS
  2. подключать модуль не прямо в конвертер, я проводами, при этом пин EN не подключать к RST… при этом можно использовать и любой другой конвертер, т.к. этот удобен именно тем, что модуль втыкается прямо в него, как родной. Да он и есть родной!
  3. софтварно выставить RTS в ноль.

вот конфигурация на питоне:

import serial
s = serial.Serial('/dev/ttyUSB0', 9600, timeout=1.0)
s.setRTS(0)
raw_input("Please set SET=0 and hit enter")
s.write("WR 434000 3 9 3 0\r\n")
s.readall()
raw_input("Please, set SET=1 and hit enter")
s.close()

P.S.

Надеюсь, пригодилось. Спасибо, что читаете!

Запись опубликована в рубрике DIY с метками , , , . Добавьте в закладки постоянную ссылку.

4 комментария: Настройка радиомодуля APC220 в Ubuntu и Mac OS

  1. Bobthebuilder говорит:

    Sam prikupil takoi modul i cioto neponel. Zakazal s dx.com 30$ skazali out of stock podnapreg jih vislali, prishli no na pcb markirovka RF7020 v.4 (kak i u tebia) pagooglil tipo toze samoje toko moshnost 500mW !!! Rastojanije raboti vpecetlilo (posle Xbee). Tak i neponel APC220 eto ili net? Vopros otkudo sam bral esle ne secret.
    P.S. Izveniajus za latinicu, sam ja neruskij.

    • muzhig говорит:

      Спасибо за вопрос, Bobthebuilder! Так-же, как и вы, я заинтересовался и погуглил- похоже, все-таки, это нормальная маркировка, просто есть разные версии модуля. RF7020-27 действительно 500mW, но у нас не он. Посмотрел маркировку самой микросхемы: ADF7020 можность 20mW (13dBm). Я брал на dfrobot. Надеюсь, вы удовлетворены 🙂

  2. Bobthebuilder говорит:

    Spasibo za otvet, kstate u menia drugoi adapter USB>TTL adapter.
    P.S. Eti moduli pojevilis v ebay po 31$ s dostavkoi.

  3. kievfriend говорит:

    Заранее спасибо!
    Пытаюсь найти решение проблемы:
    Нужна не стандартная «скорость в радиопередачи задается номером 1-4 что соответствует элементам в списке [2400,4800,9600,19200] бит/сек»
    а нужна 1800 — нет ли инфы как ее туда загнать ?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *