# 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](diagram.jpg "Diagram") This is how the display looks like in action: ![Photo of the Heltec board](hr50-remote-display.jpg "Photo of the Heltec board") # Client ## Preconditions ### Hardware * Heltec ESP32 Wifi Dev Kit Board with OLED ### Software * Arduino IDE ### Libraries * Heltec Libraries: [https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series] * ArduinoJson * HTTPClient * WiFi * EasyButton ## Configuration Edit the following lines inside the Arduino sketch: ``` const char* ssid = ""; const char* password = ""; String api_base_url = "http://: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