Das billigste GSM modul SIM800L

Status
Nicht offen für weitere Antworten.

cesco1

Erfahrener Benutzer
#1
Für $12 gibts das SIM800L mit antenne:

http://www.dx.com/de/p/sim800l-quad...g-3dbi-pcb-antenna-with-ipex-interface-406905

Das modul läuft ab 1S lipo, etwa 4V.. Bei 5V kommt "überspannung fehler". Verbunden wird über seriell, autobaud. Gesteuert über AT commands. Eine micro SIM brauchts noch.

Ich hab mal anrufen getestet und das geht. Bei ATDxxxxxxx; läutet mein haustelephon :) Mit ATH wieder aufhängen. Das billigmodul läuft bestens !

SMS hab ich nicht getestet da prepaid simkarte ... das wird teuer bis isch das raushabe.

Was kann man damit machen? Verbunden mit einem arduino kann ein GPS angezapft werden und z.b. über SMS die GPS position abgefragt werden. Wenn man den flieger verloren hat anrufen und man weiss wo das dings ist. Weltweit.

Edit:
Bei anrufen kommt "ring" über die serielle, abnehmen mit ATA, aufhängen mit ATH
SMS senden geht auch. AT+CMGF=1 dann AT+CMGS="number", text eingeben, abschluss mit ctrl-Z (dec 26). Bei sms empfang kommt auch meldung. Lesem mit AT+CMGF=1 dann AT+CMGL="ALL".
 
Zuletzt bearbeitet:

Chriss_:)

Erfahrener Benutzer
#2
Hi cesco,

habe mir das Modul auch bestellt, wollte es auch mal testen. Ist vorgestern angekommen, hab aber noch keine Zeit dafür gehabt...

Bestellt bei AliExpress für knapp 5€: New Smallest SIM800L GPRS GSM Module MicroSIM Card Core BOard Quad-band TTL Serial Port
http://www.aliexpress.com/item/Smal...rd-Quad-band-TTL-Serial-Port/32385354309.html

Bin auf deine Projekte gespannt! :)

Schöne Grüße aus dem Sauerland!
Chriss
 

cesco1

Erfahrener Benutzer
#3
Na toll, hab ich wieder mal zuviel bezahlt ...

Was stört ist dass die kleinen arduinos nur eine serielle schnitstelle haben. Das heisst GPS abhören und Sim800 modul bedienen geht nicht, es sei denn man braucht sowas krüppeliges wie softserial. Ein test hat gezeigt autobaud läuft runter bis 1200 baud, softserial sollte also kein problem sein. Für autobaud muss man einfach ein paar /CR (13) senden buis der chip dann auf AT reagiert.

Ich frag mich wie man das am besten macht. Einfach bei anruf (klingeln) ein SMS mit der GPS position an eine feste nummer senden? Oder auf ein SMS mit einem codewort warten und dann die GPS an diese nummer zurückschiken?

Oder gar über GPRS die ganze steuerung übernehmen? Wow, eine weltweit arbeitende RC steuerung ...
 

DerCamperHB

Erfahrener Benutzer
#4
kann das Modul auch eine dauerhafte Serielle Verbindung halten, dachte da als ersatz für die 433 Telemetriemodule für Telemetrie/Trackeranwendung
 

cesco1

Erfahrener Benutzer
#5
>kann das Modul auch eine dauerhafte Serielle Verbindung

