Skip to content

Commit 40c5ac9

Browse files
V1.1.0 release
1 parent 35972d9 commit 40c5ac9

File tree

3 files changed

+143
-2
lines changed

3 files changed

+143
-2
lines changed
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
/* Heltec Automation send communication test example
2+
*
3+
* Function:
4+
* 1. Send data from a CubeCell device over hardware
5+
* 2. LoRa sending set frequency via serial
6+
*
7+
* this example must work with Heltec ESP32 LoRaWAN library:
8+
* https://github.com/HelTecAutomation/ESP32_LoRaWAN
9+
* */
10+
11+
#include <ESP32_LoRaWAN.h>
12+
#include "Arduino.h"
13+
14+
uint32_t license[4] = {0x947025A9, 0x7E6C7FE4, 0x943C2CDA, 0xE04CD68B};
15+
16+
#define RF_FREQUENCY 868000000 // Hz
17+
18+
#define TX_OUTPUT_POWER 14 // dBm
19+
20+
#define LORA_BANDWIDTH 0 // [0: 125 kHz,
21+
// 1: 250 kHz,
22+
// 2: 500 kHz,
23+
// 3: Reserved]
24+
#define LORA_SPREADING_FACTOR 7 // [SF7..SF12]
25+
#define LORA_CODINGRATE 1 // [1: 4/5,
26+
// 2: 4/6,
27+
// 3: 4/7,
28+
// 4: 4/8]
29+
#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx
30+
#define LORA_SYMBOL_TIMEOUT 0 // Symbols
31+
#define LORA_FIX_LENGTH_PAYLOAD_ON false
32+
#define LORA_IQ_INVERSION_ON false
33+
34+
35+
#define RX_TIMEOUT_VALUE 1000
36+
#define BUFFER_SIZE 30 // Define the payload size here
37+
38+
char txpacket[BUFFER_SIZE];
39+
char rxpacket[BUFFER_SIZE];
40+
41+
static RadioEvents_t RadioEvents;
42+
43+
double txNumber;
44+
45+
int16_t rssi,rxSize;
46+
void DoubleToString( char *str, double double_num,unsigned int len);
47+
48+
void setup() {
49+
Serial.begin(115200);
50+
while (!Serial);
51+
52+
SPI.begin(SCK,MISO,MOSI,SS);
53+
Mcu.init(SS,RST_LoRa,DIO0,DIO1,license);
54+
txNumber=0;
55+
rssi=0;
56+
57+
Radio.Init( &RadioEvents );
58+
Radio.SetChannel( RF_FREQUENCY );
59+
Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
60+
LORA_SPREADING_FACTOR, LORA_CODINGRATE,
61+
LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
62+
true, 0, 0, LORA_IQ_INVERSION_ON, 3000 );
63+
}
64+
65+
66+
uint32_t starttime = 0;
67+
uint8_t data[128];
68+
uint8_t dataIndex = 0;
69+
70+
uint32_t freq = 868000000;
71+
void loop()
72+
{
73+
starttime = millis();
74+
while( (millis() - starttime ) < 6000 )
75+
{
76+
if(Serial.available())
77+
{
78+
dataIndex = 0;
79+
while(Serial.available())
80+
{
81+
data[dataIndex++]=Serial.read();
82+
if(dataIndex == 128)
83+
{
84+
break;
85+
}
86+
}
87+
88+
if(dataIndex == 5 && data[3] == '.')
89+
{
90+
if( data[0] <= '9' && data[0] >= '0' && data[1] <= '9' && data[1] >= '0' && data[2] <= '9' && data[2] >= '0' && data[4] <= '9' && data[4] >= '0' )
91+
{
92+
uint32_t freq = (data[0]-'0')*100*1000000 + (data[1]-'0')*10*1000000+(data[2]-'0')*1000000+(data[4]-'0')*100000;
93+
Serial.print("Freq set to ");
94+
// Serial.println(freq);
95+
Serial.write(data,dataIndex);
96+
Serial.println("MHz");
97+
Radio.Sleep();
98+
Radio.SetChannel( freq );
99+
Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
100+
LORA_SPREADING_FACTOR, LORA_CODINGRATE,
101+
LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
102+
true, 0, 0, LORA_IQ_INVERSION_ON, 3000 );
103+
}
104+
else
105+
{
106+
Serial.println("Input Error. Input example : 868.1");
107+
}
108+
}
109+
else
110+
{
111+
Serial.println("Input Error. Input example : 868.1");
112+
}
113+
}
114+
}
115+
116+
txNumber += 0.01;
117+
sprintf(txpacket,"%s","Hello world number"); //start a package
118+
// sprintf(txpacket+strlen(txpacket),"%d",txNumber); //add to the end of package
119+
120+
// DoubleToString(txpacket,txNumber,3); //add to the end of package
121+
122+
// Serial.printf("\r\nsending packet \"%s\" , length %d\r\n",txpacket, strlen(txpacket));
123+
124+
// Serial.println( Radio.TimeOnAir(MODEM_LORA, strlen(txpacket)) );
125+
Radio.Send( (uint8_t *)txpacket, strlen(txpacket) ); //send the package out
126+
}
127+
128+
/**
129+
* @brief Double To String
130+
* @param str: Array or pointer for storing strings
131+
* @param double_num: Number to be converted
132+
* @param len: Fractional length to keep
133+
* @retval None
134+
*/
135+
void DoubleToString( char *str, double double_num,unsigned int len) {
136+
double fractpart, intpart;
137+
fractpart = modf(double_num, &intpart);
138+
fractpart = fractpart * (pow(10,len));
139+
sprintf(str + strlen(str),"%d", (int)(intpart)); //Integer part
140+
sprintf(str + strlen(str), ".%d", (int)(fractpart)); //Decimal part
141+
}

library.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"name": "Heltec Automation(TM)",
1111
"email": "support@heltec.cn"
1212
},
13-
"version": "1.0.9",
13+
"version": "1.1.0",
1414
"frameworks": "arduino",
1515
"platforms": "espressif32"
1616
}

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Heltec ESP32 Dev-Boards
2-
version=1.0.9
2+
version=1.1.0
33
author= Heltec Automation
44
maintainer=HelTec <support@heltec.cn>
55
sentence=Library for Heltec ESP32 (or ESP32+LoRa) based boards

0 commit comments

Comments
 (0)