Hallo, ich möchte mir eine "Black-Box" bauen, die über ein angeschlossenes Handy oder Modem SMS versicken kann. Ich möchte das ganze möglichst günstig bauen, der Faktor Zeit ist nicht so schlimm. Ich brauche - min 2x serielle Schnitstelle (1xModem/Handy 1xGPS) Anschluss für ein 4x40 Display Anschluss für 6 Tasten schön wären: weitere digitale Eingänge digitale Ausgänge analoge Eingänge Gibt es dafür schon freie Lösungen? Welche Hardware ist dafür nötig(/zu empfehlen)? MfG Samuel Schmidt
Hi Samuel, Dein Projekt kling interessant. Möchtest Du automatisch die Possition Deines Autos ge-sms-t bekommen ? Ich würde gerne mit Dir zusammen an diesem Projekt arbeiten. Display sollte kein Problem sein Taster auch nicht digitale Ausgänge sind ja obligatorisch mit analogen Eingängen kenne ich mich leider noch nicht aus. Wenn wir 2 UARTs brauchen müssen wir vielleicht 2 AVRs nehmen? jo Axel
Hi, nehmt doch die neuen ATmegas. (ATmega128k oder so was.) Die haben doch schon 2 serielle Schnittstellen. Oder realisiert ne Software-Schnittstelle. Soweit ich mich erinnern konnte, war vor kurzem schon mal ein Posting über ne softwaremäßig realisierte serielle Schnittstelle in diesem Forum. Ansonsten einfach mal bei www.Atmel.com die Application Notes durchgucken. Da gibts viele interessante Applikationen. Für was sollen denn die analogen Eingänge sein? (Wenn mich nicht alles täuscht, dann hat der ATmega128 auch nen A/D-Wandler intus.) Oder anders: Ich glaube, Anfang diesen Jahres wurde im Elektor ein ähnliches Projekt vorgestellt, allerdings ohne GPS. Vielleicht ist das ja auch interessant. Kann im Moment aber leider nicht sagen, welche Ausgabe das war. Bis denn, ERDI - Soft.
Hallo, ich bin auch gerade bei einem ähnlichen Projekt. Würde auch gerne mitmachen... Bin gerade beim SMS decodieren (PDU-Mode) aber bekomme es noch nicht ganz hin, weil ich auch noch ziemlich neu auf dem Gebiet bin. Umwandlungen sind heavy char->hex->bin->(7-bit-)hex - siehe Thread (Bit-Rechnen) GPS funktioniert bei mir schon, baue noch einen kleinen NMEA-Parser, der die verschiedenen Sentences nach Daten durchsucht. Allerdings habe ich alles bisher mit einem 8535 ausprobiert. Der hat auch nur einen UART, das heißt ich muss mir auch noch was einfallen lassen mit beiden Anschlüssen... Vielleicht bringen wir ja gemeinsam was zum Laufen... Bis dann Steffen
Hey - ich find's fit, dass gerade ein lustiges Gemeinschaftsprjekt entsteht. Zu Problemlösung mit den Schnittstellen könnte man eventuell mit ein paar Transistoren einen Schnittstellen umschalter bauen oder sowas (ist der eine Pin high wird die interne Schnittstelle auf GPS geleitet ansosnten aufs Modem) Geht halt nicht wenn sie gleichzeitig senden oder wenn sie nur in unregelmaßigen Zeitabständen senden können. mfg
Moin, das geht ja echt schnell hier. Vielen Dank. Ich bin nur eben ein echter Newbe, ich suche ersteinmal nach einem geeignetem Proz für das ganze. Ich habe mir mal den SC12 angesehen, der scheint geeignet. Aber irgendwie ist der mir schon fast "zu groß". Ich dachte mir das ein Atmel ganz gut passen könnte. So jetzt die Frage, welcher Atmel geht für die Problemstellung. (eine Serielle Schnittstelle tuts zur not auch, wenn man zwei Proz. einfach verknüpfen kann). Ich habe mir die ganze Sache noch mal angesehen, und wollte mich erst einmal auf das SMS senden via Modem Konzentrieren und dann das ganze auf ein Handy (s25) umsetzen. Alles andere dann später. Ich hab nur 2,5 Monate Semesterferien ;). Jetzt nochmal konkret meine Frage: Aufgabenstellung: - SMS senden via Modem und Handy - Tasten (ca 6) - Display (ca 20x2) - reserve für GPS (also serielle Schnittstelle) - reserve für min 8digi Eingänge + min 8digi Ausgänge (- "C" wäre schön, ASM geht aber auch[muß auch wohl,oder?]) Welchen Proz? Welche Literatur (möglichst deutsch zum Anfang)? MfG Samuel Schmit
Hallo,
ich habe mich schon etwas mit der Umsetzung Telefonnummer und Text
zu einem PDU-String befasst. Dazu habe ich ein VB-Testprogramm
geschrieben.
Im Programm gibt es drei Textfelder:
strTel_Nr : Telefonnummer an die gesendet werden soll
strMsg_Txt: Text der übertragen werden soll
strPDU : umgewandelter PDU-String
es ist noch eine Befehlsschaltfläche:
PDU_Str vorhanden.
Nach Eingabe der Telefonnummer und des zusendenden Textes wird durch
Klick auf die Schaltfläche der PDU-String generiert.
Da das Programm nur zum Test gedacht war ist es auch nicht sauber
ausprogrammiert und vollständig. Es kann aber als Anregung für eine
Weiterentwicklung sein.
Private Sub PDU_Str_Click()
strPDU.Text = Tel_Nr + SMS_Msg()
End Sub
Function SMS_Msg() As String
Dim intLaenge As Integer
Dim intLaengenZaehler As Integer
Dim intCount As Integer
Dim intPDULaenge As Integer
Dim intBitZaehler As Integer
Dim intSchleifenZaehler As Integer
Dim bytTmp As Byte
Dim bytLo As Byte
Dim bytHigh As Byte
Dim bytMsgIn(0 To 1024) As Byte
Dim bytMsgOut(0 To 1024) As Byte
'Arrays löschen (bzw mit "0" vorbelegen)
For intN = 0 To 1024
bytMsgIn(intN) = 0
bytMsgOut(intN) = 0
Next
'Länge des Textes ermitteln
intLaenge = Len(strMsg_Txt)
'Carrige-Return anhängen
strMsg_Txt = strMsg_Txt + vbCr
'Text in Bytearray schreiben
For intLaengenZaehler = 0 To intLaenge - 1
bytMsgIn(intLaengenZaehler) = AscB(Mid(strMsg_Txt,
intLaengenZaehler + 1, 1)) And &H7F
Next
intBitZaehler = 1
intPDULaenge = 0
bytTmp = 0
For intLaengenZaehler = 0 To intLaenge - 1
bytTmp = bytMsgIn(intLaengenZaehler)
For k = intBitZaehler To 1 Step -1
'Übertrag aus Rechtsschiebung zum vorhergehenden Byte
addieren
If bytMsgIn(intLaengenZaehler + 1) Mod 2 Then
bytTmp = bytTmp + (2 ^ (8 - k))
End If
'Rechtsschiebung
bytMsgIn(intLaengenZaehler + 1) = bytMsgIn(intLaengenZaehler
+ 1) \ 2
Next
bytMsgOut(intPDULaenge) = bytTmp
intPDULaenge = intPDULaenge + 1
intBitZaehler = intBitZaehler + 1
'nach 8 Byte zurücksetzen
If intBitZaehler = 8 Then
intBitZaehler = 1
'im Text eine Position weiter
intLaengenZaehler = intLaengenZaehler + 1
End If
Next
'Protocol Idenfifier
SMS_Msg = "F1"
'Längenbyte der Nachricht (Anzahl Zeichen der Nutzdaten!)
bytHigh = intLaenge \ 16
bytLo = intLaenge And &HF
If bytHigh > 9 Then
SMS_Msg = SMS_Msg + Chr(bytHigh + 55)
Else
SMS_Msg = SMS_Msg + Chr(bytHigh + 48)
End If
If bytLo > 9 Then
SMS_Msg = SMS_Msg + Chr(bytLo + 55)
Else
SMS_Msg = SMS_Msg + Chr(bytLo + 48)
End If
'umgewandelter Text im Hex-Format
For intBitZaehler = 0 To intPDULaenge - 1
bytHigh = bytMsgOut(intBitZaehler) \ 16
bytLo = bytMsgOut(intBitZaehler) And &HF
'Zeichensatz beachten
If bytHigh > 9 Then
SMS_Msg = SMS_Msg + Chr(bytHigh + 55)
Else
SMS_Msg = SMS_Msg + Chr(bytHigh + 48)
End If
If bytLo > 9 Then
SMS_Msg = SMS_Msg + Chr(bytLo + 55)
Else
SMS_Msg = SMS_Msg + Chr(bytLo + 48)
End If
Next
End Function
Function Tel_Nr()
Dim strS As String
Dim strTel(1 To 14) As String * 1
Dim intI As Integer
Dim intLen As Integer
'Länge der Nummer ermitteln
intLen = Len(strTel_Nr)
'Zählindex ermitteln
intI = intLen \ 2 'ganzzahliger Anteil
intI = (intLen Mod 2) + intI 'plus Rest (0 oder 1)
'Telefonnummer in Bytefeld übertragen
For intN = 1 To intLen
strTel(intN) = Mid(strTel_Nr, intN, 1)
Next
strTel(intN) = "F"
'String zusammensetzen; mit Bytes vertauschen
srtS = ""
For intN = 0 To intI - 1
strS = strS & strTel(intN * 2 + 2) & strTel(intN * 2 + 1)
Next
'TOA (Type of Address) internationale Nummer beginnt mit
'der Landesvorwahl ("49") ... (die führende "0" wird weggelassen)
strS = "91" + strS
'Rückgabe der umgewandelten Nummer einschließlich Längenangabe
Tel_Nr = Format((Len(strS) / 2), "00") + strS
End Function
Salut, nur weil Ihr gerade die Umschaltung zwischen verschiedenen UARTs angesprochen habt... ein passender Mux wäre sicherlich der 74HC4052. Der verfügt über 2x 4 Kanäle, i.e., Ihr könntet bis zu vier UARTs anschließen - oder zwei, dann braucht Ihr auch nur eine Select-Leitung. Wenn allerdings alle "virtuellen" UARTs AVR-seitig ständig auf Empfang stehen müssen, würde ich von der Mux-Lösung absehen. Wie auch immer... hoffe, das hilft. :) Mark H. -- http://markh.de/avr/
Hi Leute, genau so ein Projekt wollte ich auch machen (siehe mein Posting über mehrere UARTs vor ca. 1 bis 1 1/2 Monaten)! :-) Aber anstatt SMS & Co. hatte ich folgende Idee: Ich verwende das Handy einfach als Modem und baue mit Hilfe dessen eine Verbindung zu meinem Heim-Rechner, der auch ein Modem hat, auf. Ich denke, Software-UARTs sind die beste Lösung. Warum einen dicken, fetten AVR einsetzen, der die 2 UARTs halt "nebenbei" an Bord hat (und man somit alle anderen Funktionen herumschleppt)? In dem AVR-Buch von Franzis ist eine Profi-Software-UART-Lösung dargestellt. Das mit dem GPS, denke ich, ist kein Problem. Hier eine wirklich gute Seite dazu: http://fly.ch/gps/Nmea.htm Wäre schön, nochmals was von Euch zu hören! Sebastian
Zum Thema GPS: hat einer von euch schon einen parser in C geschrieben ? wenn ja, würdet ihr mal bitte die Funktionen posten. Bin gerade selbst damit beschäftigt, habe aber noch Anlaufschwierigkeiten.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.