Ich denke ja. Ueber GPRS sollte das gehen. Wird aber teuer ... die daten bezahlst du ja, oder du klaust der frau ihre sim .... oder den kindern. Ist eigentlich ungerecht, der einzige in der familie der KEIN abo hat bin ich :(
 

aargau

Erfahrener Benutzer
#6
Teuer dürfte das nicht werden, im Aldi, Lidl und co. gibt es Karten bei welchen du für ein paar Euro 250MB Daten kaufen kannst - alles darüber ist dann nur noch GPRS Speed - da du eh nicht mehr erzeugen kannst dürfte das locker reichen ;-)
Sprich das würde dann halt ein paar Euro pro Monat kosten in welchem du Fliegst, nur dürfen die paar Euro verglichen mit allem anderen was man so fürs Hobby ausgibt nichts sein :p.
Aber ich bezweifle, dass GPRS schnell und verlässlich genug ist um Telemetriedaten zu übermitteln, dafür wäre 2G oder höher wohl schon pflicht, auch zwecks delay.

Modul ist sicher interessant, aber bringt auch nur bedingt etwas. Wenn mein Modell runterkommt habe ich die Daten entweder per Fernbedienung wo das war oder aber der Akku fliegt raus und dann läuft auch kein GSM Modul mehr ;-).
Zudem wäre ich da doch etwas vorsichtig, wer weis wie Stör haft diese billigteiler sind? Die Provider finden es ganz und gar nicht Lustig wenn man ihr Frequenzband stört oder zumüllt.


Dein vorhaben bei Anruf oder SMS zu Antworten sollte easy realisierbar sein -> Bei jedem ankommendem Serialpaket einfahc prüfen ob es das entsprechende AT Kommando ist und wenn ja AT Kommando mit deinem Wunsch zurücksenden.

Softwareserial für GPS und co. reicht mehr als aus und ist auch verlässlich, eng wird es erst wenn man die Leistung vom uC für anderes braucht. Wenn du aber "nur" GPS auswerten willst langweilt sich der uC so oder so die ganze Zeit
 

cesco1

Erfahrener Benutzer
#7
Zudem wäre ich da doch etwas vorsichtig, wer weis wie Stör haft diese billigteiler sind? Die Provider finden es ganz und gar nicht Lustig wenn man ihr Frequenzband stört oder zumüllt.
Blödsinn.

Die sim800l dürften seit jahren in zig-millionen von telephonen verbaut sein und sämtliche fcc tests bestanden haben. Eine eigenentwicklung ist das nicht, das ist ein gängiger massenweise verwendter chip der hier auf ne eigene platine verbaut wurde.
 

aargau

Erfahrener Benutzer
#8
Glaube kaum, dass in Handys noch GPRS Technik verbaut wird, da wird seit Jahren das meiste direkt über den SoC gemacht...
Wenn dann waren die vielleicht in den ersten Nokia Geräten verbaut.

Scheinbar Gemäss Hersteller sogar CE Zertifiziert, kann man aber leider nicht einfach Downloaden.
 

cesco1

Erfahrener Benutzer
#9
Das versenden von SMS auf anruf klappt. Ist eigentlich einfach. Ich verwende softserial 9600 baud auf pins 3 und 4. Pin 3 deshalb weil dort int1 angeschlossen ist. Das GPS einlesen über uart etc fehlt mir aber noch. Das board läft mit 3.3V arduino besser als mit 5V.

Die nummer wohin das SMS geht ist fix. Schön wäre wenn das SMS an die nummer geht die zuletzt angerufen hat. Kennt jemand die AT befehle zum auslesen der anrufenden nummer? Ist das AT+CNUM=?

Edit:
Es ist AT+CLIP=1, dann wird die anrufende nummer angezeigt :)
 
Zuletzt bearbeitet:

cesco1

Erfahrener Benutzer
#10
Ich musste die baudrate von softserial auf 2400 runtersetzen, 9600 läuft nicht zuverlässig ?

Mein testproggi sendet ein SMS zurück wenn man anruft und min. 2 mal läuten lässt. Falls caller ID enabled and die anrufende nummer (vorher einmal AT+CLIP=1 machen). Die daten werden zum normalen com port durchgeschleift, 115200 baud. Man kann dort AT befehle manuell eingeben.

Falls das jemand testen will, (recht einfache) source angehängt. RX ist pin3, TX pin4.

