Schlagwort-Archive: BLE

Roboter steuern per Bluetooth Smart

In unserer gestrigen Session haben wir ein TinySine HM-10 Modul verwendet, um einen kleinen Roboter über Bluetooth LE per App zu steuern.

Hier zwei Fotos vom Roboter:

Zu sehen ist die Plexiglas-Grundplatte, auf deren Unterseite zwei DC-Motoren angeschlossen sind, darüber der Batterie-Pack, ein L298 H-Brücken-Modul, ein Arduino mit Shield zum Anschließen von u.a. Servo-Motoren und auf letzterem das Bluetooth-Modul.

Eigentlich ist der entsprechende Slot vorgesehen für ein Serial Wifi-Modul, aber das TinySine-Modul passt auch – wenn man links und rechts einen Pin überstehen lässt.

Im Arduino-Code muss die SoftwareSerial-Bibliothek eingebunden und mit Pin 1 und 2 als empfangenden bzw. sendenden Pin initialisiert werden. Nun kann man sich mit der Nordic Semiconductor nRFGo-App auf dem Smartphone mit dem HM-10 Modul über BLE verbinden und Steuerbuchstaben an den Arduino funken, die letzterer dann auswerten und zur Steuerung der Motoren heranziehen kann.

Hier ein YouTube-Video von einer Demonstrationsfahrt:

Sentient Light gewinnt Wettbewerb „Mensch und Technik“ VDI

Genau wie im Vorjahr hat der Verband Deutscher Ingenieure (VDI) Studenten und Studentinnen der Ingenieurwissenschaften an Berliner und Brandenburger Universitäten und Hochschulen zur Teilnahme am Wettbewerb Mensch und Technik aufgefordert. Bis zum 30. September konnten in Form eines Posters und einer Kurzbeschreibung Projekte eingereicht werden die einen klaren Bezug zu Mensch und Technik haben.

Und so nahmen wir den Wettbewerb zum Anlass die längst überfällige Präsentation unseres Projektes anzufertigen. Das ebenfalls für die Teilnahme geforderte Plakat kann demnächst im Baumhaus bewundert werden.

2016_11_17-VDI_Mensch_und_Technik_Poster_v4_de

Sentient Light Poster (klicken für größere Ansicht)

Mitte November bekamen wir die Mitteilung vom VDI dass unser Team zur Preisverleihung eingeladen ist – yeah! Am 25. November fand dann im Ludwig Erhard Haus am Zoologischen Garten die Preisverleihung statt.

SONY DSC

Team Sentient Light und Prof. Hausburg

Zu Beginn der Veranstaltung wurden zunächst die besten Absolventen und Absolventinnen technischer Studiengänge an Berliner und Brandenburger Hochschulen und Universitäten geehrt. Die Oratoren des VDI betonten in ihren Reden die Herausforderungen, durch Technik die Probleme einer modernen und vernetzen Stadt abzugehen und zu lösen. Die Präsidentin der Technischen Hochschule Brandenburg, Prof. Dr. Wieneke-Toutaoui, verwies auf die heutigen Möglichkeiten, als Student eines technischen Studienganges, die Welt ein Stück weit besser zu machen und verwies in dem Zusammenhang auf die zwar gestiegene allerdings noch bei Weitem nicht zufriedenstellende Anteil weiblicher Studenten in Ingenieursstudiengängen.

Die anderen Redner bestärkten die Studenten, ihre Ideen durch Unternehmergeist zu realisieren. Ein Zitat von Reid Hoffman bliebt besonders im Gedächtnis:

„Wenn dir die erste Version deines Produktes nicht peinlich ist, hast du es zu spät auf den Markt gebracht.“

– Reid Hoffman, Co-Founder von LinkedIn

Im Anschluss sollten die drei bestplatzierten Teilnehmer des Wettbewerbs ausgezeichnet werden. Zu diesem Zeitpunkt war usn noch nicht klar, welchen Platz wir belegt hatten.

