APC220 Radio; Arduino

From cod3v

Introduction

APC220 is a transmitter--receiver. Use TTL/USB converter in computer.

Note the pins:

  • No pins in J2 and J3: Programming is possible
  • Pins on J2-1 and J2-2: transmit using radio
  • Pins on J3-1 and J3-2: save data to SD card

Radio transmits all data written using Serialprint() commands to the ether.

Theory

Set the freqs

Set the freqs when plugged on Arduino, use pins GND, 8, 9, 10, 11, 12 and 13, and use program called apc220cfg.ino from Andoya Space Center. The one on arduino is connected already, but the other connected on computer need to be programmed using an Arduino.

Frequencies

433.050 MHz - 434.800 MHZ.


RF Magic

Rf Magic http://www.dfrobot.com/image/data/TEL0005/rfmagic.rar can be used but it unreliable. You should use Arduino to program radio.

USB-TTL converter

Need VCP (Virtual COM Port) drivers; use those from SiLabs.com CP210x USB-UART VCP drivers. Run CP210xVCPInstaller_x64 at https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers

APC220 Pinouts

  • VIN: Module power supply
  • GND: Ground
  • RX: Data receive through serial protocol
  • TX: Data transmit through serial protocol
  • SET: Mode Setting
  • AUX: For other commands
  • EN: Enable module

Use Arduino's pins GND, 8, 9, 10, 11, 12 and 13.


It only need four pins connect with Arduino board.

Note: Disconnect the RX and TX pin with Arduino before download program, otherwise the program download fails.

Arduino

apc220cfg https://learn.andoyaspace.no/wp-content/uploads/2016/11/apc220Cfg.zip can be used to set the transmitter frequency and other data

commands:
  r :  Read apc220 radio config
  e :  go into echo mode: receive char, add 1 and return
  n :  no more echo - back to normal
  w :  Write apc radio config ...
     'W'  FFFFFF R P B C - number of letters indicates precise number of digits
      FFFFFF: frequency: 434000 (434 MHz) range 418000-455000 
      R:      Rf data rate       - 1/2/3/4 equals 2400/4800/9600/19200bps
      P:      Radio output power - 0 .. 9 9 equals 13dBm(20mW).
      B:      UART baudrate      - 0/1/2/3/4/5/6 equals 1200/2400/4800/9600/19200/38400/57600bps
      C:      Byte Chek Parity   - 0/1/2 equals NoCheck(8N1)/EvenParity(8E1)/OddParity(8O1)

Write example: w 434000 3 9 3 0 is...
    434,000 MHz 9600 baud in air, 20mW, 9600baud on UART, No Parity(8N1)
After 30 seconds with no keyboard input we will emit a char every two second

PARAgoing into ping mode - emit a char every two second on apc220  ! 66 68 70


Library: https://github.com/PaulStoffregen/SoftwareSerial


J2 & J3

/*
  Modified on March 09, 2021
  Modified by MohammedDamirchi from https://github.com/PaulStoffregen/SoftwareSerial
  Home
  https://electropeak.com/learn/interfacing-apc220-rf-transceiver-data-communication-module-with-arduino/
*/


#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

Terminal program

Exercises