Edit: at+ipr=2400 setzt fixe baudrate und verhindert startprobleme mit autobaud
 

Anhänge

Zuletzt bearbeitet:

QuadMax

Erfahrener Benutzer
#11
Wie cool ist das denn?
Gleich bestellt.
Bin dabei einen Server aufzusetzen der meine Telemtrie empfängt.
SMS wird mir sonst auf dauer zu teuer. ;)
Hoffe das mindestens 1Hz drin ist, wird sich dann zeigen.
 

cesco1

Erfahrener Benutzer
#12
Noch so ein modul. Unter 2 euro. Läuft bestens. :)

Ich musste ich DTR mit BOOT verbinden damit es startet. Nur mit 3.3V usb-seriell wandler oder 3.3V arduino verwenden, das ding hat keine pegelanpassung. Sie 5V -> 4.2V wandlung ist mit diode gemacht ... würg. Aber $1.82. Billiger gehts nicht.

Sms senden klappt. Es soll auch FTP oder HTTP gehen, ich hab aber keine ahnung wie. Hat da jemand erfahrung? Life telemetrie weltweit für 2 eur hardware ... spinn ich?

http://www.ebay.ch/itm/401085445937?_trksid=p2057872.m2749.l2648&ssPageName=STRK:MEBIDX:IT


Edit:

Auch die bidirektionale verbindung ins internet per TCP-IP scheint zu laufen.

// ist kommentar
at+xisp=0 // interner tcpip stack verwenden
at+cgdcont=1,"ip","internet" // sunrise apn setzen
at+xiic=1 // start ppp
at+tcpsetup=0,177.194.29.176,1005 // call meine ip, port 1005
at+tcpsend=0,10 // sende 10 zeichen
 
Zuletzt bearbeitet:

QuadMax

Erfahrener Benutzer
#13
Sms senden klappt. Es soll auch FTP oder HTTP gehen, ich hab aber keine ahnung wie. Hat da jemand erfahrung? Life telemetrie weltweit für 2 eur hardware ... spinn ich?
Live Telemetrie ist relativ einfach umzusetzen.
Wenn man allerdings nicht jeden Tag die ip neu in der Software einstellen will,
(Die heimische IP ändert sich inR nach spätestens 24h)
braucht man schon einen Server (statische ip).
Billige gibt es unter "prepaid vserver", einfach googlen.
Für so Testzwecke ausreichend :D
Für Bidirektional braucht es quasi einen tcp chat server. Daran bin ich bisher gescheitert.

Deswegen meine Lösung für reine live Telemetrie:
Ein PHP Skript hört auf Port X auf reinkommente Daten und generiert aus dem string eine html Datei.
Diese kann dann weiter verarbeitet werden.
Hier mein Code:
PHP:
<?php
error_reporting (E_ALL);

/* Das Skript wartet auf hereinkommende Verbindungsanforderungen. */
set_time_limit (0);

/* Die implizite Ausgabe wird eingeschaltet, so dass man sieht,
 * was gesendet wurde. */
ob_implicit_flush ();

$address = 'hier.kommt.die.ip.rein';
$port = 1234;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
}

if (socket_bind($sock, $address, $port) === false) {
    echo "socket_bind() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
}

if (socket_listen($sock, 5) === false) {
    echo "socket_listen() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
}

do {
    if (($msgsock = socket_accept($sock)) === false) {
        echo "socket_accept() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
        break;
    }
    /* Anweisungen senden. 
    $msg = "\nWillkommen auf dem PHP-Testserver.  \n" .
        "Um zu beenden, geben Sie 'quit' ein. Um den Server herunterzufahren, geben Sie 'shutdown' ein.\n";
    socket_write($msgsock, $msg, strlen($msg));
	*/

    do {
        if (false === ($buf = socket_read ($msgsock, 2048, PHP_NORMAL_READ))) {
            echo "socket_read() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($msgsock)) . "\n";
            break 2;
        }
        if (!$buf = trim ($buf)) {
            continue;
        }

	$text = '<html><body>'.$buf.'</body></html>'; 
	$textdatei = fopen ("daten.html", "w+");  
	fwrite($textdatei, $text); 
	fclose($textdatei); 
    } 
	while (true);
    socket_close ($msgsock);
} 	
while (true);
socket_close ($sock);

