BoSL Board nano
The BoSL nano will be a more feature enabled version of the BoSL micro while still retaining the small form factor.
Key changes from the BoSL:
- Upgrade SIM7000 to smaller nRF9160
- Remove much of the connectivity to achieve smaller profile
- Add NFC
- Make board much smaller. No more than 15 mm in width.
- Removed MS5803
A number of new components will be used in this design.
The MCU will be the SAMD21G18. The modem used will be the nRF9160. It will also incorporate NFC. The connectivity will expose 7 analog pins and 10 digital pins as well as several power pins and an I2C interface. A diode O-ring similar to that on the microBoSL utilizing the MAX40203ANS will be incorperated so that the device may be powered either via USB or battery supply.
Its maximum dimensions are to be no wider than 15mm.
The architecture of this board will be similar to the main BoSL board. We will use the SAMD21G as the main processor and the nRF9160 as our LTE modem.
Contents
18th Decemeber 2020
The first question on using the SAMD21G and the nRF9160 is a question of how these will be programmed. The boot-loader for the SAMD21G will be the Arduino MRK Zero board. This is because it has a built in SD card interface and generally is the most similar to the design. The nRF9160 will be connected via UART on the hardware serial interface. Also after the NFC chip this leaves 14 I/O pins free for end user application. The split is 7 analog and 7 digital pins, all are capable of interrupts.
The SAMD21G bootloader can be installed via a SWD interface and relevant programmer. These pins will be exposed. There are multiple programmers available on the market, a specific one has not been decided yet.
20 May 2021
We have made a mistake in the manufacturing the switch SW1 has 4 terminals and our footprint shorts it out.
12 July 2021
The boot-loader was able to be uploaded to the SAMD and after this programs could be uploaded via the arduino IDE and USB. The following steps were used to compile and upload the bootloader. The process was mostly straightforward however various packages and tools were needed to be installed to compile the bootloader.
Simple functions were then verified like RTC and analog reading. These were all working normally.
Some work was done to fixed up the boot loader and board definitions to match the circuit of the BoSL nano. These new definitions will be made available to download at a future time.
13 July 2021
These board definitions were finished and packaged up as a board in the arduino IDE board manager. Some of the custom pin functions were given specific names under the board. This includes, VNFC, for the nfc voltage. A full list will be documented soon. The used bootloader is also included in this package.
The current consumption was measured on a blank script. This was measured at 65 mA. Which is quite high, however the nRF9160 has not been flashed with any firmware yet so it is likely to be in some idle state. Placing the SAMD21 in sleep mode reduces the current consumption to 35 mA.
15 July 2021
It was found pull-up resistors were needed to be added to get the I2C bus to function. These should be included in the next revision. The nRESET resistor on nrf9160 should also be removed as it is not recommended in the datasheet.
16 July 2021
The process to get the nRF9160 to work has been a bit more complicated than desired. The Nordic SDK was needed to be installed. From this example applications could be built from the command line and then flashed with the J-link and Nordic flash utility. The SDK requires each a definition of the configuration of each board. I have copied the board definition for the nRF9160 development kit, and relabeled it for the BoSL nano. This definition can be used ot define where the USART interface goes and all that. I am still learning how these definitions work. So far I have been able to build the zephyr/blinky example to get the onboard LEDs to blink. Most of this learning has been following the nordic SDK documentation.
I was then able to get USART to work via editing the usart device definitions in the zephyr board configutation. After this the serial LTE modem firmware was attempted to be run. This once built on the non-secure built option. And with build configuration of uart2 (which had the correct pin-out and with hardware flow control disabled via commenting out in the bosl_nanons.overlay file in the source directory) it was able to be used with a serial pass through application developed on the SAMD. The module was now responding to AT commands. Following the AT command manual the GPS was tested and found to be working. The performance was quite good with a time for first fix (TFF) of 131s while indoors. The current BoSL board cannot get a gnss fix while indoors most of the time and often has a TFF of several minutes. The bosl nano has passed this large milestone, and looks to be largely functional. Will be on finialising a version of the AT client with extra features such as LED debug.
19 July 2021
A detailed description of how to setup an environment to build the nRF9160 firmware is described here
22 July 2021
The BoSL nano was able to upload to the testing server over LTE. Once registered to the network this was achieved with the following command chain.
AT#XHTTPCCON=1,"www.bosl.com.au",80
Which connects to the bosl server over http, and then in brief succession the command:
AT#XHTTPCREQ="GET","/IoT/testing/scripts/WriteMe.php?SiteName=BoSLnano.csv&T=1",""
which sends the get request for the given resource. Where the site name and variables are changed according to need.
24 July 2021
Attached a script which intermittently logs to the bosl server File:SimpleNanoLogger.ino. The data to be uploaded can be inserted by updating the uploadATsequence function. One caveat is that every time the board sleeps the USB serial port gets disconnected. Hence it needs to be reopened after every waking, otherwise no Serial data will appear. To get the BoSLnano board add:
https://monash-bosl.github.io/BoSL-IDE-Core/package_bosl.com.au_index.json
to the additional board url box in File->Preferences menu of the Arduino IDE. The BoSL SAMD boards can then be downloaded from the board manager and the BoSLnano can then be selected as the board target in the tools menu.