Thursday, June 27, 2019

Tuesday, January 15, 2019

Arduinos and SD cards

If you require an SD card interface for your Arduino project I highly recommend purchasing an Arduino with one built-in.  It took three attempts to get an SD card interface added to my basic Arduino Mega:

  1. A very cheap generic (“LC Studio”) break out module that seemed to work intermittently at best;
  2. A cheap shield (linksprite SD Card Shield v1.0b) - not compatible with the Mega (it does not state this on the packaging but if you search the documentation on their website it clearly states this, I should have done my research first);
  3. And finally, a not so cheap Ethernet plus SD card shield (Freetronics) that worked without a hitch.
I would have been better off spending the extra coin on a Mega with the SD card interface built-in and reclaiming most of my weekend...

Saturday, January 05, 2019

2019 Birding Targets (updated)


In no particular order, my 2019 targets are:

  • Wedge-tailed Shearwater (unsure how I have avoided this one)
  • Sooty Tern
  • Eurasian Curlew (simply because there is one nearby)
  • Sanderling
  • Malleefowl
  • Black-eared Cuckoo
  • Southern Scrub-robin
  • Gilbert’s Whistler
  • Australian Owlet-nightjar
  • Australian Little Bittern (Herdsman Lake looking good)
  • Barn Swallow (suspect I will need to upgrade my ID skills a bit for this)
  • Shy Heathwren
  • Rufous Fieldwren

Thursday, January 03, 2019

2019 Birding Targets

  • Wedge-tailed Shearwater (unsure how I have avoided this one)
  • Eurasian Curlew (simply because there is one nearby)
  • Sanderling
  • Malleefowl
  • Black-eared Cuckoo
  • Southern Scrub-robin
  • Gilbert’s Whistler

Wednesday, January 02, 2019

New Year, New Kit

I’ve finally updated my iPad from an original iPad Mini (64GB) to a new iPad 6th Generation (128GB).  The old iPad Mini was struggling with software updates and would not run the latest iOS.  I’ve paired the new iPad with a Logitech Slim Folio iPad Keyboard Case.

This blog post was created on the new kit.  I’ll post updates and reviews as I go.

Friday, December 21, 2018

Finch Update


Breeding season so far:
  • 3 x Red-billed Firefinches (suspect 1 male and 2 females);
  • 6 x Double-barred Finches (at least);
  • 3 x Painted Finches;
  • Plus the usual assortment of Zebra Finches.

Thursday, September 13, 2018

Rebble?

Just found this:

http://rebble.io

Is there life left in my Pebble smartwatches still?

Edit: Maybe not.  Sadly, the hardware seems to be failing.  I'm seeing lots of intermittent issues with the LCD screen.

Sunday, August 26, 2018

[Part 7] Arduino Data Logger

// ------------------------------------------------------------------------------------------------------------------------------------------------
// Project:   DataLogger
// Version:   0.4
// Date:      26 August 2018
// Author:    Greg Howell <gjhmac@gmail.com>
// ------------------------------------------------------------------------------------------------------------------------------------------------
// Version    Date              Comments
// 0.4        26 August 2018    Modified code to only log to the SD card if the new value is different to the old value
// 0.3        30 June 2018      Added debugging and diagnostics on serial port, sped up ADC for analogue read (128kHz -> 1MHz), fixed "A REF"
// 0.2        26 April 2018     Addition of switch to enable/disable logging to SD card and LED to indicate logging status
// 0.1        17 February 2018  Initial Development
//
// ------------------------------------------------------------------------------------------------------------------------------------------------
// Description:
//  - Logs analog0 value to a text file on the SD card along with date/time stamp in CSV format
//  - Maintains date/time via DS1302 Real Time Clock
//  - Builds with Arduino 1.8.5
// ------------------------------------------------------------------------------------------------------------------------------------------------

// #includes
#include <SPI.h>    // Serial Peripheral Interface
#include <SD.h>     // SD Cards
#include <DS1302.h> // DS1302 RTC

const int chipSelect = 4;
const int buttonPin = 5;  // Pin 5 is the button to enable/disable logging (digital input)
const int ledPin =  6;    // Pin 6 is the LED indicate logging status (digital output)

const byte PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
const byte PS_16 = (1 << ADPS2);

int buttonState = 0;      // initialise button state to off
int oldsensor;            // variable to store the previous sensor value (used in loop())

// Init the DS1302
// Pin 2 = RST
// Pin 3 = DAT
// Pin 4 = CLK
DS1302 rtc(2, 3, 4);
// ------------------------------------------------------------------------------------------------------------------------------------------------
// setup()
// ------------------------------------------------------------------------------------------------------------------------------------------------
void setup() {

  ADCSRA &= ~PS_128;  // remove prescale of 128
  ADCSRA |= PS_16;    // add prescale of 16 (1MHz)

  analogReference(EXTERNAL);  // Analogue reference set to "A REF" pin

  pinMode(buttonPin, INPUT);  // Initialize the pushbutton pin as an input
  pinMode(ledPin, OUTPUT);    // Initialize the LED pin as an output

  rtc.halt(false);            // Set the clock to run-mode
  rtc.writeProtect(false);    // and disable the write protection

  Serial.begin(9600);

  // Use following lines once to set clock if battery fails (modify to suit)
  //rtc.setDOW(SUNDAY); // Set Day-of-Week to FRIDAY
  //rtc.setTime(21, 50, 0); // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(26, 8, 2018); // Set the date to August 6th, 2010

  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // Print current system date from RTC at start up
  Serial.print("System date: ");
  Serial.println(String(rtc.getDateStr()) + "," + String(rtc.getTimeStr()));

  Serial.print("Initializing SD card...");

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    while (1);
  }
  Serial.println("card initialized.");
}
// ------------------------------------------------------------------------------------------------------------------------------------------------
// loop()
// ------------------------------------------------------------------------------------------------------------------------------------------------
void loop() {
  String dataString = "";                 // make a string for assembling the data to log
  int sensor = analogRead(A0);            // read analogue
  dataString += String(sensor);           // construct string with analogue signal
  buttonState = digitalRead(buttonPin);   // read button state

  // Logging enabled
  if (buttonState == HIGH) {
    File dataFile = SD.open("datalog.txt", FILE_WRITE);

    // if the file is available, write to it
    if (dataFile) {

      // if the new data is different to the old data write it to file
      if (sensor != oldsensor) {
        // Write data to serial output
        Serial.println(String(rtc.getDateStr()) + "," + String(rtc.getTimeStr()) + "," + dataString);
        Serial.println(String(sensor) + "," + String(oldsensor));
        // Write data to SD card
        dataFile.println(String(rtc.getDateStr()) + "," + String(rtc.getTimeStr()) + "," + dataString);
        dataFile.close();
      }
      else {
        dataFile.close();
      }
    // set logging LED to high
    digitalWrite(ledPin, HIGH);
  }
  // if the file isn't open, print an error
  else {
    digitalWrite(ledPin, LOW);
    Serial.println("error opening datalog.txt");
  }
}
  // Logging disabled
  else {
    // set logging LED to low
    digitalWrite(ledPin, LOW);
  }
  // set the old sensor value to the current sensor value (read at top of loop())
  oldsensor = sensor;
  // Wait before repeating :)
  delay (500);
}

Saturday, July 07, 2018

[Part 6] Arduino Data Logger

// ------------------------------------------------------------------------------------------------------------------------------------------------
// Project:   DataLogger
// Version:   0.3
// Date:      30 June 2018
// Author:    Greg Howell
// ------------------------------------------------------------------------------------------------------------------------------------------------
// Version    Date              Comments
// 0.3        30 June 2018      Added debugging and diagnostics on serial port, sped up ADC for analogue read (128kHz -> 1MHz), fixed "A REF"
// 0.2        26 April 2018     Addition of switch to enable/disable logging to SD card and LED to indicate logging status
// 0.1        17 February 2018  Initial Development
//
// ------------------------------------------------------------------------------------------------------------------------------------------------
// Description:
//  - Logs analog0 value to a text file on the SD card along with date/time stamp in CSV format
//  - Maintains date/time via DS1302 Real Time Clock
//  - Builds with Arduino 1.8.5
// ------------------------------------------------------------------------------------------------------------------------------------------------

// #includes
#include    // Serial Peripheral Interface
#include     // SD Cards
#include // DS1302 RTC

const int chipSelect = 4;
const int buttonPin = 5;  // Pin 5 is the button to enable/disable logging (digital input)
const int ledPin =  6;    // Pin 6 is the LED indicate logging status (digital output)

const byte PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
const byte PS_16 = (1 << ADPS2);

int buttonState = 0;      // initialise button state to off

