PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ELV Bluetooth-Seriell-Wandler



Reeper
08.01.2007, 15:31
Hallo,

evtl. sucht der Eine oder Andere eine Bluetooth Lösung.
Die von ELV (68-702-03) sieht verdammt vielversprechend aus.
Mein PicoPlug habe ich aus meinem Bot geschmisssen (zu Störanfällig).

Das Ding ist vielleicht auch eine Alternative zum Easy Radio (auch billiger, keine weiteren Boards nötig), denn Dongle bzw. interne Bluetooth Karte haben ja die meisten PC's und Laptop's.
Zumal es "Class 1" hat :-).
Das Netzteil kann man doch best. "ersetzen".?

Was sagt ihr dazu?


EDIT:
Hier noch eine Seite:
http://www.sunix.com.tw/ipc/sunix_en/detail.php?prod_id=82

Reeper
09.01.2007, 20:55
Das ist das günstigste Angebot, welches ich bis dato gefunden habe:

http://www.wantronix.de/multiport/sunix/html/bluetooth_i_o.html

Preis: 72€

Es wird für mich immer interessanter O:)

Oder habt ihr Einwände und entdeckt ein Haken dabei?

Reeper
31.01.2007, 18:11
So, trotz dieser extrem vielen Antworten ;-) will ich meine Erfahrung posten.

Heute 17:00 Uhr habe ich den BTS1009 von der Poststelle abgeholt und ausgiebig getestet.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1216

Zum BTS1009
klein
class 1
leicht
sparsam
5V Stromanschluss oder über Pin9

Der Adapter liefert auch 5V und nicht wie der vom PicoPlug ohne Last bis zu 10V.
Es wurde problemlos erkannt und die Configuration war sehr schnell und unproblematisch.

Reichweite:
Mein Notebook hat eine class 2 BT-Karte, jedoch konnte ich mich komplett im Haus frei bewegen ohne einen Kontaktzusammenbruch.
Ich lief durch mehrer Zimmer, hinter tragende Wände (mit Stahl) und sogar im Garten und dann runter in den Keller (Etage darunter, die Decke ist wirklich massiv). Es funktionierte tadellos.
Für mein Desktop besorge ich mir noch einen class 1 BT-Dongle.

Proggen ging unter Bascom per MCS Bootloader problemlos.
Zw. BTS1009 und meinen 2 Atmel's befindet sich ein max232 (UART-Schaltung http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART).

Zusammenfassung:
Bin sehr zufrieden :-)
Preis: http://www.sly.de/artikeldet.php?suchspeicher=Sunix%20BTS1009&proid=45003&bez=Converter%20Bluetooth%20-%20RS232&sid=64b3529ac59c4a990f4a0f5fae96a374
Leiferung: sehr schnell

Bei Fragen: einfach melden :-)



Bitte:
Kann mir einer von euch mit der Bascom Vollversion den Bootlader ein paar mal compilieren (versch. Baudraten und wait-Zeiten), dass wäre echt nett (würde Bootlader.bas per E-mail zum editieren versenden).


Gruß
Stefan

pongi
01.02.2007, 08:32
Hey, das ist doch wirklich interessant.
Kann man dann vom PC aus auch zB über HyperTerminal mit dem AVR kommunizieren? Da ja die meisten BT-Dongles auch am PC ein virtuelles COM-Port erstellen. Benutzt du den Converter nur fürs Proggen oder auch für die Kommunikation zwischen PC und AVR?

MfG

pongi

Reeper
01.02.2007, 11:52
Bis jetzt progge ich damit und lasse den Atmel etwas zum PC senden (das sehe ich dann im Terminal).
Später will ich per PC den Bot steuern.

Als ich durch das gesamte Haus lief, ließ ich den Atmel print-Befehle senden und konnte so die ganze Zeit über sehen, ob der Kontakt noch steht.

