Do tego zastosowania polecam kartę SIM w sieci Play, ze względu na to że nadal działa tam roaming kilku sieci, a więc zasięg jest naprawdę spory a korzystając z taryfy odNOWA mamy darmowe połączenia w sieci bez ograniczeń, jedynie musimy wykonać raz na miesiąc jakieś połączenie nawet za 1 grosz, aby nie pobrało nam 2 zł "kary". Ewentualnie możemy ponosić koszt 2 zł na miesiąc a doładowywać kartę "w podsłuchu" zdalnie na odległość np. w aplikacji Play24. A więc maksymalny koszt podsłuchu to 2 zł na miesiąc a minimalnie 1 grosz 😂
Co potrzebujemy?
- moduł ATMEGA 2560 (klon)
https://nowyelektronik.pl/index.php?id_product=89227&controller=product
A ponadto:
A ponadto:
- moduł GSM SIM800L (najtańszy tego typu modem na rynku do 30 zł)
- mikrofon pojemnościowy (jakikolwiek)
- konwerter poziomów logicznych (do zamiany napięć pinów modemu z 3.3 volt na 5 arduino)
Uwaga jeśli chcemy bardzo czuły podsłuch wyłapujący wszelkie szepty, to możemy zastosować wzmacniacz mikrofonowy lecz o niewielkiej mocy aby nie przesterować wejścia modułu lecz lekko go tylko zwiększyć.
Projekt taki został omówiony w tym temacie:
Modem mieści kartę micro SIM:
Do modemu zalecam dołączoną do zestawu antenę na kabelku:
Schemat połączeń
Program do wgrania
pamiętaj by zmienić linijki kodu gdzie ma być twój numer telefonu
mySerial.print(phone_number+"\",+48TWÓJNUMERTELEFONU");
mySerial.print(phone_number+"\",+48TWÓJNUMERTELEFONU");
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); //rx - tx (TX GSM DO 2 / RX GSM DO 3)
boolean stringComplete = false;
String inputString = "";
String fromGSM="";
void setup()
{
Serial.begin(9600);
Serial.println("Serial Connected");
mySerial.begin(9600);
//reserve some buffer space
inputString.reserve(200);
fromGSM.reserve(200);
//Turn off echo from GSM
mySerial.print("ATE0");
mySerial.print("\r");
delay(300);
//set to auto answer after 1 ring, [1-255]
mySerial.print("ATS0=1");
mySerial.print("\r");
delay(300);
}
void sendSMS(String& phone_number, char message[] ){
mySerial.print("AT+CMGF=1");
mySerial.print("\r");
delay(500);
mySerial.print("AT+CMGS=\"");
mySerial.print(phone_number+"\",+48TWÓJNUMERTELEFONU");
mySerial.print("\r");
delay(300);
// mySerial.print("T4D);
mySerial.print(message);
mySerial.write(0x1A);
delay(500);
}
void loop() // run over and over
{
if (mySerial.available()){
char inChar = mySerial.read();
if (inChar == '\n') {
if(fromGSM == "OK\r"){
Serial.println("---------DZIALA-------");
}
else if(fromGSM == "RING\r"){
Serial.println("---------DZWONI-------");
}
else if(fromGSM == "ERROR\r"){
Serial.println("---------NIE DZIALA-------");
}
else if(fromGSM == "NO CARRIER\r"){
Serial.println("---------KONIEC POLACZENIA-------");
String myNumber = "+48TWÓJNUMERTELEFONU"; // <------ zmien numer
char myMessage[] = "DZIEKUJEMY ZA POLACZENIE";
sendSMS(myNumber, myMessage);
}
Serial.println(fromGSM);
fromGSM = "";
}else {
fromGSM+=inChar;
}
delay(20);
}
if (stringComplete) {
mySerial.print(inputString);
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') {
stringComplete = true;
}
}
}
Schemat wyjść modułu GSM: