Showing posts from 2012

Web control an addressable LED strip using ArduinoEthernet

Edited 12/18/2011: Added Perl script and made displayColors(); call fix in event handler. Edited 12/19/2011: Added bulk update POST behavior and updated Perl script to demonstrate. Edited 12/26/2011: Fixed quoting javascript quoting problem. Edited 1/3/2012: Added support for Nokia 5110 style LCD and display bonjour name and IP. Most of my build and status "blinken light" type projects are USB or Bluetooth (Serial) controlled requiring a direct connection to the machine feeding the project it's values. I wanted more standlone device that could be remotely updated. Microcenter has the ArduinoEthernet and Netduino Plus boards, both of which have onboard ethernet. I still can't get my head around the .Net MF framework and which libraries apply to the Netduino vs some other .Net board.  The RaspberryPi is probably the biggest newcomer in this space because of its aggressive pricepoint, large feature set and broader set of developer tools.   The Arduinos are primitive

Dell First Gen SSD vs Vertex 2 in older Core 2 Duo Laptop

A recent Microcenter sale on Dell g914j 50GB first generation Server SSDs seemed like a good deal at $35.  I found it that it gives a nice performance boost to a core 2 duo system. Some folks claimed it wasn't worth the money because of poor performance vs current drives but I was looking for a cheap "pick me up" for a Dell D630, 4GB Core2Duo system. I benchmarked a Vertex 2 80GB against the Dell. Here is the Vertex2 Here is the Dell which is actually made by Samsung The Dell/Samsung has a 25% lower transfer rate but a 30% higher burst rate.  

Using the Amped UA2000 Directional Antenna in a Noisy Office Environment

Wifi hotspots have changed the way people connect to the Internet with their own devices during the work day.  Many companies have restrictive Internet policies to protect the corporate network and to manage employee productivity.  Wi-fi hotspots are andy in these situations providing connectivity for  personal laptops and tablets. This also applies to contractors who need certain kinds of external connectivity when working with their laptops on-site I work in a building where you can only get 3G or 4G reception when you are within 5 feed of the windows with "good" reception available only at certain locations. The closest spot is about 50 feed from my cube.  Hotspots are great because I can put my $35/mo Virgin Mobile Overdrive at the window and use my laptop wifi to communicate with it.  I get about 2Mbps-3-Mbs when wi-fi to the Overdrive in 4G mode. This works great until about 9:00 AM when everyone comes in with their laptops, phones and hotspots.  My computer t

Cutting the TI Launchpad to Stuff it in a Smaller Case

I've been giving away TI Launchpad Blinken-Light projects to some of my software-only friends so they can have something new to play with.  The projects are basically a TI-Launchpad, an RGB LED and a USB cable all mounted in some kind of case.  I've burned the simple firmware available on GitHub  so they can flash the LED over the serial port. Gamestop a Nintendo DS gift card tin. The TI Launchpad mounts fine in the tin if you tern it sideways but you have to shorten the board if you want the USB connector to come out the back. I used a Dremel cutting wheel to cut the board about one pin spacing below the last header pins. None of that circuitry is required to program or run the board.  That cuts off the reset switch, the two LEDs and the extra Vcc and GND pins. Here is the cutoff board mounted in a Gamestop DS Gift Card tin.  I mounted the 10mm RGB LED to the case and drilled a hole in the top. The case is pretty thin so it is pretty easy to scratch the finish

Adding cheap LCD display and bluetooth shields to a Netduino

I purchased a cheap LCD keypad shield from DX  that makes it simple to add a 16x2 LCD display to an Arduino. The board also includes a set of buttons that are connected to a single analog pin through a resistor ladder network.  It's a pretty slick way of minimizing the pin count.  The board is designed for 5V.  The Netduino is a 3.3v system. The buttons resistor network is wired to the 5V supply so most of the buttons  analog values  are out of bounds for the 3.3V input.  Others have modified the board to use the 3.3v rail or dropped 5V to 3.3V through a resistor. I didn't do any of this because I don't need the buttons. The LCD uses digital pins D4-D9 and can operate with 3.3V signals.  The Netduino MF libraries support the on-board devices but not external chips or interfaces.  The LCD Controller is a standard HD44780 which is supported by nice netmftoolbox supplemental library. I downloaded the netmftoolbox library from codeplex and unpacked into a 3rd party director

Using a Cheap Bluetooth Shield on the Netduino

