Satellite on the balcony



Recently I read two articles on Habr about Explorer - 1 and Explorer - 2 . I wanted to share a similar project.


Background and statement of the problem


I have been reading the Cosmos hub for a long time and every time I understand that I want to feel the same as the developers of Curiosity or Rosetta, I will face the same difficulties as they, the main of which is remoteness. My budget is more modest, so what we will do on Arduino.

I took Explorer-1 as the basis, but I wanted to abandon the concept of hanging sensors and delve deeper into the topic of remote control.

So, what should a satellite do:

1) Actually, like any satellite, it should be able to receive and transmit data;
2) Must have sensors;
3) Must be autonomous.

Development


The role of the ground station was performed by Arduino uno, and the satellite was Arduino nano.

We launch the satellite into orbit (balcony).

The transmitter is on the NRF24L01 + chip. It provides two-way communication in 32-byte packets.



The choice of sensors fell on the DHT22, BMP180 and BH1750FVI. As you understand it will be a weather satellite.

All sensors - DHT22 (humidity and temperature sensor), BMP180 (pressure and temperature sensor) and BH1750FVI (light sensor) - I bought a house through Avito. I still do not understand why no one uses it.



Autonomy is achieved by battery power "Krona" (9 volts). I tried to make power from the solar panel through a step up, like here , but the panel lacked power.

I did not bother with the quality of the code - I still do it on Arduino. I will not bring the code here, because it is ugly. Everyone who wants to do something like this will find everything he needs, the benefit of the Internet is already littered with a bunch of examples for working with sensors.

But I made a special nutrition: with filters and
current sensor, in the form of a resistor.
The power for the sensors (DHT22, BMP180 and BH1750FVI) is taken from the controller foot so that it can be turned off if something is wrong, and a 100 Ohm resistor is placed between the sensor ground and the controller ground so that some voltage drops on it when the sensors are working . Arduin measures the voltage, and using Ohm's law, you can calculate the current consumed by the sensors.

I don’t know why filters are needed when powered by a battery, but it sounds cool. I came up with the Team

Management
so that it would be possible to debug the satellite, as if it were right on my desk, and not on the balcony (open).

Teams:
   nop_sputnik // just forward the response
   reset_sputnik // hard reset satellite
   test_i2c_sputnik // test for i2c devices and return their address
   make_log // make a log in eeprom in case there is no energy left to transmit the packet over the radio
The analog part:
   test_5_volt // test voltage of 5 volt line
   test_buttery_volt // test battery voltage
   test_current_sensors // check sensor current
   beep_sputnik // beep through the speaker
well, just in case:
   switch_off_termometr   
   switch_on_termometr 
   switch_off_pressue 
   switch_on_pressue 
   switch_off_humidity 
   switch_on_humidity 

While collecting, I decided to add the squeaker, as a system of interaction with the outside world.

Putting all this together, I was very surprised when everything worked the first time. But as it turned out, not for long .., but for now the satellite photo:



And the receiver on the ground:



I'm already in anticipation, I connect the battery, the LEDs light up. Everything works, the receiver polls the satellite once every 10 seconds.

I did this at night, sent the satellite to the balcony in a cardboard box, the receiver connected to the laptop and went to bed. This action took place at the end of August, so do not be surprised at the warm weather, now we have -10.

In the morning I immediately run to check the data and the bummer.
last reply from satellite
humidity = 99.90
temp = 18.20
pressure = 57370
light = 0
data = 1
value = 623


The following graph shows the temperature per night in degrees Celsius (information taken from the BMP180 sensor). At some point (see graph), BMP180 stopped working:



Below on the graph is pressure (in Pascals). And yes ..., I myself don’t know what the peak is in the middle:



Humidity (in percent) - (100% humidity is similar to the truth - it rained that night):



Since it was night, the light sensor almost constantly showed 0, except of the time when the light was on in the room.

Analysis of reasons for refusal


Only the BMP180 failed (although, I thought DHT22 would go down). I2C bus with which the BMP180 and BH1750FVI were connected,
sort of worked.
The BH1750FVI sent 0 (in order to send a byte storing 0 in itself, the sensor should press the data line to zero, but 0 on the line could also occur due to an error or poor contact).
In general, I’m not sure of anything, but I think that the BMP180 is dead due to humidity.

Initially, I specifically did not measure the current consumed by the satellite and was not very surprised when the battery died after 1 hour 43 minutes.

In general - a complete failure.

Next time I want to add sleep modes, make some kind of automatic data verification system, for example, during sudden surges (as a pressure value that night) or if for a long time - the sensor sends the same data (like a temperature sensor). I plan to treat this by rebooting the sensor. And, in the distant future, perhaps, after passing the exam, I will rewrite everything in pure C and make a full board on Atmega8 or STM32 to work as part of a weather station.

PS Tell me some program for processing large amounts of data, otherwise Excel is not very convenient.

Also popular now: