{"id":967,"date":"2018-08-23T18:01:22","date_gmt":"2018-08-23T08:01:22","guid":{"rendered":"http:\/\/furzy.com\/mikesblog\/?page_id=967"},"modified":"2018-08-23T18:47:45","modified_gmt":"2018-08-23T08:47:45","slug":"ble010-cc2640s1-docs-fwver101-rev-20180823-1500","status":"publish","type":"page","link":"http:\/\/furzy.com\/mikesblog\/products\/wireless-sensors\/ble010-cc2640s1-environmental-sensor-temperature-humidity\/ble010-cc2640s1-docs-fwver101-rev-20180823-1500\/","title":{"rendered":"BLE010 CC2640S1 &#8211; Docs &#8211; FWVer101 &#8211; Rev 20180823 1500"},"content":{"rendered":"<p><strong>BLE010 Firmware Ver 101 Revision 20180823 1500<\/strong><br \/>\n&#8211; Time Limited Demo Firmware released 20180823<\/p>\n<hr \/>\n<p><strong>GATT Characteristics<\/strong><\/p>\n<p><strong>Generic Access Service UUID 0x1800<\/strong><br \/>\nUUID 0x2A00 &#8211; Device Name &#8211; utf8s *<br \/>\nUUID 0x2A01 &#8211; Appearance &#8211; Enumeration<br \/>\nUUID 0x2A04 &#8211; Peripheral Preferred Connection Parameters<\/p>\n<p><strong>Generic Attribute Service UUID 0x1801<\/strong><br \/>\nUUID 0x2A05 &#8211; Service Changed<\/p>\n<p><strong>Device Info Service UUID 0x180A<\/strong><br \/>\nUUID 0x2A24 &#8211; Model Number (BLE010)<br \/>\nUUID 0x2A25 &#8211; Serial Number (UUID 0xFFFE &#8211; Device ID Number) *<br \/>\nUUID 0x2A26 &#8211; FW Rev ID (YYYYMMDD_HHMM)<br \/>\nUUID 0x2A27 &#8211; HW Rev ID (PCBV_R__ HWV_R__)<br \/>\nUUID 0x2A28 &#8211; SW Rev ID (FURZY101)<br \/>\nUUID 0x2A29 &#8211; Manufacturer Name ID (www.furzy.com)<\/p>\n<p><strong>Sensor Service UUID\u00a00xFFC0 <\/strong><\/p>\n<p>UUID 0xFFC1 = TI HDC2010 &#8211; Read<br \/>\n[0] Status<br \/>\n[1][2] Temperature RAW &#8211; Little Endian<br \/>\n[3][4] Humidity RAW &#8211; Little Endian<br \/>\n[5] Temperature Offset Signed 0.1deg\/LSB **<br \/>\n[6] Humidity Offset Signed 0.1%RH\/LSB **<\/p>\n<p>UUID 0xFFC2 = Bosch BME280 &#8211; Read<br \/>\n[0] Status<br \/>\n[1][2] Temperature Processed &#8211; Little Endian &#8211; 1LSB = 0.1degC, 500 = 0degC<br \/>\n[3][4] Humidity Processed &#8211; Little Endian &#8211; 1LSB = 0.5%RH<br \/>\n[5][6] Pressure Processed &#8211; Little Endian &#8211; 1LSB = 10Pa<br \/>\n[7] Temperature Offset Signed 0.1degC\/LSB **<br \/>\n[8] Humidity Offset Signed 0.1%RH\/LSB **<br \/>\n[9] Pressure Offset Signed 5Pa\/LSB **<\/p>\n<p>UUID 0xFFC3 = VBatt Opto &#8211; Read<br \/>\n[0] Battery Voltage \u2013 Scaled for 0V-3V3 =&gt; 0x00-0xFF (ie 1LSB = ~12.94mV)<br \/>\n[1][2] Opto ADC Conversion &#8211; Little Endian<\/p>\n<p>UUID 0xFFC4 = SensorSamplePeriod &#8211; Read\/Write<br \/>\n[0][1] Sensor Sample Period in 10ms\u00a0&#8211; Little Endian &#8211; (range limited to 500ms to 600s)<\/p>\n<p>UUID 0xFFE1 = Advertising Timing &#8211; Read\/Write<br \/>\n[0][1] Advertising Time Non Connectable in ms &#8211; Little Endian &#8211; (range limited to 100ms to 10sec)<br \/>\n[2][3] Advertising Timeout Connectable in ms &#8211; Little Endian &#8211; (range limited from 5sec to 30sec)<br \/>\n[4][5] Auto Start Advertising Connectable Period &#8211; Not implemented in Demo<\/p>\n<p>UUID 0xFFE2 = Led Timing &#8211; Read\/Write<br \/>\n[0][1] Led Green Advertising Flash Period in ms &#8211; Little Endian &#8211; range limited to 100ms to 60secs &#8211; 0x0000 = OFF, 0x0001 = in sync with advertising<br \/>\n[2][3] Led Green Flash ONTime in ms &#8211; Little Endian &#8211; range limited 10ms to 500ms<\/p>\n<p>UUID 0xFFFE &#8211; Device ID Number &#8211; Read\/Write *<br \/>\n[0][1][2][3] Used for the Serial Number &#8211; Little Endian &#8211; Base64 expected &#8211; &#8216;A&#8217; &#8211; &#8216;\/&#8217;<br \/>\n&#8211; Demo limited to 0001 to 0009<br \/>\n&#8211; Power Cycle reset back to 0001<\/p>\n<p>Notes<\/p>\n<p>* The Device ID Number is four Base64 digits.<br \/>\nThis is used in the\u00a0UUID 0x2A00 &#8211; Device Name,\u00a0UUID 0x2A25 &#8211; Serial Number, and is present in the Advertising Data in the Complete Local Name.<br \/>\nThe demo firmware allows 0001 &#8211; 0009, enabling a small network of up to 9 devices for a Demo.<br \/>\nThis enables identification of individual sensors in systems where devices are identified by a UUID (eg iOS phone \/ tablet) rather than the device address.<br \/>\n** The offsets are not used by the firmware. They provide a location for storing an offset.<\/p>\n<p>Use an App such as nRF connect to view the GATT table.<br \/>\nContact if you have any questions after using an App such as nRF.<\/p>\n<p>The Sensor Sampling is synchronised to the advertising. When the accumulation of Advertising Periods exceeds the Sample Period, the sensors are sampled and the accumulation restarts from ZERO.<br \/>\nThe setup is intended for where the advertising period is smaller than the sensor sampling period, for example a 2 second advertising period with a 6 second sensor sampling period, the sensors are samples every 3rd advertisment.<\/p>\n<p>Similarly for the Green Led Flash timing.<\/p>\n<hr \/>\n<p><strong>Advertising Data\u00a0<\/strong><\/p>\n<div style=\"border: 1px solid grey; padding: 2px; margin-top: 2px; margin-bottom: 2px;\">Advertising Payload &#8211; GAP Type 0x01 &#8211; Flags<\/div>\n<div style=\"border: 1px solid grey; padding: 2px; margin-top: 2px; margin-bottom: 2px;\">Advertising Payload &#8211; GAP Type 0x09 &#8211; Complete Local Name<br \/>\n[0]..[4] = &#8220;FURZY&#8221;<br \/>\n[5]..[7] = Firmware Version &#8211; Little Endian Byte Order = &#8220;101&#8221;<br \/>\n[8]..[11] = Device ID Number &#8211; Little Endian Byte Order &#8211; Base64 &#8211; eg &#8220;2000&#8221;<\/div>\n<div style=\"border: 1px solid grey; padding: 2px; margin-top: 2px; margin-bottom: 2px;\">Advertising Payload &#8211; GAP Type 0xFF &#8211; Manufacturer Specific Data<br \/>\n[0] = Manufacturer Specific ID &#8211; Low Order Byte &#8211; 0xFE<br \/>\n[1] = Manufacturer Specific ID &#8211; High Order Byte &#8211; 0xFF<br \/>\n[2]\u00a0= Status Nibble (High Order Nibble) : Content ID nibble (Low Order Nibble)<br \/>\n[3]..[11] see Content ID to determine fields<\/div>\n<div style=\"border: 1px solid grey; padding: 2px; margin-top: 12px; margin-bottom: 2px;\">Advertising Payload &#8211; GAP Type 0xFF &#8211; Manufacturer Specific Data<br \/>\nContent ID Nibble = 0x1<br \/>\n[2] = Status : 1<br \/>\n[3] = Battery Voltage &#8211; Scaled for 0V-3V3 =&gt; 0x00-0xFF (ie 1LSB = ~12.94mV)<br \/>\n[4][5] = OPTO (Little Endian Byte Order) &#8211; ADC conversion<br \/>\n[6][7] = Tempertaure BME280 1LSB = 0.1degC, 500 = 0degC (Little Endian Byte Order)<br \/>\n[8][9] = Humidity BME280 1LSB = 0.5%RH (Little Endian Byte Order)<br \/>\n[10][11] = Pressure BME280 1LSB = 10Pa (Little Endian Byte Order)<\/div>\n<div style=\"border: 1px solid grey; padding: 2px; margin-top: 12px; margin-bottom: 2px;\">Advertising Payload &#8211; GAP Type 0xFF &#8211; Manufacturer Specific Data<br \/>\nContent ID Nibble = 0x0<br \/>\n[2] = Status : 0<br \/>\n[3] = Battery Voltage &#8211; Scaled for 0V-3V3 =&gt; 0x00-0xFF (ie 1LSB = ~12.94mV)<br \/>\n[4,5] = OPTO (Little Endian Byte Order) &#8211; ADC conversion<br \/>\n[6,7] = Tempertaure (Little Endian Byte Order) HDC2010 RAW Sensor Reading<br \/>\n[8][9] = Humidity (Little Endian Byte Order) HDC2010 RAW Sensor Reading<br \/>\n[10][11] = Operating Time Accumulator (1\/2 hr increments)<\/div>\n<hr \/>\n<p>EvoThings App FurzyBLE _<\/p>\n","protected":false},"excerpt":{"rendered":"<p>BLE010 Firmware Ver 101 Revision 20180823 1500 &#8211; Time Limited Demo Firmware released 20180823 GATT Characteristics Generic Access Service UUID 0x1800 UUID 0x2A00 &#8211; Device Name &#8211; utf8s * UUID 0x2A01 &#8211; Appearance &#8211; Enumeration UUID 0x2A04 &#8211; Peripheral Preferred &hellip; <a href=\"http:\/\/furzy.com\/mikesblog\/products\/wireless-sensors\/ble010-cc2640s1-environmental-sensor-temperature-humidity\/ble010-cc2640s1-docs-fwver101-rev-20180823-1500\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":782,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-967","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P7DDag-fB","_links":{"self":[{"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages\/967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/comments?post=967"}],"version-history":[{"count":6,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages\/967\/revisions"}],"predecessor-version":[{"id":974,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages\/967\/revisions\/974"}],"up":[{"embeddable":true,"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/pages\/782"}],"wp:attachment":[{"href":"http:\/\/furzy.com\/mikesblog\/wp-json\/wp\/v2\/media?parent=967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}