I found this $19 Bluetooth Shield on from  Elec Freaks .  They claim it is Arduino compatible but the Wiki and spec sheet both say 3.3v only, in bold,  which means it doesn't work with a standard 5V Arduino.  Netduino  boards use Arduino shields and have 3.3V signal levels. The shield comes with an HC-05 Bluetooth module which can act as either master or slave. You can set the mode by sending it AT  style commands after configuring the two switches to set it to command mode.   It is a little simpler than the "you have x seconds from bootup to configure" that some other devices have. My board arrived in Slave Mode which works with a PC acting as Master. The module has an on-board voltage regulator and a set of daughter card connectors to add additional shields. They used offset top and bottom connectors rather than a single pass through so the card extends off one side.  I'd probably stack this board on top of any other shields I was using. A basic Ne

Installing Oracle Java and Tomcat on Ubuntu Server 12

Ubuntu Server comes with only a command line console so the usual GUI tools are unavailable.  You instead get to Java and Tomcat by hand. Oracle installations require the addition of another apt repository because they are license restricted from the Linux point of view. Install Java Enter the following commands into the VMWare visible console. Ubuntu server doesn't include add-apt-repository so first install that sudo apt-get install software-properties-common Enter "Y" if prompted. Add the repository that contains Oracle information sudo add-apt-repository ppa:webupd8team/java Press "Enter" to continue. Update the list of available packages sudo apt-get update Install Oracle 7 sudo apt-get install oracle-java7-installer Enter "Y" and click on "<OK>" to accept the license Verify Java is installed by running java -version You can set the JAVA_HOME for all processes by adding a adding a JAVA_HOME entry in /etc/environment.

Virtual Machine Networking: NAT or Bridged?

VMWare and other desktop or embedded hypervisors create virtual networks that the virtual machines connect to when running on the hosting software.  These virtual networks provide network connectivity from the guest machines through the host machine out to the general LAN/WAN.  There are two main modes. NAT:   The host puts the virtual machines on their own private network and acts as a network gateway for that virtual network.  Guest machines can communicate over the shared network and communicate to the WAN/Internet through the host machine.  Guest machines consume none of the physical network's address space because they are connected on the hosts "virtual network". Guest network interfaces can be configured using DHCP, provided by the host, or with fixed IP addresses to simulate a stable server environment.  Fixed IP addresses are handy when the virtual machines need to communicate with each other. VMWare typically uses the host network's VMnet8 VLAN which does

Setting the Size of the Terminal / Console Window in a Linux Server VM

We did a lot of Linux virtual machine installs when I worked with VMWare's SpringSource group. It let us run multi-node clusters off our MacBooks for customer demos.  We usually used desktop installes because they have you multi-terminal access to the machines.  I decided I wanted get some of my Linux/Java/OpenSource mojo back after 8 months on a Microsoft only project.  I downloaded Ubuntu 12.10 and installed server version so I could spin up more VMs on my Dell. The server install is thin and the Linux console defaults to 640x48 as displayed in the VMWare Player/Workstation.  It wasn't exactly obvious how to make that terminal window larger.  The desktop version of Ubuntu is sync'd with the VMWare window size through the VMWare tools.  That isn't true of the server version.  You have to do the following steps. These assume you have created and installed a new machine and are logged into the console window on the Virtual Machine. I did this with Ubuntu 12.10 Server.

Demonstrating Gemfire Components Configured using spring-data

Gemfire, and the applications that use it are made up of serveral components. There is the data caching tier itself that can exist as one or more data nodes. The data tier can be extended to provide database write-behind, write-through and on-demand read-through. The data tier can also be replicated to remote data clusters through the WAN gateway. WAN replication is not currently part of this example. There is also a client tier that can be pure client, client with local caching and notification client or a combination of the three. Client applications can consume data as they would a no-SQL store, database or they can register for data change notifications with the appropriate callback handlers. Gemfire relies on and makes use of other components including the Gemfire locator and JMXAgent. Gemfire clusters will almost always be be coordinated and linked through the use of Gemfire locator processes. JMXAgents add JMX bean access to a gemfire cluster for management and monit configuration in App.config

I recently (10/2012) converted my TFS build monitor program to be Dependency Injected using the Spring.Net container. I did this because I wanted a no-code way of setting certain parameters and of specifying a build device management class without having to convert a configuration parameter into a class name. I instead injected the spring object with the same name as the configuration parameter using Spring.Net's built in facilities. Spring.Net is moving towards more annotation based configuration but the XML configuration is still widely used and powerful.  You can easily configure Spring.Net in XML with markup inserted into App.config.  The first thing to do is to tell the system that there are going to be some spring.Net sections added to app.config.  This defines two sections, contexts and objects.   context is the section that describes where to find other pieces.   objects  is the section that contains the actual object wiring.  Additional sections might be present if you a