Here is the video I made at the conclusion of the Holiday of Internet Lights RoadTest!
Hope you enjoy it!
It was a great learning experience that certainly got me hooked on the world of Arduino and I'm looking forward to learning a lot more!
This post is one my last on the Internet of Holiday Lights RoadTest. It has been quite the journey for me! When I started I barely knew what Arduino was and now I hope I have someone improved on that understanding. First off, thank you so much to the patience and generosity of peteroakes for helping to guide me through many concepts that were completely alien to me.
Please check out my RoadTest Review as well!
My progress through the IOT RoadTest was an interesting one. As a new beginner to the Arduino platform, I had to quickly learn some of the basics so that I could hit the ground running. I got a handful of components from Peter to get me started and also bought this lovely 60 pixel RGB LED light strip which I have been in love with since it arrived. After running the basic sketches to blink the pin 13 LED light, I then was able to go ahead and power the light strip after learning how to configure the Adafruit NeoPixel library. The result was a very rewarding mixture of brilliant, rich coloured light. What I didn't realize until much later is that I was actually improperly grounding the data line so the signal noise was adding extra rainbow to my display!
It was easy to get addicted to Arduino after seeing pretty lights like this. I was hooked!
From that point on is where I started to hit my road blocks and adventures.
Serial Display screen
One of my biggest points of confusion came from trying to learn how to use a serial display screen. My main experience so far had been interacting with the NeoPixel strip so I was spoiled by the single data pin control style. Learning how to use the serial controlled 16x4 display meant that I had to learn how to hookup several more pins! I was initially daunted by the sheer number of pins and the fact that I had to go buy new hardware (potentiometer) but I eventually hooked up everything as follows. and figured I had stumbled upon the bable fish: All my text was coming out in Greek, Japanese, or simply gibberish.
Greek characters appearing during a "Hello World" sketch
I did not realize that I was programming in Japanese!
Trying to analyze the strange characters
I was going pretty crazy as I tried to analyze why the display was outputting Japanese characters. I began to figure that maybe one of the pins was consistently stuck in either a 0 or a 1 position, due to the fact that the strange characters often showed up in an array as seen above. What didn't make sense however, is that simply "Hello World" scripts were causing moving text all over this display.
I eventually gave up on trying to make this screen work. I encountered other issues with a seven segment display and also an older I2C controlled serial display. I realized that the display screen was truly secondary to my project and moved on.
Passive IR (PIR)
As the deadline was quickly approaching, I realized that the key to my project was accepting inputs from the environment and triggering changes in the lighting sequences. So I went with the simplest approach that I thought I could do with my crucial, remaining hours. I used a PIR sensor and a basic script to ensure that I was able to properly harness this little guy, and then tested the PIR with a single LED light:
The PIR is working! The next step after shiny-flash lights was learning how to make this thing accept input from sensors
After getting the PIR to work, I got help from peteroakes and leveraged a darling little Arduino sketch which cycles LED sequences. He showed me the intricacies of the code and it is quite glorious: It is built to accept string commands that are then checked against an array of possible commands and then executed. While my application was much simpler (for this time at least!), I was able to run a simpler version that gives me the result below!
My final product is an odd little Christmas tree with a lot of light power! The presents under the tree are the Yun and Infineon boards which I'll be learning more about into the future!
Thanks for reading! I've learned a lot in the process and look forward to learning more!
Slowly working away on my Arduino learning and project for the Internet of Holiday Things RoadTest. Running into some issues on the most basic learning steps such as making an LCD screen work. Maybe you have some suggestions?
I got this LM041 datasheet & application note - Datasheet Archive from peteroakes . It's sturdy built 16x4 display that seems to have weathered the ages quite well.
I went and bought a 10k ohm potentiometer and hooked everything up per the Arduino LCD Tutorial but I don't appear to be having much luck.
The thing that frustrates me most is that one of my past configurations did get my Hello World running but I managed to do something that removed it.
I am using the standard LiquidCrystal library and running example code such as AutoScroll and HelloWorld. As I write this I am cycling through the rest of the example codes and still seeing a lot of Greek letters.
One of the sketches causes my text to come out in a jumble of Greek and Latin characters.
This sketch caused my text to display mostly Japanese!
I am currently trouble shooting this problem by removing different D Pins and seeing what happens.
All pins in is currently rotating the following characters: #, 3, C, S, c, s. This corresponds to the top 4 bits of the combination 0xxx, and the bottom 4 bits always being 0011.
All pins in
Removing DB7 and putting DB6 into Pin 2 is currently rotating the Japanese characters shown below. This corresponds to the top 4 bits with combination 1xxx, and the bottom 4 bits always being 1011. Note that appears that moving the DB6 connection to Pin 2 is causing the first bit in each nibble to hold at 1.
Removing DB7 from Pin 2, and connecting DB6 to Pin 2
Removing DB6 from Pin 3 and leaving DB7 in place seems to cause a display of t,u,v,w,l,),>,<. This corresponds to an upper nibble of 0111, and a lower nibble that is x1xx.
I am not quite sure what I should be doing to fix the issue but will tackle this more in the coming days. One thing to note is that these issues haven't exactly been 100% replicate-able so I apologize in advance if I have a few of the details wrong!
I've only had a few more days to play with my Arduino and I am loving it! This is my very first time with Arduino so it's definitely been baby steps for me. My next step after running a sketch to control the LED on Pin 13 was connecting up a set RGB LED lights that are individually addressable.
Thanks to the help from peteroakes I was able understand what power requirements I had, and finally got to power something more flashy! I used the Adafruit Neopixel Library and had the lights working in minutes! They are extremely bright and this string of 60 LEDs alone will definitely be able to light up my apartment!
Next step is deciding what type of sensors I want to use to trigger my setup The plan is to use a PIR sensor to react to people walking near it and a sound sensor to react to the music!
Hoping to make some progress on this before the new year but was unable to fly any of this hardware away with me for the holiday. I was too worried about getting hastled in customs!
I recently signed up for an electronics "road test" and was grateful to be selected along with 19 other participants to create a holiday lighting project, with help of the following hardware, thanks to Element14, Infineon, and MCM Electronics:
Today I finally got my hands on the following hardware (it had been waiting in an UPS store since Friday) and was able to unbox it.
Arduino Uno R3
I know this is the bread and butter of micro computing, and I'm excited to finally have one. The board comes clean and free from fingerprints or leftover flux. It has "Made in Italy" proudly stamped on it, as a testament to it's legitimacy. In my very first sketch ever, I tried out the basic blinking sketch. I then found a Morse Code sketch which writes messages by blinking the onboard LED at pin 13. Works great for me because I still have a lot of hardware to buy!
The Yún looks quite like the Uno except for it's Ethernet port. This board arrived dirtiest of the bunch, with noticeable leftover flux and fingerprints on the metal shield which covers the WiFi chip and the Atheros chip that runs Linux OpenWrt. It is made in Taiwan, which is supposed to have significantly better electronics quality than China so I am not overly worried about the flux and fingerprints.
I will use this board to have some amount of interfacing via the Internet, as per the Internet of Things theme of this Element14 road test.
Infineon RGB LED Lighting Shield
This shield is a brilliant beautiful shade of something between dark orange and red, and I am very excited to get started with this board as well. I was talking to peteroakes and he pointed out that I cannot power my 5V NeoPixel esque light strip on this board, because it is more suited to loads that are 6V and higher. He suggested I check out some other LEDs with larger voltages that will make use of this board. My NeoPixel strip is best powered with a wall adapter power supply that can push 5V with about 3-5A of current, and I will likely power these directly of my Uno.
One initial note when handling the Infineon is that I realized that this shield does not arrive with the interfacing pins required to mount this on this on the Uno or Yún. That means unless you have the means and ability to solder well, this is not a beginner board.
One key advantage to the Infineon is that it is able to control current flow, allowing quick prototyping of LEDs. It will take a bit of learning for me to actually put this shield to use!
Unwrapping the package yields some beautiful little packages with bright colouring. I can't wait!
Here are all three of the products
The Arduino Uno R3
The Arduino Yun
The Infineon RGB LED Lighting Shield. Note the lack of interfacing pins, meaning that you have to solder!
Here are all 3 of the products
This is my second sketch - the Uno is writing my name in Morse code