Für mich ist es besser als eine Funk-Verbindung per Board, denn da müsste ich mir Boards auch auf der Seite des PC's bauen und dann über Adapter anschließen (Notebook hat nur USB). Nun brauche ich garnichts dazu, denn das Notebook hat ja eine BT-Karte drinnen :-)

Gruß
Stefan

pongi
01.02.2007, 12:12
Ja, genau aus diesem Grund will ich mir auch BT überlegen, habe aber bis jetzt nichts gefunden, was eine Verbindung über eine ausreichend lange Strecke bewältigt, und noch dazu bezahlbar ist. Also auf alle Fälle vielen Dank für die Info!

Vielleicht kann man ja später auch eine Steuerung per Handy ermöglichen, das wäre auch ziemlich geil, glaub ich.

MfG

pongi

Reeper
01.02.2007, 12:43
Oh ja, aber ein Programm für's Handy zu schreiben, stelle ich mir nicht einfach vor (bin beim Programmieren noch relativ am Anfang).

Es gab auch andere vielversprechende BT-Adapter, doch die waren erst ab 120€ und aufwärts zu ergattern.
Ich denke, dass der Preis für diesen Adapter in Ordnung ist.
Nun brauche ich mich wenigstens nicht mehr über das PicoPlug zu ärgern, bzw. bei jeder Kommunikation zu hoffen, dass alles korrekt klappt. ;-)

Gruß
Stefan

scales
02.02.2007, 23:21
also ich find 70 € immernoch ganz schön viel, diese Wlan-Dinger kosten ja auch nur 30 € mehr.
Außerdem braucht man ja auch noch nen Stick für den PC

Handy-Programme zu schreiben ist wenn man einmal angefangen hat eigentlich einfacher als welche fürn PC, weils einfach viel weniger Möglichkeiten gibt.
Und wenn man einmal das Prinzip verstanden hat, braucht man sich nur noch alles zusammenkopieren

Reeper
07.02.2007, 14:07
also ich find 70 € immernoch ganz schön viel, diese Wlan-Dinger kosten ja auch nur 30 € mehr.
Außerdem braucht man ja auch noch nen Stick für den PC


Naja, auf der einen Seite nicht ganz billig. Aber auf der anderen Seite sehr einfach zu bedienen, einfach zu erkennen (über jeden PC erreichbar), klein, stromsparend und mit einer hohen Reichweite.
Der Stick ist eher optional, denn fast jedes modernes Notebook hat BT eingebaut.

Zum Bootloader:

'----------------------------------------------------------------
' (c) 1995-2005, MCS
' Bootloader.bas
' This sample demonstrates how you can write your own bootloader
' in BASCOM BASIC
' VERSION 2 of the BOOTLOADER. The waiting for the NAK is stretched
' further a bug was resolved for the M64/M128 that have a big page size
'-----------------------------------------------------------------
'This sample will be extended to support other chips with bootloader
'The loader is supported from the IDE

$crystal = 16000000
'$crystal = 14745600
$baud = 9600 '38400 'this loader uses serial com
'It is VERY IMPORTANT that the baud rate matches the one of the boot loader
'do not try to use buffered com as we can not use interrupts

$regfile = "m32def.dat"
Const Loaderchip = 32

#if Loaderchip = 32 ' Mega32
$loader = $3c00 ' 1024 words
Const Maxwordbit = 6 'Z6 is maximum bit '
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
#endif


Const Maxword =(2 ^ Maxwordbit) * 2 '128
Const Maxwordshift = Maxwordbit + 1


'Dim the used variables
Dim Bstatus As Byte , Bretries As Byte , Bblock As Byte , Bblocklocal As Byte
Dim Bcsum1 As Byte , Bcsum2 As Byte , Buf(128) As Byte , Csum As Byte
Dim J As Byte , Spmcrval As Byte ' self program command byte value

