Wednesday, May 25, 2016

Project: Arduino Musical Weather Station via Adafruit

Arduino Musical Weather Station

This is a very cool project using a wide variety of sensors and input to create something fun for the garden or yard. I have toyed with similar ideas for wind chimes driven by environmental conditions like sunlight and wind, but this takes my ideas to an entirely different level. 

It sounds the creator has tied the Arduino into a music synthesizer, which allows the Arduino to control a wide range of sounds and effects.

Here is a demonstration video showing it in action.

Get your own Arduino Gear via Amazon
Get your own Arduino Gear via eBay

Monday, May 23, 2016

Make With: Blue 0.96" I2C IIC 128X64 OLED LCD Display Module for Arduino

Make With focuses on a collection of parts that can be used with Arduino, Raspberry Pi and more!

Blue 0.96" I2C IIC 128X64 OLED LCD Display Module For Arduino UNO R3 Breadboard

You can easily purchase your own via Amazon, eBay and other sources.

Thl with oled

My Temperature, Humidity and Light Level Sensor Project with OLED Screen.

Blue oled

A cool, tiny, OLED display for your Arduino and Raspberry Pi projects. While I often like to send my data to “the cloud”, sometimes having a display on your project works well. With the u8glib, you can draw graphics and text in a large number of different fonts.

See the setup and display at work in this video from Julien Ilett, one of my favorite channels on YouTube.

Get your own Arduino Gear via Amazon

Get your own Arduino Gear via eBay

Project: Tiny Arduino Music Visualizer: Maximum blinkenlights, minimum effort! via Adafruit

Get your own Arduino Gear via Amazon

This looks like something I might try to adapt to my own monochrome Led Matrix. It was an idea I was already thinking about and I hope I can draw some example from their code to develop my own. I love projects that interact with the real world, whether they are art pieces passively delivering information of some sort. It is a fairly complex project, but that often means there is a lot to learn within.

Arduino music viz

Project: Tiny Arduino Music Visualizer: Maximum blinkenlights, minimum effort! via Adafruit

Here’s an easy-to-build project that really packs a lot of blinkenlight for the effort: a little pocket-size music visualizer we call “Piccolo.”

Set Piccolo next to the telly or some speakers and you’ll see the lights respond to music and sound — lowest notes toward the left end of the graph, highest notes toward the right.

Technically this would be called a “spectrum analyzer,” but as this is not a precision scientific instrument, we’re more comfortable labeling it a “visualizer.” It’s strictly for show.

Check out the entire project on Adafruit


Arduino Components from Amazon:

Wednesday, May 18, 2016

A Font to Make Programming Easier? Yes! - Mononoki

Reading here on TechnologyIQ, it should be clear that I have been doing a lot more coding than usual recently. Whether it's putting together Arduino code, python apps or PHP pages, life has had me staring at the computer screen trying to tell if that's a 1 or an l, a 0 or an O, a ( or a { or a [. Blowing up the font size only takes you so far, though.

Having worn glasses since I was 10 years old, I can use all the help possible when reading my screen. A few days ago I came across a post about a new font, specifically designed for coding -- Mononoki.

Mononoki addresses many of the issues I mentioned above right out of the box. 1'a and l's look entirely different as do 0's and O's. With the, now common, proliferation of braces, brackets and parentheses in all modern programming language, those are also addressed and made clearly different from one another.

Can a new font make coding easier? It certainly has for me. Sure I push the font size a few more points just to ease my way, but Mononoki has certainly made my coding life just a not easier.

Link: Mononoki on github

Noted: Open Robots With Open Roberta via HackADay

HackADay reports on the OpenRoberta project to help kids learn more about building and operating their first robots.

Read Open Robots With Open Roberta at HackADay

Or header

Visit the Open Roberta site for more information. You can also try out a simulated robot there.

Open Roberta

The Open Roberta project continues the Fraunhofer-Initiative »Roberta – Learning with Robots«. For more than ten years, this initiative enabled girls and boys to explore the world of robots and to learn about computer science, natural sciences and technology (STEM). The aim of Open Roberta is to overcome technical and professional barriers for teachers and students alike. The free cloud-based Platform »Open Roberta Lab" can be used at any time from any device using standard Internet browsers.

Open Roberta Lab

The programming environment »Open Roberta Lab" enables children and adolescents to program Lego Mindstorms EV3 robots. A variety of different programming blocks are provided to program motors, sensors and the EV3-Brick. Open Roberta Lab uses an approach of graphical programming so that beginners can seamlessly start coding. As a cloud-based application, the platform can be used without prior installation of specific software but runs in any popular browser, independent of operating system and device.

Open roberta

Arduino parts start to arrive via Instagram [Photo]

Tuesday, May 17, 2016

Arduino Life 4: Visualizing Your Project's Data with Ubidots

Back to the basics with my learning project, a temperature, humidity and light level sensor with the Arduino Yun.

While text printouts to the Serial Monitor, viewing text files via SSH and login the data to a Google Spreadsheet are fine, wouldn’t it be cool to be able to see your project’s data visualized in near real time? Sure it would. 

Enter Ubidots, and IoT (Internet of Things) visualization service that can receive data from your Arduino projects and graph it in a number of ways.

I was first made aware of Ubidots via this YouTube video from Acrobatic - Visualize Sensor Data Using ESP8266 (ESP-12E)

While I haven’t yet made the jump to using the ESP8266 myself, it was introduction to Ubidots as a service. They have a variety of libraries and code examples for connecting your Arduino projects and, in my case, there was a specific library for the Arduino Yun. While this library worked fine for sending 1 variable of data to the service, I ran into significant problems when I tried to send the 3 variable from this project (Temperature, Humidity and Light Level). If I added a second variable, the sketch would seem to hang when it connected to the Ubidots API.

Thankfully, a quick message to the Ubidots forums resulted in an updated library only a day later, and now — as you can see from the screen shot below — all 3 variables are being received and graphed.


Using the Arduino Yun Library made it exceedingly easy to send my project data. I only needed to include the library...

#include <UbidotsYUN.h>

Define some constants for my API key and the key for each variable I was sending.

#define TOKEN “API Token Here"
#define TEMP “Variable Token Here"
#define HUMID "Variable Token Here"
#define LIGHT "Variable Token Here"

Start the Ubidots library

Ubidots client(TOKEN);

Initialize the Ubidot client


Then send the current data along to Ubidot each time through my loop

// Update Ubidots
client.add(TEMP, temperature);
client.add(HUMID, humidity);
client.add(LIGHT, lightlevel);

Complete Sketch Available Here as Ubidots.txt

Once I had a working Arduino library from Ubidots, it was easy to add these statements to the project and start feeding data.

On the Ubidots side, before you make your first call to the Ubidots API, you set up a “Data Source”. A Data Source is a collection of variables from a specific project. This creates the necessary variable tokens you need to include in your sketch that connect each piece of data in your sketch to a specific luggable and graphable piece of data in the Ubidots Dashboard.

Ubidots data source 

Ubidots data source detail

Once the Data Source is set up, you can set up your dashboard with various widgets to present the data however you wish.


Here I have set up 2 widgets for each of my variable — one showing a current gauge of the data values and then a bar chart of recent data. You can change the scales on either access to show more or less data or set your own min/max data levels to get exactly the graph you want. Other widgets include Metrics — showing Min/Max, Averages and more — Maps, if you are using GPS or measurement data — Tables — and Control buttons.

Give Ubidots a try as a front end for your next Arduino IoT project and I think you will be pleasantly surprised with its features.

Please send along your questions and comments.

Thursday, May 12, 2016

Salvage Parts For Your Projects and more! - iFixit 64 Bit Driver Kit - 30% off at Geeky Gadgets

Salvage Parts For Your Projects and more! - iFixit 64 Bit Driver Kit - 30% off at Geeky Gadgets

I have started to disassemble old technology like printers and such to harvest parts for my Arduino projects. My first foray into this, though, left me a bit disappointed, as many of the screws used in assembling these products are specialized pieces, designed to prevent disassembling them. 

Enter the iFixit 64 Bit Driver Kit, something I have known about for a long time, but never actually purchased. It comes with a host of specialized bits and drivers used to build a lot of today's technology. While this kit is truly designed to help you repair your own technology, as you might imagine, it also helps a lot in tearing apart older, non-functional tech to get at the good bits!

When I saw that Geeky Gadgets had the kit on sale today for 30% off -- and I had some funds in my PayPal account -- it was time to get one of my own. I have my eye on some stepper motors and sensors in an old printer already. Can't wait for it to arrive.

Make something cool today! via Instagram [Photo]


Learning: How To Use A Breadboard via Hackerspace LA

Learning: How To Use A Breadboard via Hackerspace LA

Hackerspace LA shared this excellent article on “How to Use a Breadboard”, which is an integral part of any electronic prototype project. I have one setting on my desk right now, connected to an Arduino Yun, in fact.

Learning: How To Use A Breadboard via Hackerspace LA

They can seem a little confusing, but this article explains things quite clearly.

Led animation

Read Learning: How To Use A Breadboard via Hackerspace LA

Coding with Kids: Hopscotch's visual coding app is now on the iPhone

Learning to code can be an empowering skill that can help anyone, but especially children, feel accomplished and in control of their education. We should all be learning something new every day, so why not take a few moments to learn how to code fun programs and apps and engage your creativity?

Hopscotch is a visual programming language and development tool for the iPad and now the iPhone that allows you to drag-and-drop programming elements, code, graphics, sound and more to create apps that you can then share with your friends or the world.

Hopscotch is similar to other desktop visual coding systems like Scratch, developed by MIT, but with the convenience of running on a mobile device that you can easily take with you wherever you go. Sometimes learning needs to happen in those small bits of free time we have available and a mobile device makes it even easier to take advantage of those small moments in our day.

Hopscotch has highlighted 10 of their favorite apps developed with the system in their blog post, 10 Most Innovative Hopscotch Games of 2015. Click to link to their site for some excellent examples of what people are already creating with this great coding environment,

Download Hopscotch from the Apple App Store
Visit the Hopscotch Web Site
Read more about Hopscotch in this article from The Verge

Wednesday, May 11, 2016

Education: How to Set Up and Program an LCD Display on an Arduino via Circuit Basics

How to Set Up and Program an LCD Display on an Arduino via Circuit Basics

Education: How to Set Up and Program an LCD Display on an Arduino via Circuit Basics

Every computer (or microcontroller, which is truly what the Arduino is) needs a display. What good is gathering sensor data if you can see it, right? Enter the 16x2 line LCD that uses the Hitachi HD44780 driver chip/. These boards are available in many places, including eBay and Amazon, and libraries exist to let your Arduino talk to them in just a few minutes of coding. You’ll see them used in many Arduino and Raspberry Pi projects, so learning how to use them is a skill you can use over and over in your projects.

This is s a very detailed walk-through of using these LCD displays including connection diagrams and code explain nearly all the functions of the LCD Display library.

Check it out!

More Arduino boards and components

Tuesday, May 10, 2016

iPhone Wallets - NEW from Douglas E. Welch and created using my photography

I am now selling iPhone Wallets with my photography via RedBubble. This is a new item that just became available today.

iPhone wallets are my preferred phone case, so it is great to have a way to make covers with whatever photo I wish and I hope you like some of them, too.

More designs are coming as I work though my entire portfolio and set up the artwork specifically for the iPhone wallet shape and size, so keep watching for more items.

Wallet 500x iphone 6s wallet 1u1Wallet 500x iphone 6s wallet 1u1  1

Wallet 500x iphone 6s wallet 1u1  2Wallet 500x iphone 6s wallet 1u1  3

Wallet 500x iphone 6s wallet 1u1  4Wallet 500x iphone 6s wallet 1u1  5

Iphone wallet open 6 cb2dbde4a7bc2753a82e792def47cb29Iphone wallet folded 6 72c303493177b9787ec241f00a5d5870

Get yours today!

See my entire portfolio

Printer Teardown Timelapse [Video] (6 secs)

Taking a few minutes to strip any interesting parts from an old printer to use in my own projects.

Teardown timelapse




Project: The "Tennis Ball" Garage Stop Light by Stuart Mace via Arduino Project Hub

Project: The "Tennis Ball" Garage Stop Light by Stuart Mace via Arduino Project Hub

Project: The

This is a great practical project that can teach you how to use a lot of different components with your Arduino. It’s a high-tech version of the “hanging tennis ball” found in many garages so that you know your car is far enough inside to safely close the garage door. Of course, you could use in any situation where an object needs to be in the proper position.

Project: The

This project is clearly explained in get detail and the code for the Arduino is included, so you can see exactly what is happening and how you might make your own modifications.

In this project you learn how to use:

Find more Arduino boards and components on


Sunday, May 08, 2016

Make With: HC-SR501 PIR Motion Sensor

Make With focuses on a collection of parts that can be used with Arduino, Raspberry Pi and more!

Many microcontroller projects are based around detecting movement and then reacting to that movement by triggering a relay, and alarm, a light or more. The HC-SR501 seems to be the motion sensor that is most available and most used in projects. You can easily purchase your own via Amazon, eBay and other sources.

The HC-SR501 only requires one digital pin for signalling to an Arduino or other microcontroller and reports with 5V HIGH when movement is detected. Other pins connect to VCC and GND.

Two on-board potentiometers allow adjustment of motion sensitivity and time delay between motion detections.


Saturday, May 07, 2016

Arduino Life 3: Pulling Data instead of Pushing Data: Arduino Yun Server/Client and REST requests

My next Arduino lesson, after learning about reading sensors, data logging, and the Linux/Arduino Bridge for web logging and dat/time stamping in the last installment of Arduino Life (Arduino Life 2: Getting Geeky in the Garden: Temperature, Humidity and Light Level Sensor [Video] (20:21)), I wanted to turn the process around on itself and learn how to poll the Arduino sketch for information and settings using the provided YunServer and YunClient software so that I could receive results directly into a web page, via a web request.

The Arduino and Breadboard setup remain the same as before. I had a bit of an issue when starting to work on this version, as the DHT11 had become unplugged from the board. When re-inserting it, I was off by 1 pin on the breadboard and ended up running +5v through the sensor and “letting the magic smoke out.” (LAUGH) This is one disadvantage to using a breadboard instead of male/female jumper wires (which I plan on purchasing in my next order.) Directly connecting to the sensor via wires makes it less likely to error and connect things up wrong.

Dead dht11

Dead DHT11

While the sensor reading portion of the code remains pretty much the same, responding to web Client requests requires a little fiddling and, basically, manually handling each request rather than simply serving up a web page. I have looked into serving up complete web pages — and I think it is easy enough to do — but I’ll leave that for the next stage in the process.

All the code for this project/sketch is available in text format — thl-on-demand.txt

Let’s step through the code and the results.

// Sensor data on demand
//  Via web REST interface
// Note: It can take a while for the Yun to connect to WiFi after a cold boot.
// I have configured my Yun to light the WLAN light on the board when connected as a reminder

// Mailbox handles REST request from a web URL
// Servers up files and data from web
// Handles web client requests and delivery of data to browser page
// Library for DHT11 Temperature and Weather Sensor

// DHT11 Connected to pin 2 on the Arduino
int pinDHT11 = 2;
// Initialize the DHT11 library
SimpleDHT11 dht11;

// Photoresistor connected to Analog Pin A0
int  sensorPin  =  A0;
int  lightLevel =  0;  // variable to  store  the value  coming  from  the sensor

//  Start YUN Web server
YunServer server;

 Set up all the various necessary libraries, and sensors and fire up the YunServer to prepare for receiving web requests

void setup() {
// Set Built-in LED as output and make sure it is off
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
// Initialize Bridge and Mailbox -- Takes a few seconds
// Light LED 13 when Bridge is running and ready to interact with user
// This can take a few seconds, hence the notification light
digitalWrite(13, HIGH);
// Initialize Serial for debugging purposes, if needed
// Tell server to start listening for connections

Arduino yun lights

Arduino Yun Lights (White: Power, Blue: connected to WiFi, Red: Yun Bridge Active)

In the Setup function we use LED 13 as an indicator that the Bridge between the Linux and Arduino side is initialized and running. The Serial Monitor is initialized, just in case we need it for debugging, You could comment this out once things are running OK. Then we tell the YunServer to start listening for incoming web client requests locally.

void loop() {
// Check for web browser accessing server -- if client request is made, process it
YunClient client = server.accept();
// If a client is asking for data, do this
if (client) {

// Read in the command - i.e. string following arduino.local/arduino/
String command = client.readString();
// Trim Carriage Return - Required as ReadString includes carriage return on end of string

In the first part of the loop. we check to see if a web client has requested information from the Arduino with the URL in the form:

http://arduino.local/arduino/<insert request here>

This assumes an Arduino Yun configured with defaults such that the name of the Arduino Yun is simply arduino. If you use a different name, replace the defaults with your custom name.

If a client has requested data, then read in the REST request and discard all but the word after the last / . This gave me a bit of bother in parsing it for the next section of the code where I use If/Else If/Else statements to figure out what the command should do. It took me a while to figure out that the “command” variable was included a invisible \n at the end. command.trim() takes care of that, leaving only the text we want/need.

// ---------- Gather data from sensors ----------
// Get Date and Time from Yun Linux Side
String dataString;
dataString += getTimeStamp();
// read with raw Temperature and Humidity data.
byte temperature = 0;
byte humidity = 0;
byte data[40] = {0};
if (, &temperature, &humidity, data)) {
client.print("Read DHT11 failed");

// Read Light Level Data from Photoresistor
lightLevel = analogRead(sensorPin);
// Convert to 1023 point low to high scale
lightLevel = map(lightLevel, 0, 1023, 1023, 0);

// ---------- End Gather data from sensors ----------

Instead of reading the sensors continuously, we gather the data when the is client activity. I wonder if this would help with power consumption if you were using this one battery power, but it would take more investigation and further optimizations, I would guess. This code is the same as the original, gathering Date/Time from the Linux side (using the getTimeStamp function at the end of the code, temperature and humidity from the DHT11 and light level from the photoresists. To get a little more granularity in the light level data, I have returned to using a 0-1023 scale. The 0-100 scale seemed to indicate full light (90%+) even when the sun wasn’t directly shining on the sensor, so I did this to hopefully get a little better and finely tuned data.

// Respond to Web REST Commands
// Define each command you wish to respond to and also failure case
if (command == "temp") {
client.print("Temperature: ");
else if (command == "humid") {
client.print("Humidity: ");
else if (command == "light") {
client.print("Light Level: ");
else if (command == "all") {
client.print("Temperature: ");
client.print("Humidity: ");
client.print("Light Level: ");
else {
// If command isn't in list, return command listing
client.print("Command Not Recognized\n");
client.print("Avaiable Commands: temp humid light all\n");
// Close client session and pause

Now, we take the command gleaned from the web URL above and check it against our available commands. I include the final ELSE statement block to return an error message and list of available commands. While you probably wouldn’t want or need to request these individual pieces of data, I have done it here as an exercise to show how you could respond to multiple commands.

Output from each command is:


Sat May  7 19:42:30 PDT 2016
Temperature: 24


Sat May  7 19:43:35 PDT 2016
Humidity: 49


Sat May  7 19:44:12 PDT 2016
Light Level: 758


Sat May  7 19:44:44 PDT 2016
Temperature: 24
Humidity: 48
Light Level: 759

Error Condition

Command Not Recognized
Available Commands: temp humid light all

The final code contains a function that gets the current date and time from the Linux side of the Arduino Yun

// *********** FUNCTIONS ************
// Functon to get Time Stamp from Yun Linux Side
String getTimeStamp() {
  String result;
  Process time;

  while(time.available()>0) {
    char c =;
    if(c != '\n')
      result += c;

  return result;


As you can see , the sketch returns bare text data. There seems to be a way to include HTML Content-Type headers and such in the client.print() calls, but I haven't gone that far yet. It would also be possible to use a companion python program to grab the data from the sensors and then build a formatted HTML doc that could be served up from the YunServer, and I will investigate that for a future project.

Please send along your questions and comments.

How to Make a Vacuum Forming Machine from Prop Shop

Don’t want to wait for the FormBox Kickstarter to be delivered (as I mentioned in the previous post)?

Why not build your own vacuum form machine?

This great video gives some very clear instructions on how you can make your own tabletop vacuum form today! So simple I think maybe even I could do it. (LAUGH)

How to Make a Vacuum Forming Machine from Prop Shop

Prop: Shop - How to Make a Vacuum Forming Machine

FormBox takes on 3D printers with an instant vacuum former from The Next Web

This blog post from The Next Web popped up in my feed reader today and once again, serendipity struck. WE were just talking about vacuum forming as a side discussion at the last Hackerspace LA meetup. Vacuum forming is a relatively old, but very capable molding technique that has been used for a lot of the design and art you see around you every day. It is faster, cheaper and easier to use than 3D printing (at least, for the near future) and allows you to create finished pieces of art and design locally, quickly and inexpensively.

I don't usually highlight Kickstarter campaigns, as some times the time to delivery is way too long and some projects never make it out the door. That said, I think this one has a lot of potential. It is a fairly low-tech gadget -- using only a plastic heater, vacuum cleaner and specialized plastics -- so there is much less that can go wrong and it should be easier to manufacture than some, more complicated, Kickstarter projects.

I could certainly see adding this to my own "maker lab" or hackerspace. It would be great to be able to mass produce 3-d artwork, signs, toys and more without having to make the leap to professional manufacturing.

Check out their Kickstarter video and complete information.

FormBox takes on 3D printers with an instant vacuum forme
The past decade has brought on a new kind of industrial revolution, a lot of which is thanks to how prevalent 3D printers have become. From full-sized versions to mini-desktop styles, you can find 3D printers for about the cost of a cheap laptop, or go to stores like Staples to get your prototypes printed out. 
But one thing most 3D printers still have in common: Products take a while to print, set, and cool. That’s where Mayku’s FormBox wants to entice the at-home makers. 
Read the entire article

Friday, May 06, 2016

Which (Arduino) wireless tech is right for you? from HackADay

While vanilla Arduino can be very useful and an awful lot of fun to learn, I knew from the beginning that I wanted to connect my Arduino (and other devices) to the Internet so they could be queried remotely and log their data no matter where they might be located physically. Once you get beyond the basic included Wifi or Bluetooth included in some boards, like my Arduino Yun or the Arduino 101, things can get complicated pretty quickly. This interesting article from HackADay lays out the current state wireless tech you can use with your projects including WiFi, Cellular data, RF radios, mesh networks, products, devices and more. It provides a great underpinning to build on in your own projects.

Which wireless tech is right for you? from HackADay 
It seems these days all the electronics projects are wireless in some form. Whether you choose WiFi, Bluetooth Classic, Bluetooth Low Energy, ZigBee, Z-Wave, Thread, NFC, RFID, Cell, IR, or even semaphore or carrier pigeon depends a lot on the constraints of your project. There are a lot of variables to consider, so here is a guide to help you navigate the choices and come to a conclusion about which to use in your project. We can really quickly reduce options down to the appropriate tech with just a few questions. 
Read the entire article

Thursday, May 05, 2016

Projects: 10 best Raspberry Pi projects you can do yourself from Trusted Reviews

Looking for ways to put your new Raspberry Pi to work and learn at little bit in the process?

Trusted Reviews collects 10 great projects to try in this article.

10 best Raspberry Pi projects you can do yourself

Raspberry pi projects 5

Raspberry pi projects 3

Here are a few examples...

  • Make a Pi Media Center Using XBMC (or Kodi)
  • Digital Photo Frame
  • Pi NAS (Network Attached Storage)
  • Make a Robot

Check out all the links in the original article on Trusted Reviews

Get your own Raspberry Pi Start Kit!