It’s worth mentioning that you can load smartbasic programs over the air and issue certain file management commands over the air. But you can’t update the Laird firmware (Nordic soft device+ smartbasic engine).
The RM1xx uses an Nordic nRF51, which has its memory split in two. The first block contains the Nordic soft device and the second block the application. Within that application space, Laird puts the smartbasic engine and creates a filesystem for storage of smartbasic programs, along with some NV storage.
Mark Duncombe
Laird European Field Application Engineer
I am trying to connect my RM186 to TTN, but when I try to do “XCompile + Load” on “cmd.loramac.rm1xx.sb”, I get the error message below. Has anyone encountered the same error and found a fix?
I am wondering whether it could come from an “RM1xx-defs.h” not matching the firmware version (18.4.0.26), but I don’t know where I could find the correct one.
Thanks!
no, not really a must - 18.4.0.26 is fine
if you encounter an error during compilation, you can look up the error code.
error codes you can upgrade within the UwTerminal.
could you compile and run ‘hello world’ from the same page ?
Yes “HelloWorldLoop.sb” works fine.
I also tried “i2cscan.sb”, which compiled correctly but did not execute correctly(“Failed to open I2C, error code: 00005227”) - could not find a match for that error code.
Where did you get “RM1xxUartFwUpgrade.exe” to upgrade it?
I can’t seem to find it on Laird’s website - no “software download” on any of the products, and no login area either…
Indeed your guide is very clear and helpful.
The only issue is that I can’t find that zip file on Laird’s website. If you have a link to the page where you downloaded it, I am very interested!
Cheers
What’s the final verdict on RM1xx? Does it work reliably?
Is it possible to program it without PCB from PCBs.io? Or does it require the $140 Dev Kit to program the module?
Can it collect BLE sensor data from nearby BLE beacons and have a small program running on this module to send sensor data to gateway without PCB and just wiring it for power?
I’ve been using the RM186 for a while now (and baking another 10 modules at the moment) and consider them to be very stable.
There are some quirks of course - latest I found was that I couldn’t turn pin SIO_3 into an analog input despite what the manual says - but Laird has been very responsive in addressing those in firmware updates. This is true for all modules, so don’t assume anything and always test your solution well.
I guess you might not need a PCB for some quick testing, you can solder some wires to the pads, but that’s not really something that’ll be reliable or effective. You should really have some decoupling caps, a ground plane etc
The $99 development kit isn’t necessary to program for the module but I find it helpful - you get things like a coulomb counter which is nice to optimize power usage, buttons, LEDS etc. The schematic is also a good reference for your own circuits.
Check Datasheet (HIG) - RM1xx Series.pdf chapter 5. You will need to wire at least all GNDs, VCCs and provide capacitors between VCC and GND. Also required are UART connections to program the module.
Error codes can be in either hexadecimal format or decimal format hence why there’s two options in the UwTerminalX right-click menu. In this case the error code is 8 characters long which is a sign that it is in hex format (8 hex characters * 4 binary bits per character = 32 bits). If you double click the error click to select it, then right click and select the hex error code option then you should get the correct error code and description listed. Error code 0x5227 is DRIVER_I2C_STUCK_SLAVE: A slave device on the I2C bus is stuck.
In regards to options for flashing the module you can do this with the JLink devices (you also need the 9-pin Cortex-M adapter). If you are a hobbyist then you can get a JLink edu at a discounted price to program the modules but it is against the Segger license agreement to use a JLink edu (or JLink clone) to program modules for commercial use.