Forum: Mikrocontroller und Digitale Elektronik Sammelbestellung GSM-GPS Platine.


von Basti M. (counterfeiter)


Angehängte Dateien:

Lesenswert?

Hallo Gemeinde,

ich wollte auf diesem Weg Leute suchen die Interesse an einem 
gemeinsamen Projekt haben oder wenigstens an einer Sammelbestellung 
einer GSM – GPS Platine. Auch wenn der Aufbau evtl. erst später 
durchgeführt wird, kann man ja erst mal daliegen haben ;)

Den Schaltplan hab ich schon soweit fertig. Was noch fehlt ist ein 
Potenzialfreier Kontakt um Dinge an und aus zu schalten. Bei mir wird 
das die Standheizung im Auto werden… Ideen? 3V Relais? -> 0,5A nötig…

Da ich die Platine im KFZ als Standheizungsschalter und Diebstahlschutz 
per GPS betreiben wollte, hab ich auch an den 
Versorgungsspannungsklemmen einen recht aufwendigen Eingangsfilter 
gebastelt. Ob ihr dann später alle Teile so auflötet ist ja euch 
überlassen.

Eingesetzt hab ich folgende Bauteile:
ATMega162 -> zwei UARTs

Simcom Sim340DZ mit Simkartenhalter und gewinkelte SMA Antenne -> weil 
günstig (ca. 32 €)
http://www.mr-lee-catcam.de/pe_cc_o3_de.htm

GPS Modul -> weil sehr klein, günstig und schon mit enable Pin (19€)
http://shop.trenz-electronic.de/catalog/product_info.php?cPath=105_139&products_id=737

Die anderen Bauteile gibt’s eigentlich alle bei Reichelt. Nen Lipo Akku 
hat man evtl. noch rumliegen.

Angeschlossen wird die Schaltung bei mir auf Zündungsplus, der Akku lädt 
sich während der Fahrt und im Stand wird das GSM Modul nur vom Akku 
gespeist um die Autobatterie im Fehlerfall mal nicht leer zu nuckeln.

Über die DTR Leitung wird das GSM Modul in den Stromsparmodus versetzt, 
kann aber noch Nachrichten und Anrufe empfangen. Der Power Key wird fürs 
anschalten und Reseten gebraucht. Über RI bekommt man Flanken bei 
Anrufen und SMS (Interrupt).

Ansonsten arbeitet das GPS und das GSM Modul mit einem Pegel von 3V an 
den IO Pins… darum bekommt der µC auch einen LDO 3V spendiert. 
Akkuspannung kann man über AT Befehle abfragen.

INT1 am µC bekommt Information über Zündungsplus über einen 
Vorwiderstand. Ich wollte keinen Spannungsteiler verwenden und habe 
gleich die Schutzdiode des Atmegas benutzt.

Der µC geht über den Uhrenquarz und dem Async. Timer in den Power Down… 
Das Sim Modul soll im sleep nur ca. 2mA brauchen. GPS kann den größten 
Teil der Zeit disabled bleiben. Ich denke so bekommt man schon eine 
riesige Standzeit hin.

ISP Anschluss zum Programmieren und ein Standard 7805 mit Kühlkörper 
fürs Akku nachladen (Ströme bis zu 650mA).

Hab ich was vergessen?



Sooo, ich denke das man diese Platine sehr vielseitig einsetzen kann und 
hoffe dass sie für möglichst viele Interessant ist.
Ich denk mal ab 20 bis 25 Stück sind wir ungefähr bei 5 Euro das 
Stück??!!
Ich würde schon 4 Stück nehmen.

Wer hat noch Ernsthaftes Interesse?


MfG

Basti

von spess53 (Gast)


Lesenswert?

Hi

>Den Schaltplan hab ich schon soweit fertig.

Hat aber Fehler. Was sollen z.B. die 22p an dem Quarz an TOSC?

Der ATMega162 ist auch nicht mehr ganz taufrisch. Gegen neuere AVRs ein 
Stromfresser.

MfG Spess

von Basti M. (counterfeiter)


Lesenswert?

ja die sollte man weglassen... stimmt... ;)

Ja über den Controller kann man ja noch abstimmen/reden, wenn jemand 
ernsthaftes Interesse hat...

