I am going to build an IoT water flow meter. And I am using below meter:

Which generated a pulse every time its meter completes a rotation. My objective is to read that pulse and send that reading data to the cloud using the GSM module. But when there is no Internet connection(GPRS) the controller should store the values of the counter to its EEPROM(Flash Memory) and when device comes online it should send it to the cloud. The device will send data every 2-5 min. I will make multiple these types of devices and from which one(Alpha) will be collecting and sending data to the cloud using the GSM module and others will send data to this(Alpha) module via RS485 or other.

The problem is I am not able to choose which microcontroller would be best for this purpose and unable to find MCU which has storage size between 50kb-1MB so that it can store large amounts of data. I don't want to add external EEPROM to it. And also selected MCU should be programmable using Arduino IDE.

I have thought of using the ESP32 GSM Module Board to do this. But it's EEPROM memory is low. And I don't have any IDEA how much storage is good for this purpose.

The budget with this water flow meter is low. So suggest me an MCU which will work for me or whose storage will be enough.

enter image description here

  • I assume that meter goes up to 99999 before it overflows to 00000, so a single 32-bit unsigned int would be more than enough to store the count while the device is offline... what do you need 50 KB for? – Romen Jan 2 at 19:23
  • @Romen Yeah you are right. I was just thinking of a worst-case scenario but leave it. Just out of curiosity will the ATMEGA328P will be sufficient? And can you suggest some micro-controller with 32bit unsigned int that can be programmed with Arduino IDE? – Lucifer Jan 3 at 6:01
  • What are your power constraints? Will your reader be powered from AC or a battery? Hint: battery-powered GPRS is hard due to current peaks. – Jan Dorniak Jan 3 at 12:58
  • @Lucifer, The ATMEGA329P has 1KB of integrated EEPROM, and if a CPU doesn't natively support 32-bit arithmetic it can still be implemented with multiple smaller integers. That is something the programming language & compiler that comes with the Arduino IDE will handle automatically for various Arduino-compatible devices. – Romen Jan 3 at 15:25
  • @Romen thank you. I will be searching for more. What do you think about this: ti.com/lit/ds/symlink/tms470r1b1m.pdf. Also, can I program this with Arduino IDE? – Lucifer Jan 6 at 5:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.