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.