Über den Schaltplan sollten dann jeder nochmal selbst drüber schauen... 
ist ja dann gemeinsames Risiko...

von Basti M. (counterfeiter)


Angehängte Dateien:

Lesenswert?

Hallo Forumgemeinde...

Hab jetzt soweit alles Designed...

Hab mich nun bei der Standheizungsaktivierung für ein Minirelais auf der 
Platine entschieden... Es ist ein 4,5 Volt Relais und laut Beschreibung 
arbeitet es auch noch bis 3,4 Volt Herstellerangabe... also denke ich, 
dass es wohl auch bis 3 Volt arbeiten dürfte... (werd ich mal probieren)

Das Relais wird über einen NPN BC 817-40 von Reichelt angesteuert... ich 
hab im Datenblatt keine genaueren Informationen gefunden... ich hoffe 
einfach, dass es bei 50mA CE Strom nur nen Drop von 0,3 V hat...
Nen SMD PMos werd ich ja bei 3 Volt µC Spannung auch nicht ordentlich 
angesteuert bekommen, oder?

Ansonsten wäre es nett, wenn nochmal jemand nen Auge auf das Board und 
den Schaltplan werfen würde... Vielleicht sind ja noch Fehler die mir 
nicht aufgefallen sind :-/

Wo ich günstig Platinen bestellen kann, habe ich nun schon 
herausgefunden...
Es muss also keine Sammelbestellung mehr her... aber falls trotzdem noch 
jemand interesse hat, schreibt mich an...


Schonmal danke

MfG

Basti

von holger (Gast)


Lesenswert?

>Es muss also keine Sammelbestellung mehr her... aber falls trotzdem noch
>jemand interesse hat, schreibt mich an...

Lass mal lieber, von Leuten die LEDs falschrum anschliessen
und den Vorwiderstand mit 50k angeben würde ich eine Platine
nicht mal geschenkt nehmen.

von Basti M. (counterfeiter)


Lesenswert?

Da ich noch nicht weiß, welche Farbe und welche LED es mal werden soll, 
hab ich mich da auf noch keinen Widerstand festgelegt...

Jup, LED ist falsch rum drin... peinlicher Fehler... =)

von Sebastian Förster (Gast)


Lesenswert?

für Suchende mit der Suchfunktion

Platine so wie oben gepostet läuft soweit, hab das Programm jetzt 
erstmal soweit das die Standheizung (das Relais) nach einem Anruf der 
richtigen Nummer angeht. Bestätigung das es geklappt hat: Der Anruf wird 
nach 10 Sekunden abgewiesen...
Später dann per SMS, aber das ist noch nen ganzes Stück mehr Arbeit und 
der Winter kommt ja schon...

Ein paar Nachteile gibts trotzdem ;)

Also großes Manko... der Ladestrom des Akkus, kann locker bis 600mA 
gehen... also der 7805 bei 14,5 Volt ist hoffnungslos überlastet... hier 
vielleicht eher zum Schaltregler greifen...

Die GPS Fix Leitung des GPS Moduls ist ziemlich unpraktisch was den 
Interruptbetrieb angeht... also es toggelt bei nichtfix im Sekundentakt 
und wenn ein fix da ist, dann bleibt es konstant auf 0... Da kommt man 
wahrscheinlich besser, wenn man einfach die NEMA Strings auswertet...

Der Status Ausgang am GSM Modul wäre dafür ganz nützlich gewesen, hier 
sieht man ohne AT Commands, ob das GSM Modul läuft und wenn nicht, kann 
man es starten...
Aber mit nem bissel kratzen und die die Durchkontaktierung als Lötauge 
wird es ziemlich einfach GPS_FIX auf Status zu legen...

MfG

Basti

von Harald N. (harald_)


Lesenswert?

> Also großes Manko... der Ladestrom des Akkus, kann locker bis 600mA
> gehen... also der 7805 bei 14,5 Volt ist hoffnungslos überlastet... hier
> vielleicht eher zum Schaltregler greifen...

Gibt Schaltregler pinkompatibel zu 7805 von RECOM.
mfg
Harald

von Sebastian Förster (Gast)


Lesenswert?