In umgekehrter Reihenfolge wurden die Preisträger auf die Bühne gebeten: Den dritten Platz belegten zwei Studenten die mithilfe eines Aldebaran Nao Roboters natürlich Sprache in Gebärdensprache übersetzen. Auf dem zweiten Platz landete das Projekt eines einzelnen Teilnehmers, welches zum Ziel hatte, Fluglärm durch die Verwendung von Linern zu reduzieren.

And the winner is…

Sentient Light konnte sich in der Jurywertung durchsetzen und wurde mit dem ersten Platz ausgezeichnet. Keiner von uns hatte zu Beginn mit diesem Erfolg gerechnet. Umso mehr freuen wir uns über diese Ehrung.

In einer kurzen Ansprache beschrieb Professor Hausburg das Projekt als die Integration einer technischen Lösung in ein sozial-dynamisches Umfeld, welche durch seine Dynamik die Interaktionen der beteiligten Personen widerspiegelt.

Im Anschluss an die Preisverleihung hatten die drei Teams die Gelegenheit, ihre Konzepte an einem Stand den anderen Gästen zu demonstrieren. Das steigende Interesse an unserem Projekt nehmen wir zum Anlass, die einzelnen Komponten im Detail vorzustellen. Teil 1: die Projektvision.

Dokumentations-Mangel beim CC2541 Lack of documentation for the CC2541

Der CC2541 wird von Texas Instruments dediziert für die Verwendung von BLE angepriesen. Man darf erwarten, dass dies entsprechende, BLE-spezifische Anpassungen in Hardware beinhaltet. Beim Blick ins Datenblatt (S.3) findet man diesbzgl. erstmal nur die Link Layer Engine (LLE), welche dem Entwickler den low-level-Funkteil im 2.4GHz-Bereich abnimmt (GFSK,FIFO,etc.) und entsprechende Konfigurations- bzw. Steuermöglichkeiten über die dedizierten RF Register bietet. Sowohl die LLE, als auch die RF Register sind aber auch in anderen SoCs der CC253x/4x-Reihe enthalten. Im Grunde ist das Block-Diagram aller dieser SoCs identisch, obwohl sie für verschiedene Funkstandards angepriesen werden, was die Frage aufwirft, worin sich die SoCs überhaupt unterscheiden. Könnte es Hardware-Teile geben, die nicht im Datenblatt dokumentiert sind ?

Die Antwort gibt der User Guide (Rev.F): Die LLE kann in verschiendenen Modi betrieben werden – proprietär, d.h. nach eigenem Gutdünken Senden und Empfangen, oder im BLE-Modus, der (bisher) nur durch die Closed Source-Bibliotheken für IAR bedient werden kann (die auch nur mit der IAR Workbench funktionieren). Wird der Modus nach dem Setzen des LLE Enable Bits geändert, hat er keinen Effekt mehr, heißt es im User Guide weiter (S.301), was unterstreicht, dass der Funkteil des SoC dann hardwareseitig anderst funktioniert. Weder im Datenblatt noch im User Guide ist dieser BLE- Hardware-Teil dokumentiert.

Am Rande bemerkt, sieht das LLE Control Register für den Modus überdies zwei Bit vor, was vier, statt der zwei dokumentiert möglichen Betriebsmodi bedeutet.

Gewöhnliche 8051-Programme laufen nicht auf dem CC2541

Mit dem freien 8051-IDE MCU8051IDE haben wir versucht, ein Hallo Welt-Programm auf den CC2541 zu flashen. Das IDE hat uns aus unserem Hallo Welt-Assembler-Code ein 8051-Binärprogramm erzeugt, das wir mit cc-tool auf den CC2541 flashen konnten. Leider hat das Programm dort nicht das getan, was es sollte: eine LED blinken zu lassen.

Grund dafür ist aller Wahrscheinlichkeit nach, dass im CC2541 kein Standard-8051 verbaut ist. Wie im Datenblatt sowie im User Guide nachzulesen ist, gibt es einige Änderungen:

  • teilweise geänderte Adressen der Register im RAM
  • zusätzliche Register für zusätzliche Hardware-Funktionalitäten
  • evtl. Notwendigkeit für Setup-Instruktionen (z.B. Richtung) vor der Ansteuerung von I/O-Pins
  • eine Instruktion pro Takt, anstatt 12 Takte pro Instruktion

