Forum: Mikrocontroller und Digitale Elektronik Mit Attiny13 über USB Daten an ein Handy senden


von GreenArrow (Gast)


Lesenswert?

Hey Leute,ich weiß das das Thema schon öfters durchgekaut wurde, ich 
hänge leider trozdem in der Luft. Folgendes. Ich hab den Mikrocontroller 
über ein USB Kabel ans Handy angeschlossen und würde jetzt gern mit dem 
µC ne SMS übers Handy schicken. Es sind quasi nur folgende Befehle 
nötig:
AT+CMGF=1
AT+CMGS="0177298xxxx"
Text
.
Wenn ich das Handy an den PC anschließe und diese Befehle über die 
Serielle schicke,klappt das wunderbar. Jetzt hab ich den Code in den µC 
Programmiert und schicke den Seriell über die D+ leitung ans handy. 
Gleichzeitig das Invertierte Signal natürlich über D-. Leider klappt es 
aber nicht. Da ich natürlich keine Möglichkeit hab das ganze zu Debuggen 
weiß ich auch nicht wo der Fehler liegt. Naja, vielleicht kann mir ja 
jemand helfen. Erstmal vielen Dank, GreenArrow
Ps: ich poste euch mal den Code
1
;RS232, Empfangen und Senden mit 9600 Baud bei 1,2 MHz
2
3
    .include "tn13def.inc"
4
5
    .def   A      = r16
6
    .def   Delay  = r17
7
    .def   Count  = r18
8
9
    ;Port B
10
    .equ   Dplus    = 1
11
    .equ   Dminus   = 2
12
13
14
        rjmp Anfang
15
Anfang:
16
        sbi   ddrb,Dplus  ;Datenrichtung Dplus
17
    sbi   ddrb,Dminus ;Datenrichtung Dminus
18
19
;Anfang
20
21
ldi A,65
22
rcall WrCOM
23
ldi A,190
24
rcall WrCOM2
25
26
ldi A,84
27
rcall WrCOM
28
ldi A,171
29
rcall WrCOM2
30
31
ldi A,43
32
rcall WrCOM
33
ldi A,212
34
rcall WrCOM2
35
36
ldi A,67
37
rcall WrCOM
38
ldi A,188
39
rcall WrCOM2
40
41
ldi A,77
42
rcall WrCOM
43
ldi A,178
44
rcall WrCOM2
45
46
ldi A,71
47
rcall WrCOM
48
ldi A,184
49
rcall WrCOM2
50
51
ldi A,70
52
rcall WrCOM
53
ldi A,185
54
rcall WrCOM2
55
56
ldi A,61
57
rcall WrCOM
58
ldi A,194
59
rcall WrCOM2
60
61
ldi A,49
62
rcall WrCOM
63
ldi A,206
64
rcall WrCOM2
65
66
ldi A,13
67
rcall WrCOM
68
ldi A,242
69
rcall WrCOM2
70
71
; initialisierung abgeschlossen!
72
73
74
ldi A,65
75
rcall WrCOM
76
ldi A,190
77
rcall WrCOM2
78
79
ldi A,84
80
rcall WrCOM
81
ldi A,171
82
rcall WrCOM2
83
84
ldi A,43
85
rcall WrCOM
86
ldi A,212
87
rcall WrCOM2
88
89
ldi A,67
90
rcall WrCOM
91
ldi A,188
92
rcall WrCOM2
93
94
ldi A,77
95
rcall WrCOM
96
ldi A,178
97
rcall WrCOM2
98
99
ldi A,71
100
rcall WrCOM
101
ldi A,184
102
rcall WrCOM2
103
104
ldi A,83
105
rcall WrCOM
106
ldi A,172
107
rcall WrCOM2
108
109
ldi A,61
110
rcall WrCOM
111
ldi A,194
112
rcall WrCOM2
113
114
ldi A,34
115
rcall WrCOM
116
ldi A,221
117
rcall WrCOM2
118
119
ldi A,48
120
rcall WrCOM
121
ldi A,207
122
rcall WrCOM2
123
124
ldi A,49
125
rcall WrCOM 
126
ldi A,206
127
rcall WrCOM2
128
129
ldi A,55
130
rcall WrCOM
131
ldi A,200
132
rcall WrCOM2
133
134
ldi A,55
135
rcall WrCOM
136
ldi A,200
137
rcall WrCOM2
138
139
ldi A,50
140
rcall WrCOM
141
ldi A,205
142
rcall WrCOM2
143
144
ldi A,57
145
rcall WrCOM
146
ldi A,198
147
rcall WrCOM2
148
149
ldi A,56
150
rcall WrCOM
151
ldi A,199
152
rcall WrCOM2
153
154
ldi A,51
155
rcall WrCOM
156
ldi A,204
157
rcall WrCOM2
158
159
ldi A,56
160
rcall WrCOM
161
ldi A,199
162
rcall WrCOM2
163
164
ldi A,51
165
rcall WrCOM
166
ldi A,204
167
rcall WrCOM2
168
169
ldi A,50
170
rcall WrCOM
171
ldi A,205
172
rcall WrCOM2
173
174
ldi A,34
175
rcall WrCOM
176
ldi A,221
177
rcall WrCOM2
178
179
ldi A,13
180
rcall WrCOM
181
ldi A,242
182
rcall WrCOM2
183
184
; senden an nummer abgeschlossen
185
186
187
188
ldi A,84
189
rcall WrCOM
190
ldi A,171
191
rcall WrCOM2
192
193
ldi A,101
194
rcall WrCOM
195
ldi A,154
196
rcall WrCOM2
197
198
ldi A,115
199
rcall WrCOM
200
ldi A,140
201
rcall WrCOM2
202
203
ldi A,116
204
rcall WrCOM
205
ldi A,139
206
rcall WrCOM2
207
208
; nachricht "test" senden
209
210
ldi A,26
211
rcall WrCOM
212
ldi A,229
213
rcall WrCOM2
214
215
; senden beendet
216
217
218
Ende:
219
rjmp Ende
220
    
