The ShackBox project is documented in Practical Wireless, April 2018. If you require further information, such as the associated circuit diagram, then please contact me at [email protected].
Update May 7th, 2023
Since writing this software libraries have moved on, some are difficult to find, and some no longer work when combined with other required librraies. To help resolve these issues the three required libraries are available in the "Required Libraries" folder. To make use of these simply copy all three library folders to the This PC > Document > Arduino > Libraries folder - this is for the Arduion IDE V1.8.9. If you do this then step 1 below can be ignored.
To build and install this software you will need to:
- Install the Ardiuno Interactive Development Environment. This can be found here:
https://www.arduino.cc/en/Main/Software
Once installed you will need to install the following libraries.
-> Adafruit BMP085 Library by Adafruit 1.0.0
This can be done from the Sketch | Include Library | Manage Libraries... menu option.
-> Library for the LiquidCrystal LCD display connected to an Arduino board
This can be downloaded from here:
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
The link also provides installation instructions.
-> Efficient alternative to SoftwareSerial with attachInterrupt for RX chars, simultaneous RX & TX
This can be downloaded from here:
https://github.com/SlashDevin/NeoSWSerial
It can be installed in a similar fashion to the LCD library
- Connect the Arduino to your PC using the correct cable.
- On the Tools | Board menu option select "Arduino Nano"
- On the Tools | Port menu option select the correct COM port for the connected device.
- Select the Sketch | Upload menu option. This should compile the code and upload it to the Arduino Nano.
At this point your software is installed. This the circuit is complete and correctly built then you should see data on the display.
Fault Finding
The BMP180 and I2C LCD units sit on the I2C bus and each has a unique address.
The Adafruit BMP085 code assumes an address of 0x77 – see Adafruit_BMP085.h line 30.
The I2C LCD code assumes an address of 0x27 – see ShackBox.ino line 280.
If either of these are incorrect that you will get failure. If the BMP085 address is wrong, then the temperature / pressure will probably display as zero. If the I2C LCD address is wrong, then you will get no display.
If problems are found, then the code here:
https://playground.arduino.cc/Main/I2cScanner
can be used to scan the bus a derive the correct addresses. It’s probably best to unplug one of the devices, and the easy one to unplug is the LCD, so remove any confusion about which address is being returned.
The code should then be changed to reflect any new addresses and recompiled.
If you get the spash screen up and nothing more then the GPS unit may be emitting unexpected talker IDs in the NMEA. It would be worth looking at lines 146 and 155 and changing the $GP text to $GN.
There has been a report of an uploading issue where the code compiles but fails to upload to the Arduino. Typically this looks like:
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
It turns out there the are devices out there with 'old' bootloader code and to resolve the issue you need to select the ATmega328P (old Bootloader) option in the Tools menu of the IDE.