Dim Z As Long 'this is the Z pointer word
Dim Vl As Byte , Vh As Byte ' these bytes are used for the data values
Dim Wrd As Word , Page As Word 'these vars contain the page and word address
Dim Bkind As Byte , Bstarted As Byte
'Mega 88 : 32 words, 128 pages



Disable Interrupts 'we do not use ints


Wait 10 'wait 100 msec sec
'We start with receiving a file. The PC must send this binary file

'some constants used in serial com
Const Nak = &H15
Const Ack = &H06
Const Can = &H18

$timeout = 100000 'we use a timeout
'When you get LOADER errors during the upload, increase the timeout value
'for example at 16 Mhz, use 200000

Bretries = 10 'we try 5 times
Testfor123:

Bstatus = Waitkey() 'wait for the loader to send a byte

Print Chr(bstatus);

If Bstatus = 123 Then 'did we received value 123 ?
Bkind = 0 'normal flash loader
Goto Loader
Elseif Bstatus = 124 Then ' EEPROM
Bkind = 1 ' EEPROM loader
Goto Loader
Elseif Bstatus <> 0 Then
Decr Bretries
If Bretries <> 0 Then Goto Testfor123 'we test again
End If


Goto _reset 'goto the normal reset vector at address 0


'this is the loader routine. It is a Xmodem-checksum reception routine
Loader:
Do
Bstatus = Waitkey()
Loop Until Bstatus = 0



If Bkind = 0 Then
Spmcrval = 3 : Gosub Do_spm ' erase the first page
Spmcrval = 17 : Gosub Do_spm ' re-enable page
End If


Bretries = 10 'number of retries

Do
Bstarted = 0 ' we were not started yet
Csum = 0 'checksum is 0 when we start
Print Chr(nak); ' firt time send a nack
Do

Bstatus = Waitkey() 'wait for statuse byte

Select Case Bstatus
Case 1: ' start of heading, PC is ready to send
Incr Bblocklocal 'increase local block count
Csum = 1 'checksum is 1
Bblock = Waitkey() : Csum = Csum + Bblock 'get block
Bcsum1 = Waitkey() : Csum = Csum + Bcsum1 'get checksum first byte
For J = 1 To 128 'get 128 bytes
Buf(j) = Waitkey() : Csum = Csum + Buf(j)
Next
Bcsum2 = Waitkey() 'get second checksum byte
If Bblocklocal = Bblock Then 'are the blocks the same?
If Bcsum2 = Csum Then 'is the checksum the same?
Gosub Writepage 'yes go write the page
Print Chr(ack); 'acknowledge
Else 'no match so send nak
Print Chr(nak);
End If
Else
Print Chr(nak); 'blocks do not match
End If
Case 4: ' end of transmission , file is transmitted
If Wrd > 0 Then 'if there was something left in the page
Wrd = 0 'Z pointer needs wrd to be 0
Spmcrval = 5 : Gosub Do_spm 'write page
Spmcrval = 17 : Gosub Do_spm ' re-enable page
End If
Print Chr(ack); ' send ack and ready


Waitms 20
Goto _reset ' start new program
Case &H18: ' PC aborts transmission
Goto _reset ' ready
Case 123 : Exit Do 'was probably still in the buffer
Case 124 : Exit Do
Case Else
Exit Do ' no valid data
End Select
Loop
If Bretries > 0 Then 'attempte left?
Waitms 1000
Decr Bretries 'decrease attempts
Else
Goto _reset 'reset chip
End If
Loop



'write one or more pages
Writepage:
If Bkind = 0 Then
For J = 1 To 128 Step 2 'we write 2 bytes into a page
Vl = Buf(j) : Vh = Buf(j + 1) 'get Low and High bytes
lds r0, {vl} 'store them into r0 and r1 registers
lds r1, {vh}
Spmcrval = 1 : Gosub Do_spm 'write value into page at word address
Wrd = Wrd + 2 ' word address increases with 2 because LS bit of Z is not used
If Wrd = Maxword Then ' page is full
Wrd = 0 'Z pointer needs wrd to be 0
Spmcrval = 5 : Gosub Do_spm 'write page
Spmcrval = 17 : Gosub Do_spm ' re-enable page

