Upgraded Wind Sensors and Improved Energy Efficiency
In my continuing efforts to control my island’s weather I have rebuilt my GPRS weather station with upgraded ‘industry standard’ calibrated wind sensors and made several significant improvements for better energy efficiency.
This weather station is now a lot more accurate and uses three Arduinos working together to reduce power consumption, which is important as the whole system runs off a small solar panel. But surely using more microprocessors would use more electricity, not less?
“Not so”, replies Tecwyn Twmffat, since we have one small Arduino switching all the unnecessary sensors and other modules off until they are needed. What’s the point of taking temperature and pressure readings every five seconds? There is none! . So turn them all off! . Actually, the only sensors that do need to be working 24/7 are the anemometer and the rain gauge, which will quite happily run on one tiny, miniscule, ultra low power Arduino Nano.
This instructable is the latest stage in on going project that has it’s development history in five other previous projects:Step 1: Features
Anemometer (calibrated) Wind vane (low torque, low energy, high accuracy) GPRS 2G data transmission Power saving ‘sleeping Arduinos’ Power saving buck convertor 12v to 5v supply Soil moisture Soil temperature Air humidity Pressure Rain Outside temperature Battery voltage Forecasting by calculating pressure swing Webpage data display Autonomous solar powered no wifi or grid power required Removable TFT display for debuggingStep 2: Parts
A100LK anemometer . 2nd hand items sometimes available on W200P wind vane . Hackable Prototyping BoardRain gaugeMAX GRIP 004 box 350 x 230 x 86H mm 3/4″ overflow pipe tank connector 3/4″ overflow pipe stainless steel filter ANT1 Antenna Arduino Nano Rev3.1 Adafruit Atmega32u4 Breakout Board variant variant 6; part Operates 1.8″ TFT screen BATT1 LiPoly Battery (1300mAh) C1 Electrolytic Capacitor voltage 16V; package 100 mil [THT, electrolytic]; capacitance 470F C2 Ceramic Capacitor voltage 6.3V; package 100 mil [THT, multilayer]; capacitance 100nF C3 Electrolytic Capacitor voltage 16V; package 100 mil [THT, electrolytic]; capacitance 100F C4 Ceramic Capacitor voltage 6.3V; package 100 mil [THT, multilayer]; capacitance 100nF C5 Electrolytic Capacitor voltage 16V; package 100 mil [THT, electrolytic]; capacitance 1F C6 Ceramic Capacitor voltage 6.3V; package 100 mil [THT, multilayer]; capacitance 100nF D1 Rectifier Diode package 300 mil [THT]; type Rectifier; part 1N4001 DS1 DS18B20 1 Wire Temperature Sensor Probe Cable J1 Screw terminal 3 pins package THT; pins 3; hole size 1.0mm,0.508mm; pin spacing 0.137in (3.5mm) J2 Piezo Speaker J3 Screw terminal 3 pins package THT; pins 3; hole size 1.0mm,0.508mm; pin spacing 0.137in (3.5mm) J4 RJ11 Jack package rj11 6; variant pth; target RJ 11; part RJ11 Rain Gauge J5 Screw terminal 2 pins package THT; pins 2; hole size 1.0mm,0.508mm; pin spacing 0.137in (3.5mm); part Soil Probe Part1 Adafruit FONA Mini Cellular GSM Breakout variant UFL Part2 Arduino Mega 2560 (Rev3) type Arduino MEGA 2560 (Rev3) Part3 Arduino Nano (Rev3.0) type Arduino Nano (3.0); part MASTER Part4 BME280 Breakout variant BME280; power 3.3V Part5 VERTER 5V USB Buck Boost variant screw Power plug1 Power plug Q1 NPN Transistor package TO92 [THT]; type NPN (ECB) R2 100 Resistor package THT; tolerance 5%; bands 4; resistance 100; pin spacing 400 mil R3 200 Resistor package THT; tolerance 5%; bands 4; resistance 200; pin spacing 400 mil R4 10k Resistor package THT; tolerance 5%; bands 4; resistance 10k; pin spacing 400 mil R5 10k Resistor package THT; tolerance 5%; bands 4; resistance 10k; pin spacing 400 mil R6 Rotary Potentiometer (Small) package THT; track Linear; size Rotary 9mm; type Rotary Shaft Potentiometer; maximum resistance 1k R7 4.7k Resistor package THT; tolerance 5%; bands 4; resistance 4.7k; pin spacing 400 mil R8 1k Resistor package THT; tolerance 5%; bands 4; resistance 1k; pin spacing 400 mil R9 100k Resistor package THT; tolerance 5%; bands 4; resistance 100k; pin spacing 400 mil R10 10k Resistor package THT; tolerance 5%; bands 4; resistance 10k; pin spacing 400 mil R11 10k Resistor package THT; tolerance 5%; bands 4; resistance 10k; pin spacing 400 mil S1 SWITCH MOMENTARY 2 package reed_switch_plastic; variant pth_reed2; part Rain guage TFT2 1.8″ TFT Display with uSD U3 RELAY package relay jzc; variant pth4 U7 RELAY package relay jzc; variant pth4 U8 RELAY package relay jzc; variant pth4; part Finder 30.22.7.005.0010Step 3: How It Works
Improved energy efficiency is achieved by using more energy efficient sensors, especially the wind vane, and swapping out the old power regulator with a ‘buck convertor’ switching type. The old regulator used to get fairly hot and heat = energy loss . The buck convertor does not get hot!. Improved coding has allowed complex float numbers to be communicated between the Arduinos via the I2C bus, which gives accuracy to 2 decimal places.
Of the three Arduinos in this design, one just operates the TFT screen and can be removed after all debugging has been done. The small, second, ‘Master’ Nano takes readings of wind speed via the Arduino ‘pulse in’ command and rainfall is monitored on an ‘interrupt’ so that not a single drop of rain is ever missed. The other interrupt on the master monitors a call back from the Arduino Mega slave, which tells it when data has successfully been transmitted to the Interweb. On successful transmission, the values for wind speed, wind direction, volts and rainfall are reset to zero. If transmission fails for any reason, wind speed and rain are kept in the memory for the next transmission attempt so no important data is ever lost. The third Arduino, a Mega 2560, controls the FONA GPRS module and other sensors such as humidity, pressure and temperatures.
Eventually, the data ends up being displayed on a web page HERE .
The following code snippet shows how the energy hungry Mega and Fona modules are turned off after the data has been transmitted via GPRS. The schematic snippet shows the actual connection between D5 and D2 coloured orange.
while (degree(cycleTimeSet +3)) // This stops the callback from coming on at start of program or when mega is turned on.