I've been reading around various sources trying to figure out how to measure a battery voltage on a PSoC 4 BLE running from a CR2032. We've all seen the 101 video which talks about adding a BAT GATT service. This is very useful but the tutorial just simulates voltage fluctuations with an interrupt driven counter rather than detailing best practices for physical battery voltage determination.
I'm fairly new to PSoC BLE and was a little disappointed when I did not find a "pre-rolled" battery voltage level component in Creator. I'm sure this is a common requirement amongst developers.
I thought it would be a good idea to invite comments on the topic, encourage others to pitch in and collectively come up with an approach which gives reasonable accuracy with low power consumption and price.
My ideal CR2032 based approach would have the following primary requirements:
- Run on PSoC 3 BLE
- Have two battery states: OK and LOW (<2.5v or thereabouts)
- Require no external components.
- Have minimal power consumption given a few hours between measurements.
I have been working on a BLE project with the CY8CKIT-042-BLE Pioneer Kit, and now I am in the process of making an Android Application. I would like to know if it's possible to read the RSSI value of a device after connecting to it.
I know that you can read the RSSI when scanning for devices, but once you connect to one of them, I didn't see an option to get its RSSI.
In the CySmart App there is no indication of the RSSI once you connect to the device.
Is the solution in the Android Studio code? Or perhaps you could send the RSSI as a characteristic with notifications?
Thanks in advance,
Hi, i have two nodes, one of them, as a SERVER (Pripheral) an other as CLIENT (CENTRAL), in the SERVER, i update some sensor datas with:
And i want to read this values in the CLIENT, the connect is succesfully, but i have some problems when i read the data. The connection it is OK, later discover the GATT client in the server, and when is Discovered:
I read the value with:
range.endHandle = 0x0030;
uuid.uuid16 = address;
readByTypeReqParam.range = range;
readByTypeReqParam.uuid = uuid;
readByTypeReqParam.uuidFormat = 0x01;
apiResult = CyBle_GattcReadUsingCharacteristicUuid(connHandle, &readByTypeReqParam);
Later i read the value with:
readResponse = *(CYBLE_GATTC_READ_RSP_PARAM_T *) eventParam;
All OK, but if i want to extract this code in a function, it doesn´t work it return to me: apiResult = CyBle_GattcReadUsingCharacteristicUuid(connHandle, &readByTypeReqParam);
Anyone know where it is the problem?
Thanks for allShow Less
In my system, there are two i2c slave, and I've looked into the example of the CY5672 source code, the i2c source code seems does not simple enough for newbie like me. How to add another i2c slave into the exsiting source code?
I think it is a very normal use case that i2c master operate several i2c slave.Show Less
I'm actually using a psoc as a peripheral server. I'm using a white list as a security layer and I need to be compliant with iOS standard :
"3.7 Privacy The accessory should be able to resolve a Resolvable Private Address in all situations. Due to privacy concerns, the Apple product will use a Random Device Address as defined in the Bluetooth 4.0 specification, Volume 3, Part C, Section 10.8."
I know that there are API methods to resolve an address as a central device, but I didn't see one for the peripherals. Did someone know to handle resolvable addresses as a peripheral?
Best regards,Show Less
I would like to do the FCC testing of the Custom Hardware. Cypress Technical support team has provided me a sample project.
As per the project, We need to put BLE into Host Controller Mode. Can we write some code and put ble into Host controller mode?
I am thinking of creating a custom BLE profile which will accept Mode of operation, Channel, and Power level using BLE.
Board operation will be-
1) Turn on the Unit
a) Power Level
c) Mode of Operation
4) Turn off Phone/computer used to communicate to the device
5) Run the test
6) After one test is done, power cycle the device, and GOTO 2 (had to put a goto statement in there)
After power on , device will be in advertising mode. Pair with mobile or CySmart tool and accept user options. Then switch to Host controller mode and run the test. Is it possible to implement?
Or suggest some good option.
Note - I don't have UART block/pins available.
I'm trying to store array data to hole flash memory but I'v noticed it has some problem.
If i don't check a firmware mem area and store data address in flash memory, they will overlapped each things.
I'v searched some posts about how to store the data to flash or other place in posc.
And I found Emulated EEPROM that emulates an EEPROM device in the flash memory.
So I'v tried it my project but I could not find Emulated EEPROM Component on Psoc Creator using PSOC4 BLE.
I found the component when I make proejct with Psoc4.
Does Psoc4 BLE not supported Emulated EEPROM Component?
I've implemented the BLE low power mode using CyBle_EnterLPM(CYBLE_BLESS_DEEPSLEEP) as suggested in AN92584_001-92584_0A_V. Works great and I get about 1.2uA current consumption. No other components just the BLE.
When I add in a WDT in free run, still works... 1.2uA
As soon as I implement a WDT interrupt, even with a 2 second period, doing noting but returning, my consumption runs around 6-7mA
I can provide code but it's pretty must straight out of the app note. I've tried using the "internal isr handler" and my own custom handler. Just curious if someone else has run into a similar issue.
On the Soic8 there is only one OUT and one nOUT,
as I want to provide pwm-half-sine on on pin first then switch it over to another pin to drive a h-bridge.
Can nOUT be selected though PSEL for OUT is not on?
I guess there is no option to not have nOUT inverted?, not a big deal as I just offset the sine-table to compensate for it.