An Intel Galileo running without wires

Pretty much did everything here: Intel Galileo Meets Wireless, except I used one of the supported cards. These are the components that I bought on eBay:

Instagram filter used: Lo-fi

View in Instagram ⇒

Power Cost Monitor signals — for reals!

After doing almost nothing with the Arduino and the elusive Power Cost Monitor signal, I’m finally getting something from it. Matt Colyer’s Power Monitor sketch does all the heavy lifting, for he managed to reverse engineer the protocol. His solution is a rather complex one, involving ethernet shields and Ruby. All I wanted was a simple serial logger, so I cut down Matt’s code, and modified the network output to simple print statements:

== Waiting (38464857ms, 1676 bytes) ==
== Sending (38467858ms, 1668 bytes) ==
sample[data]=0000000a
sample[data]=0000015a
== Waiting (38467863ms, 1676 bytes) ==
== Received (38592156ms, 1670 bytes) ==
== Waiting (38592157ms, 1676 bytes) ==
== Sending (38595158ms, 1668 bytes) ==
sample[data]=00000000
== Waiting (38595159ms, 1676 bytes) ==
== Received (38624334ms, 1670 bytes) ==
== Waiting (38624335ms, 1676 bytes) ==
== Sending (38627336ms, 1668 bytes) ==
sample[data]=ffffe746
== Waiting (38627337ms, 1676 bytes) ==
== Received (38688007ms, 1670 bytes) ==
== Waiting (38688009ms, 1676 bytes) ==
== Received (38688045ms, 1670 bytes) ==
== Waiting (38688046ms, 1676 bytes) ==
== Sending (38691047ms, 1668 bytes) ==
sample[data]=00001748
sample[data]=00000008
== Waiting (38691052ms, 1676 bytes) ==
== Received (38720026ms, 1670 bytes) ==
== Waiting (38720027ms, 1676 bytes) ==
== Sending (38723028ms, 1668 bytes) ==
sample[data]=00000000
== Waiting (38723030ms, 1676 bytes) ==
== Received (38783686ms, 1670 bytes) ==
== Waiting (38783687ms, 1676 bytes) ==
== Sending (38786688ms, 1668 bytes) ==
sample[data]=00000011
== Waiting (38786689ms, 1676 bytes) ==
== Received (38815636ms, 1670 bytes) ==
== Waiting (38815637ms, 1676 bytes) ==
== Sending (38818638ms, 1668 bytes) ==
sample[data]=fffff322
== Waiting (38818639ms, 1676 bytes) ==
== Received (38847547ms, 1670 bytes) ==
== Waiting (38847548ms, 1676 bytes) ==
== Sending (38850549ms, 1668 bytes) ==
sample[data]=00000001
== Waiting (38850550ms, 1676 bytes) ==
== Received (38879444ms, 1670 bytes) ==
== Waiting (38879446ms, 1676 bytes) ==
== Sending (38882445ms, 1668 bytes) ==
sample[data]=0000374f
== Waiting (38882446ms, 1676 bytes) ==
== Received (38911210ms, 1670 bytes) ==
== Waiting (38911211ms, 1676 bytes) ==
== Sending (38914212ms, 1668 bytes) ==
sample[data]=00000043
== Waiting (38914213ms, 1676 bytes) ==
== Received (39006981ms, 1670 bytes) ==
== Waiting (39006982ms, 1676 bytes) ==
== Sending (39009982ms, 1668 bytes) ==
sample[data]=00000000
== Waiting (39009983ms, 1676 bytes) ==
== Received (39038895ms, 1670 bytes) ==
== Waiting (39038896ms, 1676 bytes) ==
== Sending (39041897ms, 1668 bytes) ==
sample[data]=00000001
== Waiting (39041898ms, 1676 bytes) ==
== Received (39102999ms, 1670 bytes) ==
== Waiting (39103000ms, 1676 bytes) ==
== Sending (39106001ms, 1668 bytes) ==
sample[data]=00000000
== Waiting (39106002ms, 1676 bytes) ==
== Received (39134880ms, 1670 bytes) ==
== Waiting (39134881ms, 1676 bytes) ==
== Sending (39137882ms, 1668 bytes) ==
sample[data]=00000001
== Waiting (39137883ms, 1676 bytes) ==

