Part 2 to this post, which implements the prototype, can be found by clicking here.
Part 3 implements a complete design in an enclosure for a Sonos-like solution.
The BBB has an on-board I2S interface, which makes interfacing an external DAC easy. The I2S interface is connected from the AM3359 processor to the HDMI chip (TDA19988) but it is not required for HDMI to be used in order to make use of the I2S interface. The I2S interface is brought out to some pins on port P9 (see here for details). It was encouraging that Technoshaman and Donald Miller had some success with the interface, so I wanted to try it out and I got some time today.
Since the interface is capable of 24-bit/192kHz audio, it was worthwhile picking a nice DAC. A good but not over-the-top device seemed to be the Texas Instrument’s PCM5101 which is nice because it has reasonable specs and also provides a built-in charge pump so that it can function from a single supply. A headphone amp was connected, and this was ON Semi’s NCP2811A. The combination of PCM5101 (actually my prototype used PCM5101A which can also function from 1.8V, but this was not needed) and NCP2811A was chosen so that the entire circuit could operate from the BBB supply if desired, even if it was from a Li-Ion battery that was powering the BBB, and for low noise and distortion. The only problem is that the PCM5101 has quite a high output (clearly a good thing!) but the audio amp minimum recommended gain is 1 and it cannot meet the required output voltage, and it means that it will distort at high volume. So, at a lower volume (and lower SNR) it will be fine, and I prefer this particular amp because of the very low distortion. The ON semi datasheet was sparse though.
https://www.raspberrypi.org/forums/viewtopic.php?t=10026&p=187100
http://processors.wiki.ti.com/index.php/CC32xx_Wifi_Audio_Application
https://volumio.org/raspberry-pi-i2s-dac-sounds-so-good/
Directory size (big, large, sort file space) http://www.ducea.com/2006/05/14/tip-how-to-sort-folders-by-size-with-one-command-line-in-linux/
du --max-depth=1 /home/ | sort -n -r
du -sh ./*
du -h | sort -hsudo ls -1d */ |xargs du -sh && du -sh
http://makezine.com/2014/01/03/reverse-engineering-the-estimote/
The case is made of soft silicon with a rubberized feel and it is entirely closed so that it’s waterproof. I more-or-less had to destroy the enclosure to extract the PCB from it, which also means that changing the batteries—at least on the models in the preview kit—isn’t going to be possible. However it does mean that you can install it outdoors, which is a big plus point for some use cases.
The Estimote Beacon is built around a Nordic Semiconductor nRF51822. You can also see the on-board antenna for the Bluetooth LE radio to the right of the picture.
The Estimote is built around the Nordic Semiconductor nRF51822, which explains theirpresence on the Nordic booth at CES. It’s a nice chip, basically a 32-bit ARM Cortex M0 CPU with 256KB of flash and 16KB of RAM with a built-in 2.4GHz radio supporting both Bluetooth LE as well as 2.4GHz operation—where the 2.4GHz mode is on air compatible with thenRF24L series products from Nordic.
What does the Estimote Beacon advertise?
Using Sandeep‘s noble package for node.js we can look at what’s advertised by one of the beacons, using the advertisement discovery script included with the package.
An Estimote beacon—picked at random from our developer preview kit—with a Bluetooth Address of E7:44:89:31:ED:4E advertises a local name of “Estimote”, along with some service and manufacturer data. However it doesn’t seem to be advertise any service UUIDs.
Taking a closer look at the manufacture data then, the data advertised by the beacon was,
4C00 02 15 B9407F30F5F8466EAFF925556B57FE6D ED4E 8931 B6
Breaking this down,
- First two bytes are the Apple Company Identifier (Little Endian) 0x0042.
- The third byte—at least most likely—specifies the data type, which is 2.
- The fourth byte specifies the remaining data length, 21 bytes.
- Estimote Beacons have a fixed iBeacon UUID of B9407F30-F5F8-466E-AFF9-25556B57FE6D.
- The next two bytes after the iBeacon UUID are the iBeacon Major (Big Endian), i.e. 0xED4E, 60750.
- The next two bytes after the iBeacon Major are the iBeacon Minor (Big Endian), i.e. 0x8931, 35121.
- The final byte is the measured RSSI at 1 meter away, i.e. 0xB6, -74.
Effectively the Estimote isn’t doing anything special here, this is just standard iBeacon data. Three of the properties create the beacon’s identity. These are:
- UUID — This is a property which is unique to each company, n most use cases the same UUID would be given to all beacons deployed by a company (or group). Estimote is unusual in that they’ve fixed the UUID for all “their” beacons to be the same.
- Major — The property that you use to specify a related set of beacons, e.g. all the beacons in one store would share the same Major value.
- Minor — The property that you useto specify a particular beacon in a location.
We need to look at the service data advertised by the beacon,
0A18 4EED318944E7 B6 4EED 3189
to see anything Estimote specific,
- The first two bytes specify this service data is for a service with UUID 0x180A.
- The next 6 bytes are the Bluetooth Address but in reverse order, E7:44:89:31:ED:4E.
- The next byte, 0xB6 matches the measured RSSI at 1 m away.
- The next 2 bytes, match the iBeacon Major but this time it’s Little Endian.
- The final 2 bytes, match the iBeacon Minor again in Little Endian format.
According to the Bluetooth core specification service data must be prefixed with the 16-bit UUID of the service the data is for—and here for the Estimote—the service data is for for a service with UUID of 0x180a, which is interesting because as we’ll see later when we look at the GATT, that service doesn’t exist on the device.
http://martybugs.net/electronics/tempsensor/usb.cgi
This page describes the electronic circuitry required to interface to the temperature sensors via a USB connection.
To use the PL2303TA USB-serial adapter with temperature sensors in parasitic mode, connect one or more DS18S20 temperature sensors as follows:
- red: un-used
- white: un-used
- black: connect to GND and VDD pins of temperature sensor
- green: connect to DQ pin of temperature sensor

http://sparkfun28.rssing.com/chan-8070788/latest.php
Discrete Semiconductor Kit Identification Guide a learn.sparkfun.com tutorial
Available online at: http://sfe.io/t423
Overview
Let’s start with a couple of definitions.
1. Separate; distinct; individual; non-continuous.
2. That can be perceived individually and not as connected to, or part of something else.
3. (electrical engineering) Having separate electronic components, such as individual resistors and inductors — the opposite of integrated circuitry.
1. Respectful of privacy or secrecy; quiet; diplomatic.
2. Not drawing attention, anger or challenge; inconspicuous.
Usage notes
Do not confuse with discrete.
Courtesy Wiktionary.org
https://www.arduino.cc/en/Hacking/ParallelProgrammer
Parallel Port Programmer
Instructions for building a parallel port programmer for the Arduino board (or any other Atmega8 chip). Allows you to program the board on Windows without any additional equipment. Cheap and fun. (Please note, however, that this doesn’t allow for communication between the computer and programs running on the board. You’ll need a serial cable for that.)

export JAVACMD=/opt/jdk1.8.0_65/bin/java geogebra