ESP32 based remote display for the Hardrock-50 power amplifier
Go to file
Michael Clemens 0e249ee8ce add gitignore 2021-11-28 00:01:19 +00:00
client moved client and server into a single project 2021-11-27 23:58:18 +00:00
server moved client and server into a single project 2021-11-27 23:58:18 +00:00
.gitignore add gitignore 2021-11-28 00:01:19 +00:00
README.md moved client and server into a single project 2021-11-27 23:58:18 +00:00
diagram.jpg replaced diagram 2021-11-12 10:26:17 +01:00
hr50-remote-display.jpg Dateien hochladen nach „“ 2021-11-12 09:21:42 +01:00

README.md

Hardrock-50 Remote Display

The Hardrock-50 is a 50W power amplifier for amateur radio QRP transceivers. It has a display showing valuable information like the selected band, the SWR, power, temperature etc. Since I am using the HR50 in a remote station, I cannot directly access those information via the display.

However, the HR50 offers serial communication via a USB port. This project tries to solve this problem with the help of a separate, wifi enabled hardware display. It consists of the following two components:

  • Heltec ESP32 board with display
  • a python flask application, which represents the communication via the serial interface in the form of an API

This diagram shows which components are required and how the communicate:

Diagram

This is how the display looks like in action:

Photo of the Heltec board

Client

Preconditions

Hardware

  • Heltec ESP32 Wifi Dev Kit Board with OLED

Software

  • Arduino IDE

Libraries

Configuration

Edit the following lines inside the Arduino sketch:

const char* ssid = "<ENTER_HERE_YOUR_WIFI_SSID>";
const char* password = "<PASSWORD>";
String api_base_url = "http://<ENTER_HERE_THE_IP_OF_YOUR API_SERVER>:5000";

Error handling

  • If wifi is unavailable or misconfigured, the device will show "No Wifi!" on the screen
  • HTTP Errors will also displayed on the OLED
  • When you key up your TRX and therefore the HR50, no serial communication is possible. The latest gathered information will still be displayed on the screen but there will be a "(!)" in the third row as an indicator for this situation.

Server

Preconditions

You need a computer connected to the Hardrock-50 via USB, e.g. a Raspberry Pi. This system needs to be able to run Python and has to be connected to your network.

Configuration

Open the file hr50_rd_server.py and adapt the following lines to your environment:

serial_port = '/dev/ttyUSB0'
baud = 19200

Execution

Executing this script will spawn a web server running on port 5000. This is not meant for production use and/or public exposure. Anyone able to access this server via the network can alter any settings on your HR50.

Run it as follows:

# cd server
# ./bootstrap.sh

API Endpoints

There are two API endpoints available:

/exec_serial

This method allows you to send commands to the HR50. The commands can be taken from the HR50 operator's manual and do not require the trailing ";"

/exec_shell

This method allows you to execute shell commands on the server

/get_status

This method returns all avalable information in JSON