Now it’s just a small matter of programming to work out what Matt’s Ruby code does. Ruby always looks to me like two programmers started coding at different ends of the same line, and collided in the middle. I’m hoping there’s enough processing power in the Arduino to do the conversion in the chip, and output useful log data as a serial stream.

More later …

 

 

Wireless, Cordless Raspberry Pi

Yay! I found a wireless adapter that the Raspberry Pi is able to power without an external hub. It’s a Belkin N150 Micro Wireless USB Adapter. Not sure of the range, but it works well enough, and is cheap.

Just to show you how hard-core I am, that’s a screenshot of a browser (showing a picture of the Raspberry Pi + LSTech Solar charger) running on that Raspberry Pi with an X session tunnelled to the laptop you can see in the background. My head hurts now.

on the trail of the elusive Power Cost Monitor signal

Catherine probably thought I was acting no more strangely than usual last night, when I was holding the Power Cost display unit in one hand, frobbing the electric stove control with the other, all the while watching a digital clock and cackling gently to myself.

All this makes me think I’m a bit further on with getting something from the Power Cost Monitor. Previous attempts using cheap wireless units (and cluelessness on my part — never forget that) got nothing, so I caved and bought the rather expensive but nice Parallax 433 MHz RF Transceiver from Solarbotics.

The Parallax unit adds an analogue output that’s proportional to the instantaneous signal strength. I hooked up the output to the trusty sdfatlib analogue logger, set the logger to sample every 50ms (figuring that, every now and again, it’s going to see part of a transmission) and this is what I saw:

Pretty noisy, I know. But look, there are regular peaks:

Here I’ve highlighted all the peaks with signal strength ≥ 200 (in arbitrary units, where 1024 would be full scale). It’s pretty regular; the largest peaks come in a shade under every 32 seconds, or a multiple thereof. If you need additional decimal places to validate your worldview, I’m thinking the period’s around 31.86s.

Observations made during last night’s frobbing and cackling episode seem to confirm that the display updates about every 32s. If you adjust the load mid-cycle, nothing changes until the update. If the display misses an update, it’ll refresh in 64 or 96 seconds.

I don’t yet know what bitrate the data comes through at, or the protocol. I’ve logged some data recorded at various rates: 433mhz_powercost_data. The file names give a hint at the data rate; L1200V04 was recorded at 1200bps, for example. I’m guessing that there’s some kind of sync header, then the total value and the current temperature (which was around/below freezing at the time). I need to work on that.

Update: I rewrote the logger to use the Arduino’s internal UART, since — lovely though NewSoftSerial may be — it causes millis() to report wildly inaccurate times at low bit rates. I recorded a bunch more data (powercost-arduino2.zip) in a slightly more useful text format. It has three columns:

  • the time, in milliseconds, at which the record was recorded
  • the time difference between this and the previous record, in milliseconds. Maybe not as useful as it could be. If adjacent records are about 31860ms apart, they’re transmissions from the meter.
  • 120 bytes of data recorded at the current bit rate (given in the file name) encoded in hex.

I’ve also included the Arduino sketch, which could be better documented.

across the universe, or eula à gogo

