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.
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.
Whiskeyjack
Perrie
dhruvvyas90
Perrie
Whiskeyjack
CL.