jup, den hatt ich mir auch schon ergoogelt.... der wird es wohl auch 
werden... 10€ ist zwar nicht gerade wenig, aber besser als nen neues 
design... ;)

achso und noch was zur platine... nen pull down am uC Relaispin wäre 
noch ratsam... wenn er bei fehlern im reset stehen sollte treten keine 
undefinierten relaiszustände auf...

software kann ich nächste woche uploaden... wenn man die schaltung 
anklingelt, dann bekommt man die aktuellen koordinaten gleich als 
googlemaps link verschickt zusammen mit dem restguthaben....


mfg basti

von Michael B. (planlessmichi)


Lesenswert?

Hallo Sebastian, wie sieht's mit der Software aus? Hast Du da schon was, 
das Du veröffentlichen kannst?
Viele Grüße,
Michael

von Sebastian Förster (Gast)


Lesenswert?

moin...

ich habs noch nicht vergessen... aktuell mach ich nen Akku 
Langzeittest... hab mir nen 700mAh nokia ersatzakku für 3,50€ bestellt 
und will mal schauen was der Akku und die stromsparmodis taugen... läuft 
jetzt seit Sonntag Mittag, mit 5 mal relaisanschalten und eine 
Koordinatenabfrage... mein Ziel sind 7 Tage...

dann gab noch kleine Änderungen der Änderung...

das Status Signal ist auch im ghost mode high... also wird der Akku 
geladen aber das GSM ist nicht online... also online abfrage doch besser 
per at befehl... und der Ladeerkennungspin muss auf int2 gelegt 
werden... sonst wacht das Modul aus dem power down nicht mehr auf... 
weil die anderen zwei Ports nicht asynchron arbeiten können...

ließ sich recht einfach abändern, sollte natürlich beim Neudesign 
beachtet werden... ich werd dann auch nochmal den korrigierten 
Schaltplan uploaden...

Was mich noch stört: der uC wacht jede sec über asyc. timer auf... die 
fuse bestimmt ja, wieviel Zeit der quarz zum einschwingen bekommt... 
jetzt steht im tutorial irgendwas in der Richtung 10ms min. aber die 
fuse lassen sich nur von ca. 5ms und ca. 70ms ändern... 70ms ist jaschon 
recht viel bei jede sec. wakeup :-/
was kann man noch tun?

mfg basti

von Basti M. (counterfeiter)


Angehängte Dateien:

Lesenswert?

Moin,


so, jetzt läuft alles ganz wunderbar... aber langzeitdebugging ist hier 
und da evtl. noch nötig...

Hab mal nen paar Bilder angehangen, wie es jetzt ausschaut (sorry für 
die schlechte Qualli.. blöde Cam :( )

Akkulaufzeit bis jetzt 14 Tage... da kann man nicht meckern :)

Mit den defines in der Main ist gerade folgendes eingestellt:

15 Sekunden muss die richtige Nummer anrufen bevor sie weggedrückt wird 
und das Relais 10 sekunden einschaltet.

Aller 15 min wird die Akkuspannung abgefragt und gleichzeitig 
kontrolliert ob das Modul auch im Power On Modus ist.

Anklingeln von maximal 5 Sekunden lässt das GPS 3 Minuten angehen und 
nach einem Fix suchen...

10 mal werden gültige NMEA-Datensätze auf Satellitenanzahl/Genauigkeit 
geprüft...

Wenn GPS keinen Fix bekommen hat -> SMS mit GPS Fehler, Akkuspannung und 
Restguthaben

Wenn GPS Signal gefixt wurde -> Koordinaten in google Link formatiert, 
GPS Genauigkeit (Satellitenanzahl ca. in Meter umgerechnet) und 
Akkuspannung + Restguthaben...

Modul geht ab 3,5V in Power Down und wacht erst wieder auf wenn vorher 4 
Minuten der Ladepin high war! Bevor es abschaltet, versendet es eine SMS 
über die Aktion...


ToDo:

mehr Reaktionen auf GSM AT Fehler
GPRS Livetracking -> GSM Modul als Server zum Senden der Koordinaten

