Tag: ESP8266

Seismometer Project

A friend asked me if I had a seismometer. Nope. But I might be able to build one…

One approach would be to build a more traditional weight-and-spring kind of thing, but I thought I could do it more easily with a MEMS accelerometer. I had one laying around, so I decided to try it out.

I hooked up an LSM303DLH 6DOF accelerometer/magnetometer to an ESP-01 running an ESP8266 processor.

There are a few points of interest / investigation in this project:

  • What is the frequency response of this kind of accelerometer?
  • What are the frequencies of interest to this friend?
  • What sampling rates are possible for this device?
  • How to filter / smooth the raw data
  • Is calibration required?
  • How to present the data?

In this post, I’m just going to address one possibility for the last item. I will eventually log the data with timestamps into a file on a removable drive, but right now I want to see the data.

Cutting to the chase, here’s what it looks like. Click on it to see the chart move. (Whee!)

The web page is restricted to my home network, but you are welcome to the code.

Here’s a snapshot of the main Arduino program. The functions updateWebPage_root, updateWebSocket, and updateWebSocketArray are the ones you want to look at.

Apparatus to monitor the cycling of the hot tub pump

It’s working.

I may be having a problem with my hot tub pump – it’s running with shorter cycles than I remember it. That’s better for close temperature control, but worse for stress on the motor.
I had a problem with the pump’s computer unit once before – it was overheating and cycling more and more rapidly. So now I want to monitor it to see if its cycling is getting faster.

I can’t monitor it using a current sensor, since those ones I have are rated for 10A at 120V, while the motor unit uses 15A at 120V.

So I built a monitoring system – weather sealed a 1″ piezo disk, breadboarded a JFET amplifier for it, connected it to an ESP8266 microcontroller which I programmed to take readings at 480Hz, dot-product out the components at 60Hz and 120Hz (which for some reason is stronger) and send them via WiFi to my MQTT server, from which I scoop them with a Perl script to a log file (for now). I’ve determined the best discriminant between non-running and running with a z-score of 6.6+ from each, so I know it’s pretty good.
Now I can relax for a while while the data accumulates…

Data from the 60Hz and 120Hz dot-products:

7-Dec-2021 14:02:18: home/hot_tub_motor/a02/value/couplet -> 32.839 16.014
7-Dec-2021 14:02:24: home/hot_tub_motor/a02/value/couplet -> 29.103 16.061
7-Dec-2021 14:02:29: home/hot_tub_motor/a02/value/couplet -> 29.301 16.638
7-Dec-2021 14:02:35: home/hot_tub_motor/a02/value/couplet -> 32.062 17.769
7-Dec-2021 14:02:40: home/hot_tub_motor/a02/value/couplet -> 28.854 16.440
7-Dec-2021 14:02:45: home/hot_tub_motor/a02/value/couplet -> 33.069 16.328
7-Dec-2021 14:02:51: home/hot_tub_motor/a02/value/couplet -> 28.665 17.092
7-Dec-2021 14:02:56: home/hot_tub_motor/a02/value/couplet -> 28.019 18.892
7-Dec-2021 14:03:03: home/hot_tub_motor/a02/value/couplet -> 32.541 17.647
7-Dec-2021 14:03:07: home/hot_tub_motor/a02/value/couplet -> 29.323 16.411
7-Dec-2021 14:03:12: home/hot_tub_motor/a02/value/couplet -> 69.411 58.708
7-Dec-2021 14:03:17: home/hot_tub_motor/a02/value/couplet -> 38.942 56.288
7-Dec-2021 14:03:24: home/hot_tub_motor/a02/value/couplet -> 16.419 50.588
7-Dec-2021 14:03:32: home/hot_tub_motor/a02/value/couplet -> 25.903 59.193
7-Dec-2021 14:03:33: home/hot_tub_motor/a02/value/couplet -> 70.220 61.097
7-Dec-2021 14:03:40: home/hot_tub_motor/a02/value/couplet -> 60.011 61.728
7-Dec-2021 14:03:44: home/hot_tub_motor/a02/value/couplet -> 17.743 51.550
7-Dec-2021 14:03:49: home/hot_tub_motor/a02/value/couplet -> 37.571 57.612
7-Dec-2021 14:03:55: home/hot_tub_motor/a02/value/couplet -> 72.898 57.997
7-Dec-2021 14:04:00: home/hot_tub_motor/a02/value/couplet -> 23.630 55.861
7-Dec-2021 14:04:06: home/hot_tub_motor/a02/value/couplet -> 41.698 62.395
7-Dec-2021 14:04:11: home/hot_tub_motor/a02/value/couplet -> 56.960 59.568
7-Dec-2021 14:04:18: home/hot_tub_motor/a02/value/couplet -> 15.589 50.445
7-Dec-2021 14:04:22: home/hot_tub_motor/a02/value/couplet -> 71.046 62.314
7-Dec-2021 14:04:27: home/hot_tub_motor/a02/value/couplet -> 16.098 46.108
7-Dec-2021 14:04:32: home/hot_tub_motor/a02/value/couplet -> 70.857 61.175
7-Dec-2021 14:04:39: home/hot_tub_motor/a02/value/couplet -> 16.661 53.204
7-Dec-2021 14:04:45: home/hot_tub_motor/a02/value/couplet -> 73.267 63.262
7-Dec-2021 14:04:48: home/hot_tub_motor/a02/value/couplet -> 14.290 54.907
7-Dec-2021 14:04:54: home/hot_tub_motor/a02/value/couplet -> 70.185 61.067
7-Dec-2021 14:05:01: home/hot_tub_motor/a02/value/couplet -> 22.880 57.029
7-Dec-2021 14:05:06: home/hot_tub_motor/a02/value/couplet -> 51.657 55.721
7-Dec-2021 14:05:10: home/hot_tub_motor/a02/value/couplet -> 47.116 61.623

The hot tub motor started up at 14:03:12.

Data discriminated into “off” and “on”:

About to subscribe to topic 'home/hot_tub_motor/a02/status'
7-Dec-2021 14:42:21: home/hot_tub_motor/a02/status -> 0
7-Dec-2021 14:52:23: home/hot_tub_motor/a02/status -> 1
7-Dec-2021 15:03:02: home/hot_tub_motor/a02/status -> 0

I’m not sure why the vibration is at 120Hz and not at 60Hz. I’ll have to think about AC motors and how they operate now.

Yay! Another investigation!

Updating some, but not all, old technology

Lightning strikes. It struck near me, and fried a component of my old X10 home-control system.

X10 is a power-line-based communications network. Data is sent (slowly) over the house power lines by injecting a 120 kHz signal into the 60 Hz AC signal just after the zero-crossing of that signal. One bit per cycle is sent by either adding or withholding a short pulse of the 120 kHz.

[Read More...]