Page = Page + 1 'next page
Spmcrval = 3 : Gosub Do_spm ' erase next page
Spmcrval = 17 : Gosub Do_spm ' re-enable page
End If
Next

Else 'eeprom
For J = 1 To 128
Writeeeprom Buf(j) , Wrd
Wrd = Wrd + 1
Next
End If
' Toggle Portb.2 : Waitms 10 : Toggle Portb.2 'indication that we write
Return


Do_spm:
Bitwait Spmcsr.0 , Reset ' check for previous SPM complete
Bitwait Eecr.1 , Reset 'wait for eeprom

Z = Page 'make equal to page
Shift Z , Left , Maxwordshift 'shift to proper place
Z = Z + Wrd 'add word
lds r30,{Z}
lds r31,{Z+1}

#if(loaderchip = 128) Or(loaderchip = 2561)
lds r24,{Z+2}
sts rampz,r24 ' we need to set rampz also for the M128
#endif

Spmcsr = Spmcrval 'assign register
spm 'this is an asm instruction
nop
nop
Return


'How you need to use this program:
'1- compile this program
'2- program into chip with sample elctronics programmer
'3- select MCS Bootloader from programmers
'4- compile a new program for example M88.bas
'5- press F4 and reset your micro
' the program will now be uploaded into the chip with Xmodem Checksum
' you can write your own loader.too
'A stand alone command line loader is also available


'How to call the bootloader from your program without a reset ???
'Do
' Print "test"
' Waitms 1000
' If Inkey() = 27 Then
' Print "boot"
' Goto &H1C00
' End If
'Loop

'The GOTO will do the work, you need to specify the correct bootloader address
'this is the same as the $LOADER statement.

Da ich nur eine Demo-version habe und mich primär mit C beschäftigen will, wäre eine Anschaffung der VV von Bascom nur für den Bootloader für mich sehr unwirtschaftlich ;-)

Ist einer so nett und compiliert mir dieses Programm mit den unten aufgeführten Daten und schickt die files mir per E-mail. Das wäre echt sehr nett. (Habe damals dieses compilierte Programm ebenfalls von einem RN-User erhalten.)

Die gewünschten Veränderungen:
Standard:
Zeile 14 ---> Baudrate: 9600
Zeile 48 ---> Wait 10

Änderungen mit standard wait (10):
Baudrate:
38400
57600
115200
230400
460800

Änderungen mit wait 5
Baudrate:
9600
38400
57600
115200
230400
460800


Das wäre wie gesagt, sehr nett.
Meine E-mail Addresse lautet: real-reeper@web.de

Gruß
Stefan

rXenon
11.02.2007, 18:42
Hi Reeper!
Ich überlege, mir auch diesen Wandler zu kaufen!

Welche Baudraten hast du inzwischen damit hinbekommen?
Außerdem interessiert mich bei welchem Händler du nun bestellt hast?

Wenn es noch etwas interessantes über das Gerät gibt, das ich wissen sollte bevor ich bestelle, lass es mich wissen ;-)

MfG Stefan

PS: ja ich heiß auch Stefan, auch mit "f" \:D/

Reeper
11.02.2007, 19:27
Hallo Vornamensvetter :-)

Bis jetzt läuft er noch mit 9600. Bisher hat mir keiner diesen Code neu compiliert, werde aber nun mit Megaload einen Versuch starten. Erkennen tut das Programm den Atmel, aber ich fange mit C und uc erst nach den Klausuren richtig an (in Semesterferien).
Offiziell werden min. 230400 unterstützt.
Gekauft habe ich es wie o.g. hier: http://www.sly.de/artikeldet.php?su.....ac59c4a990f4a0f5fae96a374