hier nochmal die Routine zum SMS Versenden mit Sim300 oder Sim340:
1
void SMS_Senden(uint8_t flag)
2
{
3
  //http://maps.google.de/maps?q=37.771008,+-122.41175
4
5
  char sms_text[80];
6
7
  //Umrechnung der Koordinaten ohne Gleitkommazahlen zu verwenden
8
9
  int16_t lat_dayminX = sms_data.lat_daymin;
10
  int16_t lon_dayminX = sms_data.lon_daymin;
11
12
13
  //latitude berechnen
14
  int32_t lat_min_sec = lat_dayminX % 100;
15
  if(lat_dayminX < 0) lat_min_sec *= (-1);
16
  lat_dayminX /= 100;
17
18
  lat_min_sec *= 100000;
19
  lat_min_sec += sms_data.lat_sec * 10;
20
  lat_min_sec /= 6; 
21
22
  //longitude berechnen
23
  int32_t lon_min_sec = lon_dayminX % 100;
24
  if(lon_dayminX < 0) lon_min_sec *= (-1);
25
  lon_dayminX /= 100;
26
27
  lon_min_sec *= 100000;
28
  lon_min_sec += sms_data.lon_sec * 10;
29
  lon_min_sec /= 6; 
30
31
  //Vorrangegangen Nullen hinzufügen
32
  char lon_str_nullen[10];
33
  lon_str_nullen[0] = '\0';
34
35
  char lat_str_nullen[10];
36
  lat_str_nullen[0] = '\0';
37
38
  for(uint32_t x=100000;x>9;x/=10) {
39
             if(lon_min_sec<x) strcat(lon_str_nullen,"0");
40
   if(lat_min_sec<x) strcat(lat_str_nullen,"0");  
41
     }
42
43
44
  sprintf(sms_text,"%d.%s%ld,+%d.%s%ld",lat_dayminX,lat_str_nullen,lat_min_sec,lon_dayminX,lon_str_nullen,lon_min_sec);
45
  
46
  DelayMS(1000);
47
  //SMS im Textformat senden
48
  uart1_puts_p(SMS_FORMAT);
49
  DelayMS(1000);
50
  //SMS Mitteilungszentrale
51
  uart1_puts_p(SMS_ZENTRALE);
52
  DelayMS(1000);
53
  //Char_set bestimmen...
54
  uart1_puts_p(SMS_TEXTFORMAT);
55
  DelayMS(1000);
56
57
58
59
  uart1_puts_p(AT_NUMBER);
60
  DelayMS(1500);
61
62
  if(flag == GPS_SMS) {
63
    uart1_puts_p(SMS_GOOGLE);
64
    uart1_puts(sms_text);
65
    if(sms_data.satelliten >=3 && sms_data.satelliten < 13) {
66
      uart1_puts_p(SMS_GENAUIGKEIT);
67
      uart1_puts_p(SMS_GENAUIGKEIT_A[(sms_data.satelliten-3)]);
68
    }
69
    //Restguthaben immer mitsenden!
70
    uart1_puts_p(SMS_GUTHABEN);
71
    uart1_puts(sms_data.money);
72
  }
73
  else if(flag == GPS_SMS_ERROR) {
74
    uart1_puts_p(SMS_NOGPS);
75
    //Restguthaben immer mitsenden!
76
    uart1_puts_p(SMS_GUTHABEN);
77
    uart1_puts(sms_data.money);
78
  }
79
  else if(flag == AKKU_SMS_ERROR) {
80
    uart1_puts_p(SMS_NOAKKU);
81
  }
82
83
84
  //wenn gueltiger Akkuwert vorliegt, mitsenden!
85
  if(akku_data.gueltig == 1) {
86
    uart1_puts_p(SMS_AKKU);
87
    sprintf(sms_text,"%d mV",akku_data.spannung);
88
    uart1_puts(sms_text);
89
  }
90
  //Abschlusszeichen
91
  uart1_putc((char)26);
92
93
  for(uint8_t i=0;i<20;i++) {
94
    LED_AN;
95
    DelayMS(500);
96
    LED_AUS;
97
    DelayMS(500);
98
  }
99
100
}


Vielleicht noch interessant... Komponentenpreise ohne Simkarte gesamt: 
102€

Also nicht unbedingt günstig, aber billiger als von der Stange ;)