// Init the DS1302
// Pin 2 = RST
// Pin 3 = DAT
// Pin 4 = CLK
DS1302 rtc(2, 3, 4);
// ------------------------------------------------------------------------------------------------------------------------------------------------
// setup()
// ------------------------------------------------------------------------------------------------------------------------------------------------
void setup() {
  
  ADCSRA &= ~PS_128;  // remove prescale of 128
  ADCSRA |= PS_16;    // add prescale of 16 (1MHz)

  analogReference(EXTERNAL);  // Analogue reference set to "A REF" pin
  
  pinMode(buttonPin, INPUT);  // Initialize the pushbutton pin as an input
  pinMode(ledPin, OUTPUT);    // Initialize the LED pin as an output

  rtc.halt(false);            // Set the clock to run-mode
  rtc.writeProtect(false);    // and disable the write protection

  Serial.begin(9600);

  // Use following lines once to set clock if battery fails (modify to suit)
  //rtc.setDOW(THURSDAY); // Set Day-of-Week to FRIDAY
  //rtc.setTime(15, 50, 0); // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(26, 4, 2018); // Set the date to August 6th, 2010

  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // Print current system date from RTC at start up
  Serial.print("System date: ");
  Serial.println(String(rtc.getDateStr()) + "," + String(rtc.getTimeStr()));

  Serial.print("Initializing SD card...");

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    while (1);
  }
  Serial.println("card initialized.");
}
// ------------------------------------------------------------------------------------------------------------------------------------------------
// loop()
// ------------------------------------------------------------------------------------------------------------------------------------------------
void loop() {
  String dataString = "";                 // make a string for assembling the data to log
  int sensor = analogRead(A0);            // read analogue
  dataString += String(sensor);           // construct string with analogue signal
  buttonState = digitalRead(buttonPin);   // read button state

  // Logging enabled
  if (buttonState == HIGH) {
    File dataFile = SD.open("datalog.txt", FILE_WRITE);

    // if the file is available, write to it:
    if (dataFile) {
      // Write data to serial output
      Serial.println(String(rtc.getDateStr()) + "," + String(rtc.getTimeStr()) + "," + dataString);
      // Write data to SD card
      dataFile.println(String(rtc.getDateStr()) + "," + String(rtc.getTimeStr()) + "," + dataString);
      dataFile.close();
      digitalWrite(ledPin, HIGH);
    }
    // if the file isn't open, pop up an error:
    else {
      digitalWrite(ledPin, LOW);
      Serial.println("error opening datalog.txt");
    }
  }
  // Logging disabled
  else {
    digitalWrite(ledPin, LOW);
  }

  // Wait before repeating :)
  delay (200);
}

[Part 5] Arduino Data Logger

Connected "A REF" pin to 5VDC power supply.



[Part 4] Arduino Data Logger

Now with added 500mA fuse.


Saturday, April 28, 2018

[Part 2] Arduino Data Logger


  • For the external plug pack I selected the POWERTRAN MB8968B from Altronics.  Input is 100-240VAC @ 50-60Hz/0.8A, output is 24VDC @ 1A.
  • To produce the 5VDC (from the 24VDC) for the Arduino I selected the Z6334 DC-DC Buck Module from Altronics.  Input is 3-40VDC, output 1.5-35VDC @ 3A maximum (adjusted to provide a 5VDC output).
  • To maintain the date and time while the logger is powered off I selected the DS1302 based Real Time Clock Module from Altronics.  Reports online indicate that the DS1302 chip can be unreliable (as opposed to the DS1307) but I have had no issues with the one I purchased.
  • The Arduino I selected was one I had already, the Freetronics EtherTen.  The on-board MicroSD slot was the main reason I decided to use this, I didn't require the Ethernet port.

Thursday, April 26, 2018

[Part 1] Arduino Data Logger