Die Stromversorgung klappt mit 5V vom 78S05 reibungslos, braucht also nicht mehr :-)

Gruß
Stefan

veit
11.02.2007, 19:39
da ich das hier grad zufällig seh:
was für probleme gabs denn mit dem pico-plug?
hab mir den vor ein paar tagen auf ebay für 19 euro incl. porto gekauft ...

das mit der handyprogrammierung ist wirklich nicht so schwer, naja ich hab ein windows mobile handy und da gibts für visual basic nen kompletten emulator und alles ... supereinfach!

naja dann hoff ich mal das ich mit dem pico zurechtkomme weil über 70 euro is schon recht happig für mich 8-[

Reeper
11.02.2007, 19:52
Der PicoPlug war bei mir nicht zuverlässig (funktionierte eher sporadisch oder blinkte nur rot, da irgendeine Fehler oder Wackler vorkam).
Zudem war die Reichweite absolut unbefriedigend (max 3-4 Meter).
Der letzte Grund war die Stromversorgung.
Der PP-Adapter lieferte im unbelasteten Zustand bis zu 10V, da konnte mn sich schon denken, wieviel der PP wollte. Ich habe es mit geregelten 5 und 6 Volt versucht, klappte nicht.

Gruß
Stefan

Pascal
16.02.2007, 10:40
@ Reeper: Ich will mir demnächst auch diesen BTS1009 kaufen. Jetzt stellen sich mir ein paar Fragen. Muss ich unter windows xp dafür extra Treiber installieren oder geht das auch so? Weißt du, ob man das Teil auch unter Linux verwenden kann? Ich hab dazu im Internet nichts zuverlässiges gefunden.

schonmal danke im vorraus

Reeper
16.02.2007, 17:48
Hallo Pascal,
Linux habe ich nicht, da her kann ich dir dabei nicht helfen.
Für WinXP brauchst du keine extra Treiber, nur für die Einstellungen (Baudrate,...) gibt es eine extra .exe auf der mitgelieferten CD.
Für die eben genannten Änderung der Einstellungen brauchst du keine RS232 Schnittstelle am Rechner, geht absolut problemlos per Bluetooth.

Gruß
Stefan

Reeper
18.03.2007, 22:24
Kurzes Update:

Mit der Hilfe von Jon, der so nett war, mir die Bootloader zu compilieren, konnte ich nun andere Baudraten versuchen.

MCS Bootloader unterstützt max. Baudrate von 115200 (v2.0), dabei gibt es keine Probleme :-)

Gruß
Stefan

pongi
06.04.2007, 16:16
Hab seit zwei Tagen da besagte Bluetooth-Modul, und ich muss sagen, dass ich absolut zufrieden bin. Die Konfiguration ist in 2 Minuten geschafft, und ist dank der ausführlichen Beschreibung sehr einfach. Durch das erstellen eines virtuellen COM-Ports ist die Kommunikation auch problemlos in Hyper-Terminal oder sonstige Programme möglich, und bedarf keine Änderungen zB in einem bereits erstellten Programm (ausser die Änderung der COM-Adresse).
Die Reichweite ist auch mehr als zufriedenstellend, bei mir hat es erst im Keller Probleme gegeben, aber da wurde auch alles empfangen un gesendet, nur langsamer (und die Gegenstelle war zwei Stocwerke höher, Decke aus Stahlbeton).

Also einfach nur empfehlenswert :D

Otti20vt
10.04.2007, 11:31
Danke für diesen Tollen bericht O:) Werde mir wohl auch mal so ein Adapter bestellen. :-k

Reeper
10.04.2007, 16:44
Also ich bin immernoch vollen Mutes mit dem BT-Adapter :-)
Solide verarbeitet, leicht, schnell konfiguriert und eben mit 5V lauffähig.

Cybernix
19.04.2007, 19:27
Hi,

unterstützt das Teil auch den Aufbau von Pico- oder Scatternetzen?

