You may want to consider the RFM95W radio module. It is a LoRa, long range transceiver using spread spectrum modulation. You can easily get the range you are looking for. Works best at low data rates. I use it with PIC 12F1822 micros and can offer code examples if you're interested.
Also, if you search this site you will find some very complete code posted by member prstein for use with the RFM22. My code borrows quite a bit from his, for which I am grateful.
Bookmarks