Arduino Uno
Dragino Lora Module (SX1278)
https://www.arduinolibraries.info/libraries/tone-library
https://github.com/jgromes/LoRaLib
Quick and dirty. Better with some components, e.g. capacitors.
Dragino Lora Module DIO2 (DCLK) is connected to pin 6.
#include <Tone.h>
#include <LoRaLib.h>
#define DTMF_PIN1 3
#define DTMF_PIN2 4
SX1278 fsk = new LoRa;
Tone freq1;
Tone freq2;
const int16_t DTMF_freq1[] = {1336, 1209, 1336, 1477, 1209, 1336, 1477, 1209, 1336, 1477};
const int16_t DTMF_freq2[] = {941, 697, 697, 697, 770, 770, 770, 852, 852, 852};
void setup() {
Serial.begin(9600);
freq1.begin(DTMF_PIN1);
freq2.begin(DTMF_PIN2);
Serial.print(F("Initializing ... "));
int16_t state = fsk.beginFSK();
if (state == ERR_NONE) {
Serial.println(F("success!"));
} else {
Serial.print(F("failed, code "));
Serial.println(state);
while (true);
}
state = fsk.setFrequency(437.0);
state = fsk.setBitRate(0.6);
state = fsk.setFrequencyDeviation(3.0);
state = fsk.setRxBandwidth(50.0);
state = fsk.setOutputPower(10.0);
state = fsk.setCurrentLimit(100);
state = fsk.setDataShaping(0.0);
if (state != ERR_NONE) {
Serial.print(F("Unable to set configuration, code "));
Serial.println(state);
while (true);
}
fsk.transmitDirect();
}
void loop() {
int8_t i;
uint8_t dtmfs[] = {4, 5, 6, 3, 2, 1 ,0};
for (i = 0; i < sizeof(dtmfs); i++)
{
Serial.print(dtmfs[i]);
Serial.print(' ');
playDTMF(dtmfs[i], 500);
delay(1000);
}
Serial.println();
delay(3000);
}
void playDTMF(uint8_t number, int32_t duration)
{
freq1.play(DTMF_freq1[number], duration);
freq2.play(DTMF_freq2[number], duration);
}
Kommentit
Tämän blogin kommentit tarkistetaan ennen julkaisua.