This is the first post in a series in which I'll document the development of an Arduino-based data logger. The requirements for this data logger are:
  • Data to be logged is a 4-20mA current loop signal (2-wire) from a sensor (using 4-20mA for analogue measurement is an industrial automation standard);
  • Sensor requires a 24VDC supply (I'll be using a 240VAC-to-24VDC transformer plug pack to provide the 24VDC so there will be no mains supply work required);
  • Whole system to be contained in a box that can be sealed up and made "weather-proof".

Saturday, January 27, 2018

Minitrix British N-Gauge Class 42 Warship

N206
Class 42 Warship (D82 "Hermes") Bo-Bo Diesel

Minitrix British N-Gauge Class 27

N204
Class 27 (D5379) Bo-Bo Diesel
N212
Class 27 (27014) Bo-Bo Diesel


Sunday, January 21, 2018

SM Bus Controller Driver for Lenovo ThinkPad X220i

If you are installing Windows on a Lenovo ThinkPad X220i and wondering (like me) why the Lenovo drivers don't seem to work for the SM Bus Controller, have a look at the following link.  In case you are wondering, the SM Controller is a motherboard chipset that monitors temperatures and voltages (SM = "System Management").

Saturday, January 20, 2018

Mini Punch-List (updated)

Current list of things to sort on my 1975 Mini Clubman:
  • Speedometer - currently not working, have a second one (and now a third one) but not much luck so far;
  • Windscreen wipers - currently not working, now have a working set in the shed to try;
  • Doors - rusty and in a state of disrepair, newer rust free doors require stripping, preparing, painting and fitting;
  • Numerous small body repairs - usual stuff for a 42 year old car.
  • Clutch hydraulics are non-functional...

Wednesday, August 16, 2017

Mini Punch-List

Current list of things to sort on my 1975 Mini Clubman:
  • Speedometer - currently not working, have a second one but not much luck so far;
  • Windscreen wipers - currently not working, now have a working set in the shed to try;
  • Doors - rusty and in a state of disrepair, newer rust free doors require stripping, preparing, painting and fitting;
  • Numerous small body repairs - usual stuff for a 42 year old car.

Sunday, June 25, 2017

Planes I have flown in (updated to include Saab 340)

Tuesday, May 02, 2017

May 2017 Update

So it's been a while since I've posted.  Notice a theme?
Anyway, here goes:

  • I've quit my job as a Control Systems Engineer in the mining industry and have started a new job as a Control Systems Engineer in the grain handling industry.  The change has been good and I feel reinvigorated.  I'm enjoying engineering more as I no longer have people reporting to me.  I'm also going away with work a lot less (and when I do go away it's generally a day trip).
  • I'm catching the bus to and from work so the 1975 Mini Clubman is no longer a daily drive.  I'm getting some of the more involved work done on it now (disc brakes and suspension).  I'm planning on it being a fairly original car with some upgrades for safety (disc brakes and suspension) and for the look (period roof rack, possibly a rear window shade).  Recently fitted new plugs and leads as it lost a cylinder...

Monday, December 12, 2016

End of 2016 Update

So it's been a while since I've posted an update.  Apologies to my regular readers...

Here is a point form update:
  • Work and life are very busy (so no change there);
  • I'm not sure what I think about Fitbit buying Pebble (I don't remember an acquisition like this ever going well);
  • The finches are doing well, the Painteds seem happy and are breeding, the Zebras perhaps a little too happy...;
  • Bird watching has taken a bit of a hit (closely related to amount of free time available unfortunately);
  • Using a 1975 Mini Clubman as a daily driver seems to be going well (after the clutch was replaced).

Wednesday, June 15, 2016

Planes I have flown in (updated to include Airbus A320)

Wednesday, March 09, 2016

Planes I have flown in (updated to include Fokker 70)

Monday, February 08, 2016

Minecraft on an iMac Core 2 Duo 2.4 GHz 20-inch (Al)

Just in case anyone out there on the Internet would like to know, the current version of Minecraft runs quite happily (according to Mr 7 y.o.) on an iMac Core 2 Duo 2.4GHz 20-inch (Al).  The iMac has 4GB of RAM and is running Mac OS X 10.11 "El Capitan".

Sunday, February 07, 2016

Pebble Smartwatch

I am now the proud owner of a Pebble Smartwatch (I went for the "Classic" version).  It seems to play nicely with my iPhone 5s.  My favourite "watchface" at the moment is the built in "time as text" one (although I do think the iWatch one is cool).

I have installed the Pebble SDK and I am going to try to develop an app/watchface or two.  Stay tuned.

Friday, September 18, 2015

Birds seen from my office window

List of birds seen from my first floor office window in Applecross, Perth, WA (in order seen/recorded).
  1. Silver Gull - regular fly-bys throughout the day
  2. Singing Honeyeater
  3. Rainbow Lorikeet - frequent
  4. Galah
  5. Australian Magpie - nesting nearby
  6. Australian Pelican - seen circling high
  7. Australian Raven - nesting nearby
  8. Red-tailed Black-cockatoo
  9. Red Wattlebird
  10. Laughing Dove
  11. Australian White Ibis
  12. Rock Dove
  13. Spotted Dove
  14. Willie Wagtail - road verge
  15. Brown Honeyeater
  16. Magpie-lark
  17. Black-faced Cuckoo-shrike
  18. Eastern Osprey
  19. New Holland Honeyeater
  20. Carnaby's Black-Cockatoo
  21. Laughing Kookaburra

Sunday, September 13, 2015

Update

Life is busy.
That is all.

Saturday, May 16, 2015

Bengalese Finch (Society Finch)

_MG_9897
One of my Bengalese Finches in my aviary.  Lovely little finches.