Updating Bastet firmware might be a challenge because the current toolchain distributed with Arduino IDE doesn't support its microcontroller.
Arduino IDE for ATmega328PB
MewPro Bastet uses ATmega328PB as its microcontroller. ATmega328PB is QUITE DIFFERENT than ubiquitous ATmega328P (without trailing B) that is used in Arduino Uno, Arduino Pro Mini etc.
In order to compile source code and to upload binary to the chip it is required to install the following files to your Arduino IDE 1.6.x or 1.8.x:
Atmel atmega328pb Xplained mini core package
Missing tool chain files for ATmega328PB
These are explained below.
Install Atmel atmega328pb Xplained mini core package
(In the following we assume you have already installed Arduino IDE to your PC. If not then please download the Arduino IDE and install it before proceeding.)
Open your Arduino IDE application on your PC. Then select [Tools]->Board->[Boards Manager]. Then a dialog box for selecting boards is shown. You will find "Atmel AVR Xplained-minis by Atmel University France" in the list.
Click the line and select [Install] button. This installs the definitions necessary to compile source codes for ATmega328PB using Arduino IDE.
Regrettably, following two modifications are yet necessary for installed core files but these steps are not done automatically.
boards.txtfile and edit it:
The file is located at
~/Library/Arduino15/packages/atmel-avr-xminis/hardware/avr/0.6.0/boards.txtunder Mac or
~is your home and
0.6.0the version of core.
Then the line
required to be modified to
avrdude.conffile and edit it:
The file is located at
Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.confunder Mac or
/Program Files(x86)/Arduino/hardware/tools/avr/etc/avrdude.confunder Windows.
Since the file lacks the definition for ATmega328PB, find these six lines
part parent "m328"
id = "m328p";
desc = "ATmega328P";
signature = 0x1e 0x95 0x0F;
ocdrev = 1;
and add the following lines after them: avrdude-add.conf
Install the missing tool chain files
The current avr-gcc toolchain automatically installed with Arduino IDE does not support ATmega328PB. So we must update/overwrite the chain manually.
The original updating instruction is here, but you should follow this step only:
###Installation on Arduino IDE 1.8+
- The current avr-gcc toolchain (4.9.2-atmel3.5.3-arduino2) has not all files for the Atmega328PB. So you have to update the files in
/arduino/hardwarewith the files from this repository under hardware.
The directory is located under Windows in
/Program Files(x86)/Arduino/hardwareand under Mac in
Take care to unzip the downloaded file at the proper location!
More precisely, under Windows do:
- Right click the downloaded
- Select "Extract all"
- Fill the "Files will be extracted to the folder" textbox as
- Dialog box "The destination has 5 files with the same names" is shown: Tick "Replace the files in the destination"
Under Mac do:
- Open "Terminal" application and type the following Unix commands
unzip -o hardware.zip
Compile and Upload
MewPro Bastet and MewPro Iliad share the same source code for Hero 4 Silver/Black.
The code needs Time and TimeAlarms libraries that are downloadable from
the PJRC site.
After installing the libraries uncomment the line 44 in
# include <TimeLib.h>
And also if you haven't installed IRremote library or RTClib (these are required for MewPro Iliad) then comment out respective lines 29 or 38 as
//# include <IRremote.h>
//# include "RTClib.h"
Then, to compile the code and to upload the firmware to Bastet, just select [Tools]->[Board: Atmel atmega328pb Xplained mini] and set [Tools]->[Port] to your FTDI port.
Note 1: The source code is defaulted to use Bastet with GoPro Hero 4 Black. If you like to use Bastet with GoPro Hero 4 Silver then modify the 7th and 8th lines in
#undef HERO_4_BLACK and
#define HERO_4_SILVER, respectively.
Note 2: If you like to use Bastet in the good old housing that came with GoPro's discontinued Dual Hero system for Hero 3+ Black then it's better to modify the 49th line in
#define DUAL_HERO_ORIENTATION. This will enable the slave camera to be upside down regardless of master's orientation setting.
Connecting Sparkfun FTDI breakout 3.3V to Bastet is the same as doing so to MewPro 2 board. Thus, please refer the blog post for MewPro 2 at "Connection" section.
Note 2: If you soldered Bastet at the back of master MewPro 2 as in this picture then you can update both firmwares as they remain soldered. To do this just set an "Arduino Mini Temporary FTDI Header" from either the right side (i.e., from the part side) for Bastet or the left side (i.e., from the connector side) for MewPro 2 when needed.