Why Internet connectivity is a must for your product?
Internet connectivity has become a basic need for today’s embedded products. It not only provides a way to transfer the data and mechanism to remotely control the device but also it is very important for over-the-air firmware upgrades. Facility to update the firmware in the field has become a necessity with the increased complexity of the embedded systems.
You might need to update the firmware for a new feature or to improve the user experience or to fix any bug/ do optimization when your product is already in the field.
One of the companies I know personally has saved more than 30% of their revenue going into losses due to the fact they had firmware update feature in the product. Their customers are happy and business is growing.
Why cellular connectivity is so popular?
The main reason cellular connectivity is still so popular is due to its wide-coverage and because it can be used while you are moving like in vehicles, etc. NB-IoT is yet to be available widely and other connections like WiFi has their own challenges like availability of the infrastructure at the site (or on the move), IT department doesn’t allow access to the main network, etc.
There are various GSM GPRS modules (SIMCom Wireless, Quectel Wireless, Sierra Wireless, Gemalto, Telit, U-Blox, etc.) available in the market which are being used in different IoT applications.
Interesting statistics from Statista gives below shows the market share of various cellular modules.
What are the challenges with GSM GPRS connection?
The main challenge is how to implement a robust GPRS connectivity. Many engineers struggle with this and I wanted to share the knowledge and experience I have got working with various modules the hard way.
So, what’s the real challenge?
- RF part is not straight forward. RF knowledge, availability of test equipment is a big challenge.
- Peak current requirement during transmission, dependency on RF section and available connection strength.
- Poor GSM GPRS connectivity, especially in remote places, hilly areas.
- SIM card connection with the module.
- Extra debugging support required to be implemented in the firmware.
- Lack of experience with all the issues if the engineer is implementing for the first time or has not faced issues in the past.
A reliable GSM/GPRS connection is possible with best practices in hardware, firmware, and testing. Let us go through one by one each of them.
What are the hardware considerations?
There are various things that are needed to have a reliable GSM GPRS circuit. Some of them are listed below:
- PCB layout is a critical part of the design. Make sure you follow all the recommendations given by the manufacturer. Learn from the available reference designs. Get your design reviewed by an expert before going for sampling. Some of the manufacturers provide the design review support else you should ask an external consultant or a designer to help.
- The power supply for the GSM/GPRS modem should be clean and should be capable of handling peak-current. During transmission GPRS modem will need peak-current and it may cause a huge voltage drop and the module may get unstable or switch-off. Bulk capacitor and decoupling capacitor very near to the power supply pin of the modem helps supply necessary peak-current. In case you don’t have space for the bulk capacitor, you need to use a dc-dc converter that can respond to such peak-current.
- ON/OFF control via software. It is handy if you want to save power or handle any hang condition.
- Careful about RF signals on the PCB. Get your RF section PCB design reviewed by the expert. Test the design in the lab for the maximum RF output. Check antenna, connecting RF cable (if any) for its performance or buy a good quality certified antenna and cable.
- If possible, use an external antenna. with a provision to connect an external antenna, you can choose a high-gain antenna depending on the field conditions. Good quality antenna not only provides good RF performance but will also help reduce the power as the transceiver needs not increase the amplifier output to compensate for the RF section power loss.
- SIM connection with the module should be designed with high-speed considerations. SIM should be accessible so that if at all required could be changed in the field without opening the enclosure. To avoid SIM accessibility, embedded SIMs are also available these days. Please check the cost, availability, ease of use before making a decision. As per my understanding, there are challenges in using eSIM. Read this article for some more details on eSIM.
- Handle heat dissipation of the modem well. Make sure components are selected to handle environmental conditions like temperature, humidity, vibration, etc.
What the MCU firmware should have?
Just having good hardware is not going to help completely. MCU firmware should be capable of handling the field conditions. Firmware should have APIs to execute the following useful functions:
- Restarting the GSM/GPRS modem (ON/OFF control)
- Checking the status of the SIM, network registration status, availability of internet connection, signal strength.
- Set modem in power saving mode to save power consumption.
- Store the data locally and sync whenever required. This is useful when you have poor GPRS connectivity in the area.
- Add logging facility for signal strength & number of connection breaks, etc. It helps greatly in debugging the field condition in case the GPRS connection is unreliable and you need to understand what’s going on. Ability to enable or disable logging is also useful.
- Another thing that could be super helpful while debug is if you create transparent remote access to the AT command interface. For this, you must have another direct internet connectivity interface or PC interface like USB, Ethernet (to remote access). When debugging you can connect your device over the PC interface or cloud directly via the second interface (say ethernet) and give the AT commands and check the response. This greatly helps do the debug quickly.
- For a reliable GSM/GPRS connection, keep your data packet small (~200 to 500 bytes). If you have unreliable or frequent disconnection, file transfer or big data packets will drop in-between most of the time.
How to optimize power consumption?
In a battery power IoT product, it is critical to optimize power consumption to have a longer battery backup. There are various methods (some were already mentioned above) with which power consumption could be optimized:
- Choose the right GSM GPRS module.
- Implement a smaller data packet (<500 bytes).
- Reduce the number of data transactions to save power.
- If GPRS connection is required to sync data to the server or cloud but connectivity need not be ON for all the time then the best solution is to keep storing all the data in reliable local storage (EEPROM, SPI Memory, FRAM, etc. ). Put GPRS modem off when not in use and sync the data fewer times. This will save huge power. Please note, there will some power-up time to establish GPRS connection again.
- Use a highly efficient power supply for powering GSM/GPRS modem. Check what is the power consumption in the mode GPRS modem will remain most of the time (generally receiving mode) and then look for DC-DC power supply most efficient at the current/load level. As modems will need peak current during transmissions be careful about the capability of the power supply to deliver that or use a bulk capacitor of appropriate value.
- In case, ultra-low power GPRS power consumption is necessary, you need to go to the next level and optimize the modem firmware for power consumption. Take help from the manufacturer’s datasheet, application notes. Don’t hesitate to seek help from manufacturers FAEs.
- As mentioned in the hardware section. RF output should be matched for max. power output. The design should be tested in the lab. Good RF implementation and high gain antenna help greatly in reducing power consumption.
If you are want to learn more about power optimization techniques for embedded products, read this article which covers the topic in much detail.
How to test your product?
It is very important to test your product really well. Create all the possible field conditions. Stress test it to check reliability. Testing should reveal where your product will fail and where it will work, so it should reveal the boundaries.
So, what kind of tests should be done?
- Low Coverage Area or Weak Connection: use a low dB antenna or go to the basement/remote place for testing. This will help you test the performance of the RF section, power supply, and firmware.
- GSM GPRS Frequency Disconnection: Use a jammer and automate ON and OFF to create frequent connection unavailability conditions. This will help you test how the firmware handles the frequent disconnection. If the modem is able to connect to network quickly or not, how much time & attempts it takes to connect. This information will also help you tweak your firmware to be more suitable for the field conditions.
- Frequent Power Failure: Create an automated setup to set the frequency of power ON-OFF conditions to test how the hardware and firmware will behave in such situations.
- Power Consumption: If the product is battery powered, it is important to test how much power it consumes per transaction in real condition and estimate the battery backup time.
- Power-up time: how much time it takes to GSM GPRS modem to connect to the network once it cool boots.
- Environment Tests: Test the hardware for the rage of temperature, humidity, vibration, EMI it may face during the operation in the field.
- EMI Emissions: Radiation from other equipment may impact the performance of your IoT product especially when you have an RF connectivity like GSM GPRS.
I hope this article helps you build a reliable IoT product having GSM GPRS connection.
If you like the article, please share it with others. Any suggestion or comments, let me know here.
Read other articles on embedded system design.
Happy learning to you!