mySmartUSB goes Bluetooth

Dieser Artikel beschreibt, wie man ein Bluetooth-Modul mit einem ISP-Programmer (hier: das ‘mySmartUSB-Modul’ der Firma Laser & Co. Solutions GmbH) verbindet und auf diese Weise Mikrocontroller via Bluetooth mit dem PC programmieren und zusätzlich Daten mit dem Mikrocontroller und dem PC austauschen kann. Diese Möglichkeit, beides kabellos zu bewerkstelligen (Mikrocontrollerprogrammierung  -und RS232-Datentransfer) , dürfte relativ einzigartig sein!

Ausgangslage

Manchmal wäre es ‘Nice-to-have’, manchmal geht es aber auch nicht anders:  man möchte das Kabel zwischen Mikrocontroller und PC loswerden. In unserem Fall sollte ein mobiler Roboter per Funk vom PC programmiert und später dessen Sensordaten im Betrieb an diesen PC übertragen werden.

Warum überhaupt Bluetooth?

  • es gibt kostengünstige USB-Bluetooth-Dongles für den PC (wenige Euro)  (PC-seitig braucht man also nichts entwickeln!)
  • Bluetooth simuliert eine serielle Schnittstelle (COM-Port) am PC – man kann also alle bisherigen Tools und  Programme weiterverwenden  (PC-seitig bleibt also alles beim Alten!)
  • die Reichweite ist akzeptabel (100-150 m , Bluetooth class1)
  • es gibt kostengünstige (ca. 15 €) Bluetooth-Module mit 3.3V TTL UART-Schnittstelle (4 Pins werden davon benutzt:  3.3V VCC,  GND,  TX und RX)

Warum mySmartUSB als ISP-Mikrocontroller-Programmer?

  • er unterstützt die gängigsten Programmierprotokolle (AVR910/AVR911)
  • einziger ISP-Programmer (meines Wissen), der auch als UART-Bridge fungieren kann und diese ist dazu auch noch per UART-Kommando schaltbar(!) (mehr dazu unten) – den USB-zu-UART Konverter (CP2102) brauchen wir hier jedoch nicht

Verwendete Komponenten

  1. myAVR mySmartUSB (v2.10) zur µC-Programmierung/UART Datentransfer mit diesem
  2. myAVR Board mit ATmega168
  3. Bluetooth-Modul BTM220
  4. 3.3V Spannunsgregler (LF33CV), 2 Elkos, 4 Widerstände, 1 LED, 1 IC (74HCT14N) für den Bluetooth-Adapter

Schritt 1 :  Bluetooth-Adapter für mySmartUSB bauen

Für diesen Zweck wird hier das Rayson Bluetooth-Modul ‘BTM220A’ verwendet, welches eine UART-Schnittstelle verwendet. Da dieses Modul jedoch mit 3.3V Spannungsversorgung arbeitet, wird ein 3.3V Spannungsregler sowie ein 3.3V zu 5V TTL Pegel-Wandler (für RX/TX) eingesetzt. Die genaue Adapter-Schaltung kann z.B. dem Blog von Martin Hänsler entnommen werden. Zur Pegel-Wandlung der TX- bzw. RX-Leitungen wird dort ein invertierendes Schmitt-Trigger IC verwendet, ein Spannungsteiler sorgt bei der RX-Leitung für den 3.3V Level.

Nach einer nachmittaglichen Bastelarbeit könnte das vollständige Bluetooth-Modul dann z.B. so aussehen 🙂

bluetooth.jpg

Ergebnis: Bluetooth-Modul mit 5V TTL UART (mit vier Anschlußpins: 5V VCC, GND, TX und RX)

Schritt 2 :  TX und RX am mySmartUSB suchen

Im nächsten Schritt soll mit diesem Bluetooth-Modul ein ATmega168 auf einem myAVR Board programmiert werden können (natürlich über Bluetooth). Zusätzlich soll aber auch das ATmega UART-Modul mit dem PC über Bluetooth angebunden werden, so dass man kabellos Daten mit dem Mikrocontroller austauschen kann. Für beide Zwecke bietet sich die ‘mySmartUSB-Tocherplatine‘ des myAVR-Boards geradezu an, da es über einfache UART-Kommandos zwischen Programmier- und Datenmodus umschalten kann.

Ein Problem muss allerdings noch gelöst werden: der Programmer verfügt offensichtlich nur über einen USB-Anschluß als Programmierschnittstelle, die TX/RX-Leitungen zum Programmer hin müssen also ausfindig gemacht werden -vom CP2102-USB-zu-seriell Konverter Baustein ausgehend findet man RX an Pin5 und TX an Pin4 der mySmartUSB-Steckpfosten links:
mysmartusb_pinout.jpg
(Anmerk.:  in der mySmartUSB Dokumentation findet man nur die rechten TX und RX Pins für die UART-Bridge – diese können aber nicht zum programmieren sondern nur für den Datenaustausch verwendet werden).
mysmartusb.jpg

Die benötigte 5V Spannungsversorgung für den Spannungsregler des Bluetooth-Moduls muss man sich ggf. über das myAVR-Board holen – ohne USB-Anschluß scheint der Programmer nur etwa 4V über das myAVR-Board zu bekommen.

Schritt 3 :  mySmartUSB und Bluetooth-Adapter verbinden

Dann kommt der spannende Augenblick beide Module miteinander zu verbinden 🙂
Wichtig: RX vom Bluetooth-Modul geht auf TX vom mySmartUSB  (was der eine sendet, muss der andere empfangen)

mysmartusb_bluetooth.jpg

Und siehe da!  Ein erstes Austesten mit den bisherigen myAVR-Tools und Programmen zeigt : alle Funktionen laufen wie erwartet!

Im nächsten Schritt werde ich wohl die mögliche Reichweite dieses Bluetooth-Moduls austesten – 100 Meter im Freien sollten damit machbar sein 🙂

Fazit:  …ich bin mir sicher:  so ein fertig aufgebautes Bluetooth-Modul wäre garantiert eine ideale Ergänzung des myAVR-Sortiments   😉

2 thoughts on “mySmartUSB goes Bluetooth”

  1. Hallo Alexander,

    über die Programmierung eines Mikrocontrollers per Bluetooth habe ich mir auch schon den Kopf zerbrochen. Zumal ich ja schon einen Bluetooth-Adapter in meiner LED-Steuerung zur Reglung der RGB-Einstellung verwende. Ich wollte das Problem mit Hilfe des Arduino-Bootloaders lösen. Dieser erwartet nach einem Reset am Mikrocontroller die Übertragung des Programms über die serielle Schnittstelle des ATmegas, an der ohnehin schon mein Bluetooth-Adapter hängt. Nur muss erst mal ein Reset am ATmega ausgelöst werden. Dies könnte über einen Portausgang des ATmegas selber ausgelöst werden. Anschließend muss das Programm über Bluetooth folgen. Müsste eigentlich funktionieren. Probiert habe ich es allerdings noch nicht 🙂
    Deine Lösung finde ich auch nicht schlecht, nur dass ein relativ teurer ISP-Programmer dazu dauerhaft in der Schaltung eingesetzt wird, finde ich nicht so gut.

    Tolles Projekt!!!

    Viele Grüße
    Martin Hänsler

Leave a Reply

Your email address will not be published. Required fields are marked *

IMPORTANT! To be able to proceed, please enter the magic word 'nagaed' so we know hat you are a human)

Enter the magic word:
Please leave these two fields as-is: