Friday, December 5, 2014

TIL: Tube Wraps

I looked at these reindeer printable wraps for tp tubes for a minute before running to the bathroom to test my idea. (That's where I could find an empty tp tube, of course!) I measured it, then tested against another brand that of course had slightly different measurements so your mileage may vary.


You do need to be lucky on the intersection of paper sizes (US Letter in my case) and tube sizes, but today I learned you can get four tp tube wraps on a single sheet of paper! I'm thinking of printing some faces, and letting my young artist color to his heart's content! Then my young builder can assemble the village, and peace will reign while they are happily decorating.

Thursday, December 4, 2014

Bumps on the Arduino

So it hasn't been smooth sailing since I installed the Arduino libraries. This is why I was taking baby steps.

I followed the Adafruit directions for the HTU21D temperature and humidity sensor, and got ... nothing. Really nothing. One of my desperate ideas was to look for other libraries. I found SparkFun's HTU21D library, complete with a tutorial. The difference between the two libraries is that SparkFun has two error codes, 998 if sensor is not detected, and 999 if CRC is bad. I saw a whole lot of 998, and that was very helpful. No one likes to hit an error condition, but do you know what's worse? An error condition without an error message somewhere! I removed the Ethernet shield from the system. I ran Blink again just to be sure of my baseline. I ran a lot of continuity tests. (Tip: I always need at least one multimeter with the audible continuity feature.) I read the example code comment "use inline 330 ohm resistor if your board is 5V" and added resistors because my Nano is a 5V board. (Sadly, I didn't have any 330Ω resistors in my supplies. I did have a bag of 120Ω resistors from a long time ago, to use as signal terminators.) I ran even more continuity tests. I checked the 3V3 output voltage (3.28V) and the data line resistances (both about 360Ω). I think it's a dead sensor, possibly zotted before I added the inline resistors.

So, on to the ENC28J60 Ethernet shield for Nano. Again, the sample code didn't work. I tried EchoServer and TcpServer. I modified the example code to use a valid legacy IPv4 address (I decided the first test could be IPv4, even if my end goal is not to use legacy) on my home network, but I couldn't ping it, and I couldn't telnet to port 1000 on it. Additionally, my router didn't have a complete entry for it in its ARP table. Also, the link lights on the shield were off far more often than on. I ended up re-cabling everything in my computer room, both to simplify cables and connections, and to move the little unmanaged switch for extra ports to my desk so I could watch its blinking lights as well. Based on the indicators (no link lights on the ethernet shield, no link lights on the little switch, and no ARP entry on the router), I have to think this one is also dead. However, I also need to test this suggestion before giving up.

Yes, I think it's rather odd that two out of three components aren't working, and the two peripherals at that. It's possible that I need to work on some intermediate steps, to learn more about Arduino. Gee, more tinkering ...

Sunday, November 30, 2014

Google Calendar Sadness

I had been looking up ISS passes then adding to Google Calendar using the command line for a long time, but the last time I tried, it wouldn't work. After a quick search, that's because Google Calendar API v2 was deprecated on November 17, 2014. (I bet that's when my default calendar colors changed to garish, too.) There's one newer version of gdata-python-client than what I have installed, but since it was released more than a year before the the deprecation date, I doubt it uses APIv3.

From the look of the new client libraries, it's no longer as simple as google calendar add --cal Calendar "Event 11/17/2014 at 2:00 PM in Location" now. Very sad. I miss simplicity.

So, to replace just that command functionality, I guess I'll read about inserting events. sigh

Monday, November 24, 2014

Arduino Libraries

The next baby step with my Arduino is to load libraries into the IDE. (Yes, baby steps. It's easier for me to do in a short time that isn't as busy, and it's less likely that I'll get frustrated.) The directions to load Arduino libraries look easy enough.

The library for the HTU21D is linked with the directions, another easy step.

And then, despite trying to keep it simple, I thought that first library was so easy, let me add the library for the ENC28J60 Ethernet. Alas, that was a rabbit hole! Here is my saga.

ENC28J60 and Arduino: a history, with an eye to IPv6 support

My journey starts here with Reflective Heat:

The official Arduino Ethernet Shield is based on the WizNet 5100 chip, which implements the IPv4 protocol stack in silicon. As a consequence, the Arduino Ethernet Shield cannot be used to implement an IPv6 stack.

Most people use the ENC28J60 in place of the WizNet 5100, either for its low cost, or because I wanted IPv6 support. And now I step through a littered history.

EtherCard is a driver for the ENC28J60 chip, compatible with Arduino IDE, from Jean-Claude Wippler. Adapted and extended from code written by Guido Socher and Pascal Stang ... but I don't see IPv6!

Back to Reflective Heat. The RHT IPv6 library for Arduino is based on the work of Pascal Stang, Xing Yu, and Guido Socher for EtherShield and IPv6EtherShield from Günther Hoelzl. And I note:

The earlier ipv6etherhield developed by Guenther Hoelzl was tested but found to be unstable and would not compile on the most recent versions of the Arduino Integrated Development Environment (IDE).
However, I'm a bit nervous about the RHT offering because it only discusses Arduino UNO and Mega, and I have the Nano. So I thought I'd keep looking. Apparently I don't know enough to stay away from rabbit holes!

Hey, I found a list of Arduino IPv6 library choices and Telecom Bretagne is newer! but I don't want a wireless sensor network because wireless isn't as reliable as wired Ethernet. There are directions but for wireless, so I continue to look.

I found a blog with a whole category for Arduino and this Ethernet! but no IPv6 when I searched the blog.

So once again, I found myself back at the beginning, reading about Contiki's μIPv6 stack ported for 1-wire (original site appears to be offline now), but wrong microcontroller and wrong sensor family. However, μIP will appear again, with better luck next time.

The first two libraries at Tweaking4All also lack visible IPv6 support, but discuss the same problem of having a Nano instead of an UNO or a Mega (same concern I had with RHT!). The first set is ETHER_28J60 + EtherShield (from Jose Muanis Castro; mentioned by RHT); the second one is EtherCard (mentioned above). However, the third library looks like a winner! Do I see a nod to μIP? ... drumroll please ...

UIPEthernet has some IPv6! although with a gotcha noted. But I'm reminding myself that my small goal tonight is to load libraries, just the libraries, and not to discover what might be broken later. There are examples to test first!

There are some posts about which CS (chip select) pin to use for various configurations. I like this post because it shows where to change the underlying code if you don't want to re-wire.

Tuesday, November 18, 2014

Getting Started with Arduino

After my first attempt, I can say that getting started with Arduino is almost as easy as the directions! I have an Arduino Nano v3.0 with ENC28J60 ethernet shield and HTU21D temperature and humidity sensor module. But for reference, I did need to download drivers at Step 3, just not the FTDI driver mentioned. I needed to install a PL2303 driver for OS X 10.7 "Lion". There are many other PL2303 driver choices, too: from Prolific itself, on a plugable list, and from mac-usb-serial.

My first swing at it didn't work (no blinking light, but instead an upload error). That problem turned out to be that I had plugged everything into my oldest (and smallest) breadboard. The blink program successfully uploaded and worked with just Nano, and with Nano+Ethernet, so I only had to remove that breadboard to get it working. The first troubleshooting tip I tried was "Try uploading with nothing connected to the board (apart from the USB cable, of course)." Yay, that was it!

I consider my toes dipped in the water!

Thursday, June 5, 2014


Sunday night, while getting my boys cycled through the bath (one at a time due to Karston's toe surgery; he didn't want to take any chances) and getting all of us ready for Monday and oh-my-goodness-how-did-it-get-this-late, I had the thought, "I don't have time for dinner." Not merely was I thinking I didn't have enough time for a healthy dinner that I prepared, I was thinking I didn't have time for any dinner.

Screeeeech! Stop! Put on the brakes!

I may think some silly things, but I'd like to think that I can notice some of it, and improve.

So I thought about the problem while eating a big green salad (luckily that's my favorite food!) that I threw together quickly. In fact, I made two salads so I could chop up the whole head of lettuce. What I do in the late afternoon is fix dinner for my boys, and then fix dinner for myself. Especially when I'm not sure what I want, that can take some time. So I came up with a new plan: I'll eat leftovers for dinner, and then fix something tasty for the next meal(s). I don't have to rush with that meal preparation because I will have just eaten.

And that's what I did last night. I ate the other salad I made, and then I roasted a pan of vegetables (zucchini, mushrooms, onions, and red and yellow bell peppers with a little olive oil and salt). The only drawback is that I made the kitchen smell so good, I want to stay up and eat! Luckily I was too tired to eat, so I went to bed instead.

Friday, April 25, 2014

Self-Irrigating Planter

This weekend, we made self-irrigating planters from recycled water bottles, and planted marigold seeds that I hope will germinate in time for Teacher Appreciation Week.

The Wisconsin Fast Plants program covers the basics of making this planter from recycled plastic bottles. I incorporated the helpful comments on Seattle Sundries, too. Those directions are really useful.

I started with my drill, and made many small holes on the shoulder of the water bottles. I put one larger hole in the shoulder of the water bottles and in the bottle cap. Next I used my utility knife to separate the top of the bottle from the base. I experimented with where to cut until I found what looked good to me. This completed the "adult only" portion of the craft; happily, they enjoyed watching.

I knotted two sections of cotton twine in the middle, and we poked the knot through the hole in the cap with a toothpick. The outside of the cap had four "legs" while the inside had a knot to keep from pulling through. Then the boys screwed the cap on the top of the bottle. Next we placed the top, cap down, into the bottom of the former water bottle. I handed out narrow strips of aluminum foil for the boys to line the planter. One of the comments was that roots don't like sunlight, so unless the plant is to be transplanted, the roots need to shielded. Aluminum foil was the suggestion I remembered, and, well, it's fun to shape! They put a straw over the foil and through the larger hole in the top, and used cotton twine and a small piece of duct tape to fasten the straw securely to the side. Then I scooped in potting mix. We soaked the potting mix with water, and poured out the excess water from the base. Next I cut sections of duct tape, and the boys wrapped all the way around to tape the tops to the bottoms. They put 4 seeds in each planter. To finish this (later), we will wrap the outside of the planter to minimize algae growth in the water (see last item on Fast Plants page).

I don't know how well it will work, but I added the straw to refill the water in the base so the plants can continue to self-irrigate by wicking up the cotton twine indefinitely.