221
warten: ldi r19,255
222
    dec r19
223
    brne warten
224
    ret
225
226
WrCOM:  sbi   portb,Dplus  ;Senden
227
        ldi   Delay,38 
228
    
229
D4:     dec   Delay
230
        brne  D4
231
        ldi   Count,8
232
L2:     sbrc  A,0
233
        rjmp  OFF
234
        rjmp  ON
235
ON :    sbi   portb,Dplus
236
        rjmp  BitD
237
OFF:    cbi   portb,Dplus
238
        rjmp  BitD
239
BitD:   ldi   Delay,38  
240
D5:     dec   Delay
241
        brne  D5
242
        lsr   A
243
        dec   Count
244
        brne  L2
245
        cbi   PORTB,Dplus
246
        ldi   Delay,38  
247
D6:     dec   Delay
248
        brne  D6
249
        ret
250
251
252
WrCOM2:  sbi   portb,Dminus  ;Senden
253
        ldi   Delay,38 
254
    
255
D8:     dec   Delay
256
        brne  D8
257
        ldi   Count,8
258
L3:     sbrc  A,0
259
        rjmp  OF
260
        rjmp  ONN
261
ONN :    sbi   portb,Dminus
262
        rjmp  BitD1
263
OF:    cbi   portb,Dminus
264
        rjmp  BitD1
265
BitD1:   ldi   Delay,38  
266
D9:     dec   Delay
267
        brne  D9
268
        lsr   A
269
        dec   Count
270
        brne  L3
271
        cbi   PORTB,Dminus
272
        ldi   Delay,38  
273
D:     dec   Delay
274
        brne  D
275
        ret

von spess53 (Gast)


Lesenswert?

Hi

Ich nehme an, das du am PC eine virtuelle Com-Schnittstelle für USB 
hast.
Die eigentliche Übertragung geht via USB. Und das kann dein ATTiny 
nicht.

MfG Spess

von Christian R. (supachris)


Lesenswert?

Das kann nicht klappen. Du brauchst einen USB Host Controller, einen USB 
Software Stack und einen Treiber für den USB-Serial Converter, der im 
Datenkabel oder im handy verbaut ist. Wenn der Converter im Dtaenkabel 
ist, hast du gute Chancen, das Handy direkt anzusprechen. Ist das Kabel 
nur ein normales USB Kabel, gehts mit viel Glück und etwas Aufwand mit 
dem Vinculum von FTDI.

von GreenArrow (Gast)


Lesenswert?

mmmh,hab mir das irgendwie zu einfach vorgestellt. Ich hab das USB Kabel 
einfach durchgeschnitten und dann einfach die beiden Datenleitungen mit 
dem µC verbunden.
Denn wie Spess richtig feststellte,wird der USB Anschluss ja am rechner 
als virtueller Com Anschluss erkannt. Daher dachte ich die Daten gehen 
über USB genau wie über die Serielle nur halt nicht tx und rx sonder d+ 
und d-.
Aber wenn ich dann Daten Seriell da hin schicke wandelt der Rechner die 
Intern einfach um bevor sie übers USB Kabel gehen, oder?