?>
Uh, viel copy & paste; qick & dirty ; sorry, habe im Moment einfach keine Zeit fürs Hobby.

Ich habe einen kleinen Testserver am laufen (eigentlich nicht dafür :)) aber habe das Skript hochgezogen.
Wer mich per PN anschreibt, bekommt Zugang zum Testen.

Gestartet wird der Server einfach indem man den Link zur php Datei aufruft.
Dabei sieht es so aus, als ob die Webseite nicht laden würde.
Daran erkennt man jedoch das der Server läuft.
Jetzt könnt ihr euch mit z.b. Putty verbinden und testen ob alles funktioniert.
Die Daten finden sich unter daten.html im gleichen Vezeichnis.

Gruß
QuadMax
 
Zuletzt bearbeitet:

cesco1

Erfahrener Benutzer
#14
braucht man schon einen Server (statische ip).
Früher hab ich dafür dyndns verwendet. Dns sollte das telephon können oder?

Für Bidirektional braucht es quasi einen tcp chat server. Daran bin ich bisher gescheitert.
Man kann über TCP durchaus bidirektional machen. Nur http hat damit ein problem. Ich hab meine testserver in processing. Der macht nix, nur "hallo" und aufhängen. Eigentlich sollte man den erweitern dass er gleich loggt und realtime die position zeigt.


Code:
import processing.net.*;

Server myServer;

void setup ()
{
  
  frameRate(10);
  
  // Sketch einstellen
  size (320, 240);
  stroke (255, 25);
   
  myServer = new Server(this, 1005); // port 1005
  
  background (0);
}
 
void draw () 
{
  Client thisClient = myServer.available();
  if (thisClient !=null) 
  {
    String whatClientSaid = thisClient.readString();
    if (whatClientSaid != null) 
    {
      println(thisClient.ip() + "  " + whatClientSaid);
      myServer.write("Got you ");
      myServer.write(thisClient.ip());
      myServer.disconnect(thisClient);
    } 
  } 
}
Ein arduino als gps-telephon übersetzer und nummerwähler geht leider nicht, die mini-arduinos haben nur eine serielle und ich brauch 2. Da muss ein $3 stm32 her. Inzwischen läuft der stm32 mit der arduino umgebung. http://www.stm32duino.com/

stm32 board:
http://www.ebay.ch/itm/311156408508?_trksid=p2060353.m2749.l2649&ssPageName=STRK:MEBIDX:IT
 
Zuletzt bearbeitet:

cesco1

Erfahrener Benutzer
#16
Ich verstehs nicht.

Der telemetrie sender soll die daten zum server senden, der client (display app) soll dann auch zum server verbinden und die daten dort abholen?
 

QuadMax

Erfahrener Benutzer
#17
Ja. Du kannst es dir vorstellen wie einen von den uralten Chat Servern.
Es gibt pro Port nur einen "Raum" und was ein Client schreibt,
wird an alle anderen im Raum weitergeleitet.
In der auf meinem Server einfachsten Konfiguration gibt es keinen Benutzernamen.
Sobald ein Client einen String an den Server schickt,
wird dieser an alle anderen weitergeleitet.
Der Server dient quasi als fester "Treffpunkt".
Also keine Notwendigkeit von DynDNS oder Portweiterleitung.

Die aktuelle Version hat mit meiner vom Post 13 nichts zu tuen.
Neue Strings müssen nicht abgeholt werden, sondern werden automatisch vom Server verteilt.
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten