Kann ich anstelle von ATmega328P AU den cc2541 BLE von TI als Mikrocontroller verwenden, um Operationen/Verarbeitungen durchzuführen, um Kosten zu sparen?

Ich verwende arduino pro mini (das Atmega328p AU enthält ) zusammen mit cc2541 (HM-10) , um Daten über BLE zu verarbeiten und auf das Smartphone zu übertragen. Ich frage mich, ob ich cc2541 selbst zur Datenverarbeitung verwenden kann, um Arduino aus der Schaltung zu entfernen, damit ich Strom und Geld sparen kann. Ich bin ziemlich neu auf dem Gebiet der Elektronik. Bitte schlagen Sie alle Möglichkeiten vor, um dies zu erreichen.

Wenn Sie GPIO-Pins zur Verfügung haben und den Code schreiben können, können Sie das sicher tun.
@Whiskeyjack, ich weiß, was ich codieren muss, aber kann ich diesen Code auf cc2541 hochladen? Wie kann ich das machen?
Ich glaube, Sie können HM-10 nicht "benutzerdefinierten Code" geben. Sie haben einen bestimmten Satz von AT-Befehlen, die Sie über UART / USB senden können, und erhalten Ergebnisse auf demselben Kanal.
Danke @dastaan, wie kann ich dann Arduino aus meiner Schaltung entfernen, um Strom zu sparen? Gibt es Möglichkeiten?
Ich weiß nicht, ob dieses HM10-Modul programmiert werden kann (weil es eine begrenzte Anzahl freiliegender Pins hat), aber ich bin mir auch hier nicht sicher. Wenn Sie sich Sorgen um die Stromversorgung machen, können Sie Ihren Mikrocontroller jederzeit in den Ruhezustand versetzen, wenn er nicht arbeitet. Das spart Ihnen viel Batteriesaft. Wenn Sie bereit sind, alles zu geben, können Sie mit CC2541 Ihr eigenes benutzerdefiniertes Board entwerfen und Ihren Code darauf hochladen. Dies wird viel Geld sparen, wenn Sie für eine große Menge gehen, aber für das Hobby würde ich Ihnen nicht raten, diesen Weg zu gehen.
Laut TI soll es möglich sein, eine Firmware zu flashen, die eine Entwicklung mit BTool erlaubt.

Antworten (2)

TL;DR-Version -- wenn Sie versuchen, dies nur für einen Chip und nur für sich selbst (dh kein Produkt) zu tun, lohnt es sich wahrscheinlich nicht, da Sie mindestens 50 US-Dollar für einen Programmierer ausgeben müssen.

Der CC2541 ist eine Kombination aus einem BLE-Radio und 8051 mit entweder 256K oder 128K Flash und 8K RAM. Es verfügt über 23 GPIO-Pins, von denen einige als I²C-, SPI-, UART- und Programmierschnittstelle umfunktioniert werden können

Der CC2541 kommt von TI mit Firmware, die HCI (Host Controller Interface) unterstützt, das sich auf einer niedrigeren Ebene als AT-Befehle befindet. Einige Anbieter, wie HMSoft, haben den CC2541 genommen, ihn auf eine Platine gepackt und eine AT-Befehlsschnittstelle auf dem Stack von TI bereitgestellt. Das ist das HM-10 auf deinem Schild. Der HM=10 kann separat erworben werden, zum Beispiel hier .

Ja, Sie können Anwendungscode auf einem CC2541 platzieren und alle seine E/A-Funktionen für Ihren eigenen Gebrauch nutzen. Es kann mit zwei der GPIO-Pins mit einem TI-Programmierer namens CC Debugger neu programmiert werden, der 50 US-Dollar kostet .

Das Problem ist, dass die gesamte Dokumentation von TI davon ausgeht, dass Sie den IAR Embedded Workshop für 8051 verwenden, der fast 3000 US-Dollar kostet. (IAR hat eine kostenlose Testversion, die nur 30 Tage gültig ist.) Ich weiß nicht, wie schwer es wäre, einen der kostenlosen 8051-Compiler zu verwenden.

Ich habe das HM-10 nicht benutzt. Stattdessen habe ich das BLE113 von Silicon Labs (ehemals Bluegiga) verwendet , ein weiteres kleines Modul mit einem CC2541 in einer Abschirmdose, einigen Kondensatoren und einer Antenne, das genauso viel kostet wie das HM-10 (12 $).

Der Vorteil des BLE113 (neben der Tatsache, dass er abgeschirmt und FCC-zertifiziert ist) besteht darin, dass er, anstatt den 8051 in C zu programmieren, eine Sprache namens BGScript bereitgestellt hat, die eine BASIC-ähnliche Syntax ist – Sie können buchstäblich eine BLE-Anwendung schreiben in ein paar Dutzend Zeilen Code.

Hier ist der vollständige BGScript-Code für ein drahtloses BLE-Thermometer, das die Temperatur einmal pro Sekunde an einen Host zurücksendet:

dim tmp(5)
dim celsius
dim offset
dim addr(6)

#init gap mod, bonding and start freerunning times on system boot
event system_boot(major ,minor ,patch ,build ,ll_version ,protocol_version ,hw )

    #Get local BT address
    call system_address_get( )(addr(0:6))

    # Write BT address to DI service serial number string
    call attributes_write(xgatt_dis_2a25,0,6,addr(0:5))

    #Set device to advertisement mode and allow undirected connections
    call gap_set_mode(gap_general_discoverable,gap_undirected_connectable)

    #Allow pairing
    call sm_set_bondable_mode(1)

    #set timer to periodically create an interrupt with interval of 1s
    call hardware_set_soft_timer(32768,0,0)
end

#timer expired
event hardware_soft_timer(handle)
    #Request for ADC reading
    call hardware_adc_read(14,3,0)
end

#ADC measurement ready
event hardware_adc_result(input,value)
    offset=-1600

    # ADC value is 12 MSB
    celsius = value / 16
    # Calculate temperature
    # ADC*V_ref/ADC_max / T_coeff + offset
    celsius = (10*celsius*1150/2047) * 10/45 + offset

    #set flags
    tmp(0:1)=0      
    #set as float
    tmp(1:4)=float(celsius, -1)

    #write the temperature information to the GATT database
    call attributes_write(xgatt_htm_2a1c,0,5,tmp(0:5))      
end

event connection_disconnected(handle,result)
    #in case if disconnect, return to advertisement mode
        call gap_set_mode(gap_general_discoverable,gap_undirected_connectable)
end

(Es gibt auch eine XML-Datei, gatt.xml, die alle GATT-Dienste und charakteristische UUIDs usw. enthält.)

BGScript hat Zugriff auf alle Peripheriegeräte des Chips, wie die GPIO-Pins, I²C, SPI und UART und im obigen Beispiel den ADC. Sie müssen keine 8051-Entwicklungsumgebung kaufen, da sie Ihnen kostenlos eine für BGScript zur Verfügung stellen. Sie müssen jedoch immer noch den 50-Dollar-TI-Programmierer kaufen.

Heutzutage stellt Texas Instruments (TI) sein Code Composer Studio (CCS) kostenlos zur Verfügung. Es ist eine IDE mit vollem Funktionsumfang, die eine große Auswahl an TI-Prozessoren unterstützen kann. Das Originalplakat stellte eine klassische "Öffne-eine-Dose-der-Würmer"-Frage, die zu empfehlen ist. Die Realität ist, dass ein „einfacher“ BLE-Transceiver von einem komplexen System-on-a-Chip (SoC)-IC gesteuert wird. Es ist wirklich eine komplette Computerplattform auf einem Chip mit eigenem Echtzeit-Betriebssystem (RTOS), um Ihnen den Zugriff auf die Funktionen oder Peripheriegeräte zu erleichtern, mit denen der Prozessor verbunden ist, wie z. B. das HF-Modul und alle Schalter oder Sensoren.

Das Programmieren eines Arduino ist im Vergleich zum Programmieren eines SoC ein Kinderspiel, aber dann kommt eine Zeit im Leben eines Entwicklers, in der er sich erneut einer bergigen Lernkurve stellen muss, um sich zu verbessern.

Leider unterstützt Code Composer Studio seit den heutigen Updates weder den CC2541 noch irgendetwas anderes mit einem 8051-CPU-Kern. Ich habe gerade heruntergeladen und aktualisiert, um sicher zu sein.
Haben Sie konkrete Beweise dafür, dass CCS den CC254x unterstützt? Diese Teile stammen aus einer Anschaffung und verwenden einen 8051-Kern anstelle eines traditionellen TI-Prozessorkerns. Ein als Antwort falsch geposteter Kommentar hat heute behauptet, CCS unterstütze CC2541 nicht . Könnten Sie Ihren Vorschlag entweder unterstützen oder zurückziehen?