Here’s my notes on the Wio LTE 4G GNSS Cat 1 https://www.seeedstudio.com/Wio-LTE-US-Version-4G-Cat-1-GNSS.html
Use the SeeedJP hardware not the version from the wiki.
This is the URL for the boards manager http://www.seeed.co.jp/package_SeeedJP_index.json
The board is “Seeed Wio LTE Cat.1”
The wiki version uses outdated libraries and you will have problems using most other STM libraries, including the RTC and low power libraries below.
Use the SeeedJP library not the version in the wiki
It is more extensive and works far better than the version listed in the wiki.
There is some messing around with drivers to get both the DFU programming and USB debug output working smoothly. Basically when you put the Wio into DFU mode the USB serial goes away. Some serial terminals, including that built into Arduino IDE, can not handle that. So try other serial terminals until you find one that works.
Add a delay in the setup() function to allow the USB serial to enumerate under windows. 2 seconds or less works.
The JP board library does not have the battery voltage for some reason. I ended up editing
C:\Users\xxxx\AppData\Local\Arduino15\packages\SeeedJP\hardware\stm32\1.7.0\variants\WIO_LTE\PeripheralPins.c and enabling the
PB_0analog input, then
#define PIN_BAT_C 16 analogReadResolution(12); pinMode(PIN_BAT_C, INPUT_ANALOG); // battery voltage bat_volts_mv = (analogRead(PIN_BAT_C) * 1000) / 620; // 4200 mV = charging/full charged
The battery connector is the
JST-SHR 1mmBe careful because there are some batteries available with this connector but most have the polarity reversed.
Power consumption with the EC21 off is around 70 mA. Using low power idle or sleep it is 15-20 mA, and deepSleep is 1-2 mA. deepSleep is harder to wake from as some re-initialization is required. It might be possible to go lower than 1 mA with more optimization but that was good enough for me.
WioLTE::GetTimehas some fixed offsets for the return string from
AT+CCLKwhich might need tweaking.
In some power saving modes the systick stops so for timing you need to switch from
millis()to your own function which uses the rtc. Because sooner or later you’ll end up with your loop function calling other functions at a specific time interval, which will get messed up if the systick stops during sleep.
Otherwise it is working fairly smoothly and the hardware works well. For a hardware revision I’d put the boot0 button on the top of the board and get rid of the EC21 key switch, and also have more i2c connectors and fewer analog, and get rid of the headphone/microphone circuit. A 2mm JST connector for the battery would be good to. Spending some time to get the DFU to work like the SAMD21 with both flash programming and USB serial debug would be nice too. I’m not sure if that is a difference in hardware which the STM32 cannot do.