This post begins a new series of monthly posts where I’ll wrap-up news of the past month.
Before Paper, I was spending less time in Facebook and more time in FlipBoard. After Paper, I am spending less time in FlipBoard. FlipBoard still gives me more (still relevant) news than Paper, such as new and on-sale app recommendations. One curious fact, the Paper app was designed using a prototyping toolkit called Origami.
This was also the month I bought a Chromecast, my first Android device actually.
Here’s what I like about it:
- Ease of use
- Cast content of any tab in Chrome, including videos, using the Google Cast extension
- Over the air updates
Here’s what I don’t like about it:
- Doesn’t ever go into sleep mode, so it is sucking power all the time
- Not as many apps as there should be, but that should change quickly now
It’s a comprehensive platform for building cross-platform native, hybrid, and web applications. Developers can use Visual Studio, or a web-based IDE.
With this endorsement payment card information can now be stored in the cloud. An Android app can then communicate that information to a NFC reader.
Atmel is steadily improving its unified IDE for AVR and ARM MCUs. This release improves debugging and tracing capabilities. I’ve been using the IDE on a continuous basis for AVR and Arduino-based projects, and find it to be quite a productive tool.
VideoCore is also used in their SoC that runs the Raspberry Pi. Releasing the source code should allow community driven improvements and fixes to proliferate.
It doesn’t sport the Google Play store though. They are reportedly porting Windows Phone apps to Android using Xamarin. I love how Xamarin has been enabling .NET for cross-platform development.
This post documents the pros and cons of some of the popular scripting options for the .NET Common Language Runtime (CLR).
- Scripts are ECMA-compliant C#.
- Script is precompiled before execution, execution is as fast as compiled C#.
- Runs on .NET CLR and Mono.
- Provides capability to compile a script to DLL or executable.
- Can be embedded in a .NET application to provided scripting capability.
- Built on top of the Mono.CSharp library.
- C# syntax.
- Scripts are interpreted, not as fast as compiled code.
- Readily available on most Linux distributions (mono-complete package on Debian based distributions).
- Scripts are written in Python (2.7).
- Useful if you already know Python.
- Can be embedded in a .NET application to provided scripting capability.
- As per established benchmarks, it performs better than CPython [aosabook.org].
Other language options
This post documents some interesting Mac OS X Bluetooth LE peripheral examples I have found.
Arbitrary Bluetooth Peripheral
Clone example from https://github.com/sandeepmistry/osx-ble-peripheral.
An issue is that it duplicates peripheral services after Bluetooth is turned off/on. Calling
CBPeripheralManager, fixes that.
You can also use
IOBluetoothDevice API to iterate through connected Central devices. We found situations when after starting the peripheral app, the central app running on an iPhone would not establish Bluetooth LE communication. We were able to use
IOBluetoothDevice to force disconnect all connected devices at app start on the Mac, to skirt the issue.
Advertising an iBeacon
Clone example from https://github.com/mttrb/BeaconOSX. Appears on the LightBlue app, but need to actually use it as an iBeacon. Check author’s blog at http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/ for further details. On a side note, you can create an iBeacon using a Raspberry Pi and an off-the-shelf USB dongle.
Being able to cheaply produce 3D prototypes makes MakerBot Replicator amazing. We recently acquired a Replicator 2 at work, which we used to print a case for Raspberry Pi Model B Rev 2. Here’s the result.
Here’s some lessons learned:
- I had a hard time fitting Raspberry Pi into the case. I had to use a box cutter to make several adjustments. I was wishing I had a Dremel.
- I wanted a transparent case, but the printed case is quite opaque. So much so that it is hardly possible to make out which LEDs on the board are lit (see image below).
- It took above an hour to print each half of the case. Be prepared to let the printer do its work for a good few hours.
- The final finish is rough to touch, it appears neatly textured though.
- The case becomes warm to touch after running Raspberry Pi continuously for a day or so, without much CPU load. At 30% CPU load, held for two hours, temperature within the case rises to 35 °C, CPU/GPU temperature to 60 °C, at an ambiente temperature of 26 °C.
- We have had our Raspberry Pi reboot spontaneously due to RF interference. We’ll probably need to go for a metallic case.
Despite all the hard work, a case such as this would have taken us much longer to prototype in the past.
All paths converge at the horizon (…on a bright sunshiny day)
The last time I designed my own PCB, in 1995, I used parchment (butter) paper and stickers. The fabrication was contracted out to a third-party. Times have changed, we now have simple circuit design software such as Fritzing, and rapid PCB prototyping machines such as the LPKF ProtoMat S62. Though the latter doesn’t come cheap, it is totally worth it.
The PCB I designed is very simple, and contains only through-hole parts. It is a custom breakout for the Raspberry Pi Model B Rev 2. I found most components in the Fritzing library. The Raspberry Pi component was obtained from the Adafruit Fritzing library at GitHub (AdaFruit.fzbz).
This is how the breadboard view looks.
The schematic after some cleanup looks like this.
The two-sided PCB after some work looks like this. I let Fritzing autoroute traces, and then fixed whatever issues its DRC (design rules checker) brought up.
The prototyping environment lacks PTH (plated through hole) capability. Although holes are drilled, we are unable to deposit copper through holes and vias. To enable easier soldering, I moved traces leading away from the header to the top PCB layer. Since the header is placed on the bottom layer, I would only be able to solder its pins on the top layer.
Milling was carried out by a colleague at work, who’s trained herself to use the ProtoMat S62 and its accompanying software such as CircuitCam and BoardMaster. She used the Gerber (RS-274X) files I exported using Fritzing.
This is the kind of machine that was used.
Here’s how the finished PCB looks (bottom layer appears first).
Here’s the PCB with most components soldered.
Some components are soldered on both sides because they pass signals from one layer to another. As mentioned earlier, we lack PTH capability.
I have a lot to learn about PCB designing and the ProtoMat S62, but it’s a start.
Virtual serial ports are a convenient way to test software that accesses hardware over serial ports, particularly when the hardware is not available (yet). They can also de useful for logging and tracing purposes.
HW VSP3 does serial to TCP redirection. It requires a TCP server at the other end. One way to set that up is to use the ncat utility that ships with NMAP. I have had the need to play with TCP so often, I have rolled my own little tool.
I tried using Free Virtual Serial Ports from HHD Software, on Windows 8.1, but get timeout messages when writing to its virtual serial ports. Its system requirements do not mention Windows 8.x as supported. It does serial to serial bridging/redirection, but not serial to TCP.