Ich mein wieso brauch ich nen USB Host Controller? Mein µC Soll das 
Handy ja nicht erkennen. Der soll ja einfach nur die Daten da hin 
schicken. Und selbst bei USB werden es doch im Endeffekt auch nur einsen 
und nullen sein. Die müsste ich doch auch mit nem nicht USB fähigen µC 
verschicken können. Ist dann wahrscheinlich nur mehr arbeit,oder? Oder 
muss das Handy vorher erst irgendwie initialiesiert werden? Ich mein es 
merkt ja das was angeschlossen ist,denn es fragt mich ja nach dem 
anschließen an den µC in welchen Modus es gehen soll?
Vielleicht habt ihr ja nochmal ein paar Ansätze für mich.
Ps: Das Datenkabel vom Handy ist übrigens ein ganz normales usb kabel.
Nochmal vielen Dank, GreenArrow

von Christian R. (supachris)


Lesenswert?

Du solltest dich mal informieren, was USB ist. Klar, im Endeffekt gehen 
da Nullen und Einsen über die Leitung. Allerdings ist das bidirektional, 
mit sehr knappen Timings und einer Menge Software-Overhead. Da dein 
Handy ein USB-Device ist, und einen USB-Serial-Converter eingebaut hat, 
benötigst du zwingend einen USB Host. Mit einem USB Device kannst du nur 
über einen USB Host sprechen. Ob du den jetzt in Software emuliert 
bekommst, wage ich zu bezweifeln, denn wie gesagt, der USB Stack ist 
nicht besonders wenig. Die besten Chancen hast du noch mit dem Vinculum 
von FTDI, alles andere wird nur noch viel viel komplizierter. Wenn der 
Vinculum deinen USB-Serial Konverter aber nicht unterstützt, hast du eh 
Pech gehabt.

von Michael W. (wiebel42)


Lesenswert?

So wie ich das verstanden habe handelt es sich bei den Vinculum auch nur 
um einen µC, der eben schon eine Firmware hat welche Massenspeicher und 
auch einige andere USB Geräte (Drucker, FTDI serial...) schon direkt 
erkennt und damit arbeiten kann. Wenn man aber genug Muse und 
Durchhaltevermögen hat, sollte man damit jedes USB Gerät irgendwie 
ansprechen können.
Aber ohne jetzt GreenArrow zu nahe treten zu wollen ist der Weg schon 
sehr viel länger als schlicht die zwei Adern anzuschließen und zu 
hoffen, dass es klappt. -wiebel

von GreenArrow (Gast)


Lesenswert?

Vielen Dank Leute, da ich nun auch bezweifel das ich die Software 
emuliert bekomm,werde ich es mal mit dem Vinculum probieren. Echt mehr 
arbeit als gedacht :-). Ich hab aber noch irgendwo ein altes 3210 
rumfliegen. Da hatte ich damals ein Serielles 9 Poliges Datenkabel für. 
Das sollte ich doch dann ganz normal seriell ansprechen können,ohne 
große  Probleme, oder? Dann würd ich es nämlich erstmal damit probieren 
und das USB Problem nach hinten schieben. Nochmals vielen Dank für die 
ganze Mühe, GreenArrow

von Michael W. (wiebel42)


Lesenswert?

Ja das sollte gehen, schau noch nach dem Pegel (5V oder 3,3V). Wenn du 
verwegen genug bist kannst du auch schauen ob du das serielle Signal bei 
dem neuen Handy hinter dem USB-Serial Wandler findest, daran könntest du 
dann auch den µC direkt anhängen. Dann ist dein Handy aber natürliche 
ziemlich "verbastelt" oder auch kaputt gelötet. ;) -wiebel

von GreenArrow (Gast)


Lesenswert?

@ Wiebel: Das ist auch ne super Idee. Zwar auch einiges an Arbeit aber 
für nen Anfänger wahrscheinlich leichter als sich mit dem Vinculum zu 
beschäftigen. Und verbastelt ist es eh schon, ich hab nämlich ein kabel 
an den Lautsprecherausgang vom Handy gelötet um meinen "Programmier-PC" 
damit einzuschalten :-).
Nochmals vielen Dank an euch alle. Echt Klasse Forum! Hoffe das ich 
irgendwann auch mal was produktives hinzufügen kann. Mfg GreenArrow

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.