Quick Weekend Project: Resurrecting a Clock

IMG_0260

 

 

I have this Frank Lloyd Wright desk clock. I love the art and simplicity of it. In fact I love it so much that I’ve had it on my nightstand for 2 years without it working! The problem is that the single AA battery last for less than 2 months and I finally got tired of replacing it. I’ve thought about turning it into some sort of digital clock project, but then I had a much simpler idea. I’ll just plug it in.

 

 

Continue reading Quick Weekend Project: Resurrecting a Clock

Putting Data in ESP8266 Flash Memory

The ESP8266 has precious little RAM. You start with a little over 80KB, but the system takes up over 20K of that just for wifi and other required functionality. So best case you get under 60K of RAM for your use. In fact, if you use the Arduino toolchain you’ll be lucky to be left with 30K.

Lots of things you wouldn’t expect use up that RAM. If you’re using C++ and have virtual classes, each one will have a vtable, a little hidden piece of RAM that has pointers to virtual functions. That doesn’t mean you shouldn’t use C++ or even virtual functions. You just need to take care to minimize the number of virtual functions you use.

String constants are typically the biggest offenders. Since they’re constants, you’d think they would go into Flash. But on the Esp Flash memory has access restrictions. You have to access memory on 4 byte boundaries. Attempting to access the bytes of a string stored in Flash would cause a crash. Other data structures like constant arrays used for initialization go into RAM as well. If you’re not careful, you’ll use up all that precious RAM before executing a line of code.

It’s easy to specify that a string or other data structure go into Flash, but I’ve seen a lot of confusion about how to access this memory, so I’ll try to clarify.

Continue reading Putting Data in ESP8266 Flash Memory

Multicast DNS Tribulations

For my m8rScript project I really want to use Bonjour. It would give me a way of finding many ESP8266 devices on the network without having to nail down IP addresses. The concept is simple: you give your device a name, like yardweather. Then you type yardweather.local into your web browser and up pops the web page for your device. Additionally, you can broadcast a message on your network asking if any device supports a given service, and any device that does sends back information telling you about itself. So you can know how you are allowed to talk to it. Simple, right?

Continue reading Multicast DNS Tribulations

The Internet of Things

If you have even one nerd bone in your body, you’ve heard about the Internet of Things or IoT. It’s all the rage. There used to be a joke about connecting your toaster to the internet. It was a metaphor for just how crazy things might get someday if left unchecked. Well, that day is here[wpdevart_youtube]5yrGgiUD72U[/wpdevart_youtube]

m8rScript

The Internet of Things is really taking off. The ESP8266 has made it possible to add a powerful process with wifi to any project for a couple of bucks. Whether you doing a one off art project, or are building a home automation gizmo that you plan on funding with Kickstarter, the ESP8266 can be at the core.

I’ve gotten really excited about this new chip and it’s potential, so naturally I decided to write my own scripting language. When you say that sort of thing in the circles I run around in or when you read it in ESP8266 forums, you generally get a lot of push back.

Continue reading m8rScript

Easy Library Table

LibraryTableCompMy kids are in high school now so I thought it was time they had nicer desks than the ones we got them at Ikea. I wanted to make something that would last, that they could take with them to college and beyond. I also decided I didn’t want a desk with drawers on the side, just one small drawer at the top for pencils and papers. This was both because they already have roll around cabinets for bigger things and because I didn’t want to complicate this project with a lot of drawers, which are harder to build.

Continue reading Easy Library Table

Joinery for the Everyday Woodworker

08350-7Probably the most important skill for any woodworker is joinery. Attaching pieces of wood to each other is required on most any project and if it needs to withstand any kind of load you need a good strong joint. There have been lots of joinery techniques through the centuries, but modern techniques (together with modern glue) allow you to make stronger joints than every before.

Continue reading Joinery for the Everyday Woodworker

Remote Access Howto

Here’s the situation. You installed this cool sprinkler controller. You used a DHCP reservation so it’s always at the same ip address. Now you can always access it – as long as you’re connected to your home network. What if you’re in Hawaii?

IMG_1869

You’re sitting on the beach, sipping a nice drink from a coconut, and suddenly you realize that you just planted a new garden back home that really needs some extra watering. How do you control your sprinklers then?

What you need is the ability to remotely access your home network.

Continue reading Remote Access Howto

DHCP Reservations Howto

I recently installed an Open Sprinkler PI system in my house. This is a great system from Ray’s Hobby which has its own web server. You can access it from a web browser or with an iPhone app which talks to the same server. But you need to access the web server using an ip address, and the easiest way to set the system up is using DHCP, which assigns its own ip addresses. The only way to know what address the OSPI was given is to look at your router’s DHCP table, which is a giant hassle.

Continue reading DHCP Reservations Howto

Chris Marrin's Blog