Metadata-Version: 2.1
Name: hamptt
Version: 0.3.1
Summary: Implementation of Push-To-Talk board for ham radio transmitters like Baofeng UV-5R
Home-page: https://github.com/mrkeuz/hamptt/
License: MIT
Author: mrkeuz
Author-email: mr.keuz@ya.ru
Requires-Python: >=3.8,<4.0
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Communications :: Ham Radio
Classifier: Topic :: Utilities
Provides-Extra: bt
Requires-Dist: PyBluez (>=0.23); extra == "bt"
Requires-Dist: func_timeout (>=4.3.5)
Project-URL: Documentation, https://github.com/mrkeuz/hamptt/
Description-Content-Type: text/markdown

Ham PTT
=======

Bluetooth PTT switch for ham radio transmitters like Baofeng UV-5R.  
Board helps to control transmitter from PC.

Problematic
-----------

Testing of UART interface showed unstable connection. During transmit via UART an usb-ttl 
chip periodically crashes and stops working. Cause is some radio strong interference 
on USB cable. So Bluetooth serial protocol stack chosen instead.

Schematic
---------

Host -> (Bluetooth) -> Esp-32 Arduino -> Relay -> Transmitter PTT button

* Hardware

    - Host PC with Bluetooth (tested Ubuntu 20.04)
    - Esp32 DevKit v1 (or similar esp32)
    - Relay shield
    - Baofeng UV-5R

Examples
--------

- Find BT devices `hcitool scan`
- Python

```python3
from hamptt import open_ptt

with open_ptt(bt_addr="A0:B1:C2:D3:E4:F5") as ptt:
    ptt.begin()
    # I.e. play message to transmitter or something else
    ptt.end()
```

Install
-------

* Host PC machine

    - Python 3.8
    - Bluetooth's libs (required for pybluez)

      ```shell
      sudo apt-get install bluez libbluetooth-dev
      ```

    - Pip
      ```shell
      python3 -m pip install "hamptt[bt]"
      ```


* Esp32

    - Upload sketch to your esp-32 via PlatformIO  
      NOTE! Check your board config in `platformio.ini` (see: https://platformio.org/)
      ```
      pio run -t upload
      ``` 

    - Connect pins Esp-32 to relay

        - VVC -> Relay +
        - GND -> Relay -
        - GPIO D25 -> Relay IN

    - Connect relay and audio, for Baofeng UV-5R it looks like:

      ![Baofeng UV-5R Pins](https://www.dxzone.com/dx33739/baofeng-mic-pin-out-and-programming-cable-schematics.jpg "Baofeng UV-5R Pins")  
      NOTE: You can rebuild your hands-free cable or buy another one

Development
===========

* Build and install
  ```shell
  pip3 uninstall hamptt
  rm -rf dist && poetry build && pip3 install ./dist/*.whl
  ```
  
* Publish
  - Prepare  
     ```shell
    poetry config repositories.testpypi https://test.pypi.org/legacy/
    poetry config pypi-token.testpypi <TOKEN>
    
    poetry config repositories.pypi https://upload.pypi.org/legacy/
    poetry config pypi-token.pypi <TOKEN>
    ```  
  
  - Publish
    ```shell
    poetry publish --build -r testpypi
    
    poetry publish --build -r pypi
    ````
