Hello, I'ts my first post here, so dont get mad if it's not the right subforum for this topic. I would just like some ideas/opinions for my project, because maybe I am forgetting something.
What I am trying to build, is a wireless temperature sensor that can send data over GSM network to my webserver. It has alot of customization to it, but it still has Arduino at heart as Im going to use Arduino IDE and libraries for it.
It is not something I intend to sell, just a device that would add huge value to a website/app of mine.
What I need to achieve (and my plans to do so) are:
- It must measure both air and water temperature with about +-1 degree (Celsius) accuracy (device itself located outside of water, but one probe goes into water).
I am thinking about using two DS18B20 waterproof digital temp. sensors, as they are fairly inexpensive and OneWire library has quite a wide support and many tutorials on the web.
It must operate on (preferably 3.7V LiON/LiPo) battery, thinking 3000-5000mAh would be sufficient (best case scenario would be 3-4 months on one charge).
Max amp pull would be about 1A (momentary, mostly about 300-500mA while working), so discharge rate should match that, thats why Im thinking LiON or LiPO... Also they are 4.2V full and 3.6V empty, so perfect for my microcontroller of choice. I must order the batteries from Europe Union, but they should be something inexpensive and have as much capacity as possible while compact in size. Saw some 3000mAh LiONs on DX.com fr about 2 Euros/each, not sure aboyt the quality though.
It has to be as compact as possible. Im planning to create my own PCB for the microcontroller part, use ATMEGA328P (DIP) on it, and only have the neccessary connections brought out to PCB. My current PCB design is 40mm x 30mm in size, and has everything I need on it. Size is also important as PCB printing price is mostly based on the board size.
It must be energy efficient... Really efficient. The device is meant to take measurements and send them to my webserver once every hour. As I said, I want it to run 3-4 months on one charge. This is why Im thinking about custom PCB and ATMEGA328P. I can put the controller to sleep between taking the measurements- right now the ATMEGA is sitting on breadboard and draws about 0.06mA while sleeping, and 12mA while running empty loop (16MHz, 5V).
The GSM module and temp. sensors will get power directly from the battery, and Im planning to use optoisolators so that I could also turn the sensors and GSM on/off with digital pins (to save energy while device is asleep=. Is that a viable idea? Let's say the optoisolator is switching GND for GSM module, when I activate it with digital pin, the GSM shields GND connects to main GND and it turns on.
- It must be connected to GSM network, so it could push data to my webserver once an hour or so (simple GET query to myserver.com/data.php?temp1=xx&temp2=xx would be sufficient, then my server side system could save the values). I can handle the backend part, but what which GSM module should I choose? Thinking about SIM800L (like this one: http://img.dxcdn.com/productimages/sku_406905_1.jpg). This module is dirt cheap (6-10 Euros if ordered from China, about 10-12 Euros if ordered from EU warehouse).
I have also found some nice YT videos and tutorials on web that show using this module with Arduino.
- It should be as cheap to build as possible. The device will be deployed near a public place, if someone would happen to find it, and for some reason steal it, it would not be a huge loss.
Other reason to keep the price down is that I am actually looking to deploy a fleet of these devices (once I have validated that the prototype and my idea can work and fulfill my requirements).
Planned price range is about 15-20 Euros (thats 17-22 USD), including all the components, enclosure and custom PCB. At the moment I have chosen all the neccessary components from china, and the total cost would be 16 Euros.
I know it's a lot of requirements, and the budget is almost nonexistant, but I'm confident that I can make it work, if I dont run into some unforeseen issues. This is why Im actually posting here- working on this project alone, maybe I have missed something, maybe theres a better solution for something, maybe someone else has some great ideas they are willing to share, regarding this idea and how to pull it off.
Thanks for any kind of feedback. Also English is not my first language, so ignore the spelling mistakes :D