MfG

Basti

von emil (Gast)


Lesenswert?

Wie wäre es mit einem kurzen Wiki Artikel

von Christoph (Gast)


Lesenswert?

Stellst deine Layout Dateien dazu auch noch online ?

Würd das ganze gern nachbauen nur bissl abgespeckt und kleiner. (Sim900 
is billiger und kleiner)

Gruß Christoph

von Basti M. (counterfeiter)


Angehängte Dateien:

Lesenswert?

Ja, man kann viel Abspecken und das schön klein Routen... brauchte ich 
aber nicht, da es in die Reichelt Box passen sollte und im Auto genügend 
Platz ist...

Also viel hat sich nicht geändert...

hier das Layout wie es mit dem Source Code von oben läuft...

das TX vom µC zum GPS verwende ich auch nicht.. könnte man weglassen...

der 7805 sollte unbedingt redesigned mit Shaltregler gemacht werden... 
sonst kommt man mit der Verlustleistung nicht hin...

Hab den 3,50€ Lipo auch mal mit dem Modul und nur halber Ladung bei 
-20°C in den Tiefkühler geworfen... hat sich bei Anruf und SMS nichts 
abgeschalten...

Aktuell hab ich festgestellt, dass Webasto mit nem W Bus arbeitet und 
nicht so einfach mit Kontakt schaltet... Bevor ich mir den Bus 
zusammenprogrammiere, werd ich lieber die Uhr aufschrauben und mit zwei 
Leitungen für den Starttaster rausziehen und besser damit schalten... 
hat den Vorteil, dass man die Zeit noch an der Uhr vorwählen kann :)

MfG

Basti

von Basti M. (counterfeiter)


Angehängte Dateien:

Lesenswert?

Nochmal die Eagle Schema Datei... vergessen

von Christoph (Gast)


Lesenswert?

Sebastian Förster schrieb:
> Aktuell hab ich festgestellt, dass Webasto mit nem W Bus arbeitet und
> nicht so einfach mit Kontakt schaltet... Bevor ich mir den Bus
> zusammenprogrammiere, werd ich lieber die Uhr aufschrauben und mit zwei
> Leitungen für den Starttaster rausziehen und besser damit schalten...
> hat den Vorteil, dass man die Zeit noch an der Uhr vorwählen kann :)

Kommt auch immer drauf an was für eine Standheizung bzw wie alt...
Hab auch die Uhr (Webasto 1530) geöffnet und 3 Kabel angelötet und 
fertig ;-)
Muss mal nachfragen was die Webasto 1533 kostet. Da kann man noch 
einstellen wie lange die Standheizung maximal anbleiben soll

Danke für den Schaltplan


Gruß Christoph

von Sebastian Förster (Gast)


Lesenswert?

jup, ich hab die neuere uhr... ich kann also recht bequem die zeit 
einstellen...

nen kumpel hat die selbe wie du... hat er also recht... er meinte die 
läuft immer 30 min... konnt ich mir gar nicht vorstellen...
nagut... mal sehen ob die uhr mit dem prellenden relais klar kommt... 
oder ob ich das relais auslöte und nur noch mit dem NPN Transistor auf 
masse schalte...

mfg basti

von Sebastian Förster (Gast)


Lesenswert?

Hab gerade herausgefunden das man mit nem "Virtuellen Comport Emulator" 
google earth ein NMEA Protokoll vortäuschen kann...

Wenn man nun GGA Daten sendet, wird google earth zum Livetracker...


Jetzt müsste ich bloß noch wissen wie man ein Comport unter Windows 
emulieren kann.... dann kann man sich das Brückenprogramm (den Emulator) 
noch sparen... ansonsten bräuchte man 3 Programme...

1. google earth
2. Comport Emulator zum Brücke erstellen
3. Eigenes Programm, dass den GPRS Server ansteuert und NEMA Strings 
abfragt und auf die Combrücke sendet


Hat jemand schonmal einen Comport auf Windows emuliert?

MfG

Basti

von Günter N. (checkit)


Lesenswert?

Hallo gibt es schon was neues von diesem Projekt?
Hört sich recht interessant an da ich mir auch eine SH in meinem Auto 
verbauen will.

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.