Dann könnte man vielleicht mit ein paar zusätzlichen, stationären Bluetooth Geräten die Reichweite des mobilen Roboters erhöhen.

Grüße,
Cybernix

derSoe
26.04.2007, 14:39
Hallo!
Mal 'ne kleine Frage:
Wie sieht es denn mit der Stromaufnahme von den Dingern aus? Wie groß ist sie denn (etwa) beim Senden und beim Empfangen?
1000 Dank für eure Antworten
lieber Gruß
Sören

pongi
26.04.2007, 14:58
Einen genauen Wert kann ich dir leider nicht sagen, ich betreibe aber bei meinem Roboter den Bluetooth-Adapter und die ganze Steuerelektronik mit einem Low-Drop Spannungsregler, ohne Probleme zu haben.

Korrigiert mich wenn ich falsch liege: die Sendeleistung bei solchen Geräten darf doch nicht größer sein als 10mW oder? Das wären dann bei 5V 2mA für senden/empfangen, plus der Strom was die Steuerung braucht. Ich glaub nicht, dass man da mehr als 100mA rechnen sollte.

derSoe
26.04.2007, 15:07
Danke für deine fixe Antwort!
Den Wert habe ich auch schon in einem Datenblatt gefunden... nur steht da leider 100mA max. Für mich wäre es interessant, was das Gerät frisst, wenn er Gerade nix zu tun hat. Denn permanent 100mA an einer Batterie ist für mein Projekt ein bisserl viel :-(

pongi
26.04.2007, 15:14
Ist ne gute Frage. Ich weiss nicht in wie weit der uC im Adapter in ein Sleep-Modus geht, wenn gerade nicht gesendet wird, aber eine Verbindung schon hergestellt ist. Die zwei LEDs brennen aber da auf alle Fälle... Ausserdem ist ein MAX232 auch integriert, der braucht auch seinen Strom, und kann in kein Sleep-Modus gehen.

pongi
26.04.2007, 15:57
Ich hab dir die Daten aus dem mitgeliefertem Datenblatt ausgesucht:
Senden: 115mA
Empfangen: 75mA
Standby: 15mA

Hoffentlich sind damit deine Fragen beantwortet.

derSoe
26.04.2007, 20:53
Toll!
Super! Vielen Dank! Hast mir damit sehr weiter geholfen!
Lieber Gruß
Sören

WStefan
27.08.2007, 21:34
Moin moin

sagt mal: wenn ich das richtig im Kopf habe muss man doch bei Bluetooth erst eine Verbindung zwischen Gerät und PC herstellen, bevor man Daten austauschen kann, bzw. der Com-Port "verbunden" ist.

Liege ich damit richtig, und wie baut man so eine Verbindung auf?
Wäre es auch möglich eine Bluetoothverbindung zwischen 2 verschiedenen AtMegas herzustellen? (um z.B. Daten zwischen ner mobilen Bedieneinheit und nem Roboter auszutauschen)

MfG
WStefan

pongi
28.08.2007, 08:52
Das ist richtig, es muss zuerst eine Verbindung aufgebaut werden.

Man kann aber den BT-RS232 Wandler so konfigurieren, dass er die Verbindung automatisch aufnimmt. Bei mir zB wird die Verbindung automatisch aufgenommen, wenn ich am PC den virtuellen COM-Port öffne.

Wenn Du zwischen zwei Atmegas kommunizieren willst, dann musst Du einen Wandler als Master und einen als Slave einstellen, und die gegenseitige MAC-Adressen angeben (das kannst Du am PC einmal konfigurieren). Danach nehmen die beiden Wandler nach dem Einschalten die Verbindung automatisch auf.

Steht aber im Datenblatt ausführlich drin, wie man das macht.

MfG

pongi

WStefan
28.08.2007, 12:14
Sehr gut...

Ich denke mal dann bestell ich mir da welche von...

Danke!!
Stefan