Um ein Hallo Welt-Programm auf dem CC2541 zum Laufen zu bekommen, wird es daher notwendig sein, direkt mit der Entwicklung in C mit dem sdcc C-Compiler zu beginnen. sdcc verfügt über eine cc2530.h, die aus einem User Guide abgeleitet wurde, das für CC253x und CC254x gleichermaßen gilt. Sie sollte bei Einbindung die Nutzung aller CC2541-Register sowie der angeschlossenen Funktionalitäten ermöglichen.

Ein Programm in den CC2541 flashen How To

Der Bluetooth 4.0-fähige 8051-Chip CC2541 von Texas Instruments, der auf dem Tinysine HM-10 Modul zu finden ist, besitzt eine Schnittstelle zum hardwarenahen Debuggen, den Debug Port, der aus den zwei Leitungen Debug Clock (DC) und Debug Data (DD) besteht. Die Besonderheit bei diesem Port im Gegensatz zu RS-232 oder SPI besteht darin, dass die Kommunikation in beide Richtungen – Daten vom PC zum Chip und umgekehrt – über denselben Pin erfolgt (und daher auch nicht gleichzeitig stattfinden kann). Takt- und Daten-Pins sind auf dem HM-10 herausgeführt, allerdings nicht auf die 2,54mm-Pins der TinySine Ausbrech-Platine. Sie lassen sich aber leicht nachrüsten (Foto wird nachgereicht). Wenn DC, DD, Reset und GND herausgeführt sind, kann man diese Pins an den CC Debugger von Texas Instruments anschließen. Der SmartRF Programmer hat im Test leider nicht funktioniert, zumindest nicht unter Windows, obwohl er es eigentlich sollte. Der CC Debugger ist sogar offiziell Open Hardware, der Schaltplan ist auf der Seite von Texas Instruments zu finden. Seine Funktionsweise ist im zugehörigen User Guide dokumentiert. Die zum Programmieren der Chips erforderliche Software lässt sich ebenfalls dort herunterladen (wenn man einen TI-Account hat). Nachbauten des SmartRF Programmer lassen sich günstig auf eBay erwerben. Zur Programmierung unter Linux steht cc-tool zur Verfügung. Links:

2x TinySine BLE-Module am Raspberry Pi How To

In der gestrigen #tt-Session haben wir u.a. versucht, zwei BLE-Module gleichzeitig an einen Raspberry Pi anzuschließen. Nachdem schon beim letzten Mal die Kommunikation mit einem einzelnen Modul funktioniert hat, wollten wir es mit zweien versuchen, um schon mal eine „Di-Angulation“ per BLE versuchen zu können, bis wir ein drittes BLE-Modul haben.

Die Schwierigkeit beim Anschließen von zwei Modulen liegt darin, dass eigentlich pro Modul ein UART benötigt wird, der Raspberry aber nur einen hat. USB-Serial-Adapter konnten wir nicht nehmen, da diese mit CMOS (5V) operieren, aber TTL (3.3V) benötigt wird. Also haben wir versucht, mit GPIO-Pins Transistoren zu schalten, welche die RX- und TX-Pins jeweils zum gewünschten BLE-Modul durchschalten.

Hat aber nicht geklappt. Warum nicht? Vielleicht, weil Bipolartransistoren in Gegenrichtung sperren (also wie eine Diode wirken) und so ein einmal auf High gesetzter Pin nicht mehr auf Low gezogen werden kann. Das würde allerdings eher dem Verhalten eines FET oder IGBT entsprechen. Bipolartransistoren schalten bei Strömen. Wenn sie am Ausgang (Emitter) nicht mit einer Senke (Erde,Minuspol) verbunden sind, fließt möglicherweise nicht genug Strom, um den Transistor gängig zu schalten.

Nächster Ansatz: Pull-down Widerstände, um Pegel auf Empfängerseite auf Low zurückzuziehen.