For me it's always fun to build hardware with IoT capability. So week ago. When I found out Queuctel have built a quecpython evaluation board based on BG95-M3 and in raspberrypi Zero form factor. I then comes up with an idea that I'm going to build a adafruit form factor board for it too.
nowadays, almost all the IoT hardwares that equppiped with a modem need to have a separated MCU, So that on one side, this MCU will talk with the modem for all the functions that need to send or receive data from Cellular tower. And on another side, this MCU can be programmbale for users. A good example would be the arduino MKR GSM 1400.
This is a common and reliable solution. but definitely a cost-effective solutions.
In fact, Quectel had offered another solutions which just fit the most for situations where cost and time to market is a concerns.
In general, Almost all the modems are eqipped with mcu inside of the can shield. So theoritically there is no need to have a external MCU to make it work. And what's more, that mcu inside of modem is also pretty powerful to deal with all the other things.
And by porting the Python feature insid of this MCU, The modem can be way more easier to develop even for those who are not familar with IoT industries.
The design:
According to this doc. We can find out there are many GPIOs that are a vailable to use and it also have I2C/SPI/UART like all the there generic MCU.
The only draw back is it didnot have enough ADC ports. And all the IOs are 1.8v tolerance. Not like 3.3v MCU.
All those two will break the rules from adafruit's feather specification and I need to address those before say it's feather compatible.
So in the design a level shift is necessary. I use the same IC like Quectel EVB. The TXS0104 chip for level shfit all the 1.8v to 3.3v signal.
As for the ADC feature. Even the BG95 modem have one ADC port but that's not enough so I add a dedicated ADC CM1103 so that this board can equipped with 4 analog Port like a normal feather board.
I also used a analog switch so that those ADC ports can also be used a GPIO. But unfornately they just cannot be used at the same time. So thsoe four pins can only be ADC or GPIO all at the same time.
A battery charger IC also equpped so that this board can be powered up by battery. And because this board using a buck-boost DC-DC regulator. So it can actually increase the life-time of the board. As even the battery's voltage is below the modem's working votlage, it can still boostup to 3.8v as a reliable power source.
This board also eqipped with a reset IC so that It can be used to power up the modem once the board get powered up.
Tests:
No doubt that python is easier to code compared with C. And it is, I just spend literally half and hour and is able to publish someting to a online broker via MQTT.
And right now I'm able to drive the ADC but still need some time to write a more robust driver so that it can be simply invoked by something like analogRead(A0)
What'snext:
As I noted in scematic, there are some bugs in hardware design and I definitely need another iterate to fix all those.
Comments