In the Holiday Inn Express in St Louis again. Their clickwrap EULA for wireless access from Zerowire Networks is hilarious. The whole text is quoted after the cut, but the highlights include:

  • anything you transmit over the network (like your credit card details, your login for legopr0n.com, or this blog posting) belongs to the hotel, and “may be processed, used, reproduced, modified, adapted, translated, used to create derivative works, shared, published and distributed by HOTEL in its sole and absolute discretion in any media and manner irrevocably in perpetuity in any location throughout the universe”. So I’m sure the murals at the first Holiday Inn Express on Mars will be decorated with credit card info.
  • Riddled with typos and random copy-and-pasted sections, you nonetheless “waive any right to claim ambiguity or error in this Agreement!” [yep, the exclamation mark’s part of it too]
  • About half way into it, it starts representing Hilton Hotels, rather than Holiday Inn. I suspect Ctrl-C, Ctrl-V here.
  • Gives up-to-the-minute advice for setting cookie preferences for IE4, a browser that became obsolete in 1998.

As it’s such a mishmash, I think I’m pretty much exempted, ‘cos I crossed my fingers behind my back before clicking “Accept” …

easily amazed

I know the technology is not that nifty, but I amused and amazed myself by sshing into the home server whilst on the Via train somewhere between Smith’s Falls and Ottawa.

tidyin’, fixin’, payin’, all the while livin’ off plastic

  • Income taxes filed. Some tidying was required in order to find all the necessary paperwork. I know it’s ages before the deadline, but Catherine needs it early for her US taxes.
  • Noticed the last two water bills were double what they should have been. A $3 flapper valve for the loo should sort that. You’d never get that with a British syphon flush …
  • One of the neighbours just got a Linksys wireless router (with no encryption and default passwords, no less), so I had to rename and rechannel ours. Most hassle was getting the WET54G wireless bridge to talk to the new location. It didn’t help that it had the oldest version of the firmware in the world, plus it kept trying to rejoin the neighbours’ network.
  • Braved IKEA. I now have a basement server/printer rack fashioned from multiple Rast bedside tables screwed together.
  • Opened up the outside tap, now that the threat of -20°C weather is gone for the year.
  • Paid many, many bills, some of which were routed from their mulching sleep while I was  looking for tax paperwork.
  • Joined worthy societies like FOE and Greenpeace.
  • Saw Sharkwater. You should, too.
  • My new Interac card is less than interactive. I’m sure I managed to get it to work once, but now it’s gone dead. This means a trip to the Honkers & Shankers on Spadina, always a joy …

back to 32-bit

I think I’ll have to install Ubuntu for i386 on the Sempron box, as too many hardware things don’t work. At the moment, I’m stuck with unaccelerated graphics and wired etherent; the via graphics driver isn’t yet 64-bit clean, and none of my wireless adaptors have 64-bit drivers, either.

Maybe at the next release I’ll go 64-bit.

Maybe it was too easy …

Configuring the rest of the Sempron box has been a slog. It seems that there isn’t a single wireless adaptor that works with 64-bit Linux. I might have to resort to a wireless ethernet adaptor, like the D-Link DWL-G820. They’re not cheap, but they may be the only option.

Deep Thoughts from the St Louis HIExpress

From the wireless internet instructions at the St Louis Holiday Inn Express at S. Jefferson & Lafayette:

Do I need to pay for it?
No you do not have to pay anything. It is Free. Poo Management is offering it for free for all the guests for all hotels.

It would seem that Poo Management, Inc., is a hotel franchise holder in St Louis. No, really.

death of a dongle, again

That’s the second SMC 2862W-G USB Wireless-G dongle that’s given up on me. They’ve both run okay for a while, then overheated, and given up. From then on, they’ll only work for a few minutes, then stop. The folks at Sonaggi must be getting tired of me bringing them back.

wireless dilemma

Okay, so I’ve got two wireless cardbus cards — an SMC 2435W and a D-Link DWL-650+. Both use the same chipset. Which to keep?

Yes, this evening saw Stewart wandering about his street in Scarborough seeing where each card gave out. I got some strange looks.

I think the D-Link card has the edge in range, being able to connect from across the street. It was a bit more expensive, and it has a bulkier aerial. The SMC is more svelte, and was less than half the price. I’d probably recommend both cards, if you can handle the hassle of building the acx100 driver.

I should really test their battery drain. I have a felling that the D-Link’s a bit of a hog, as my battery is dropping quite fast.