Spisu treści:

Wysyła SMS z temperaturą na czas: 5 kroków (ze zdjęciami)
Wysyła SMS z temperaturą na czas: 5 kroków (ze zdjęciami)

Wideo: Wysyła SMS z temperaturą na czas: 5 kroków (ze zdjęciami)

Wideo: Wysyła SMS z temperaturą na czas: 5 kroków (ze zdjęciami)
Wideo: NAJBARDZIEJ ZŁOŚLIWE USTAWIENIE WE WSZYSTKICH SMARTFONACH ANDROID. ZMIEŃ TO TERAZ!!! 2024, Lipiec
Anonim
Wysyła SMS-a z temperaturą na czas
Wysyła SMS-a z temperaturą na czas

Chodzi o to, żeby dostać sms temperatury z domu mojego ojca.

Nic nadzwyczajnego, tylko szybkie składanie części.

Części to:

  • Karta kontrolera Geekcreit® ATmega328P Nano V3 kompatybilna z Arduino
  • DIY NANO IO Shield V1. O karta rozszerzeń do Arduino
  • Moduł zegara czasu rzeczywistego oparty na DS1307 RTC IIC / I2C i DS18b20
  • SIM800L Czterozakresowy GSM / GPRS
  • LM2596 Mini konwerter DC-DC Regulowany moduł zasilacza obniżającego napięcie
  • Temperatura termistora NTC MF52AT

Przede wszystkim dużo czytania i wyszukiwania.

Zanim w końcu użyję Geekcreit® Nano, testuję wszystkie części za pomocą Arduino Uno.

Krok 1: Spraw, aby SIM800l działał

Zabierz SIM800l do pracy
Zabierz SIM800l do pracy

Jednym z głównych punktów jest moc Sim800L.

Używam konwertera LM2596 Mini DC-DC, dostosowanego do 3,7 V i osobnego zasilacza.

Aby przetestować połączenie z poleceniami AT+, ta strona jest bardzo przydatna:

Szybki start SIM800 (SIM800L) z Arduino

Z Wyłącz kod PIN za pomocą modemu gsm przy poleceniach dostałem kod PIN karty SIM.

Kolejne rozważenie, która biblioteka. Internet oferuje inne rozwiązanie.

Moje rozwiązanie to biblioteka od Mattiasa Aabmetsa: AspenSIM800

Jego przykład: Send_SMS.ino użył I jako podstawowego programu i po kolei łączył wszystkie pozostałe części.

Pin Tx i pin Rx są kodowane do:

RX_PIN 10 Arduino. Musi być podłączony do pinu TX modułu SIM800. TX_PIN 11 Arduino. Musi być podłączony do pinu RX modułu SIM800

Zawsze dobrze jest czytać pliki *.ccp i *.h w bibliotekach.

Zawierają wiele ciekawych wskazówek i wiedzy.

Krok 2: Uruchom RTC DS1307 z czujnikiem DS18B20

Uzyskaj RTC DS1307 z czujnikiem DS18B20 do pracy
Uzyskaj RTC DS1307 z czujnikiem DS18B20 do pracy

Użyłem tej strony: simtronyx - blog dotyczący DS1307 i DS18B20.

Zegar ma połączenie magistrali I2C i to jest dla Arduino Uno: A4 (SDA) - A5 (SCL)

DS18B20 podłączyłem do D3.

Przeczytałem, że w SMS-ie nie można wysyłać Floats only String, więc musiałem przetłumaczyć floaty na string.

To, co robię z tym fragmentem kodu, który znalazłem:

n

MójCiąg1 = Ciąg(bieżącaTemp, 2); //Konwertuj float na ciąg

MójCiąg1 = (MójCiąg1 + " C - Temperatura Pomieszczenia:) ");

// konwersja łańcucha na znak zaczyna się tutaj

// Długość (z jednym dodatkowym znakiem dla terminatora null)

int str_len1 = MójCiąg1.length() + 1; // Przygotuj tablicę znaków (bufor)

char char_array1[str_len1]; // Skopiuj to

MójCiąg1.toCharArray(znak_tablica1, str_len1); // przekonwertuj łańcuch na znak kończy ją

Będę szczery, nie wiem jak to działa, ale działa.

Krok 3: Uruchom termistor NTC MF52AT

Uruchom termistor NTC MF52AT
Uruchom termistor NTC MF52AT

Pracowałem wcześniej z termistorem, więc to była łatwa część.

Ale i tutaj można znaleźć inne rozwiązanie.

W ostatecznym kodzie możesz znaleźć mój.

Można w niej również znaleźć tłumaczenie Floats to String.

Przylutowałem trochę drutu i rezystor 10 kΩ do termistora.

Krok 4: Zbierz wszystko do wspólnej pracy

Więc napisałem wszystkie części programu razem.

Teraz musiałem wymyślić, jak wysyłać jednego SMS-a codziennie o tej samej porze.

Czytałem o różnych pomysłach, niektóre z TimerAlarm i innym podejściem.

Ale znalazłem proste rozwiązanie gdzieś na forum arduino:

if (teraz.godzina() == 8 && now.minuta() == 00 && now.sekunda () == 59)

{

SIM.smsSend(addr, tablica_znaków); // termistor

opóźnienie (500); SIM.smsSend(addr, tablica_znaków1); // DS18B20 }

Ale dlaczego now.second = 59, ponieważ wysyła całą minutę SMS-a. Dla mnie to robi, ale wypróbuj sam.

Po pewnym teście wgrałem program do Geekcreit® Nano.

To może nie jest najlepsze pisanie programów:), ale robi to, co chcesz.

Ponieważ Geekcreit® ATmega328P Nano ma pewne problemy z Arduino IDE, przesyłam przez terminal (Linux Mint) rzucam USBtinyisp w następujący sposób: avrdude -c usbtiny -p atmega328p -U flash:w:SomeHexFile.hex

Krok 5: To zadziałało

Tak, wyszło i jest umieszczone w domu.

Codziennie o 6:00 dostaję SMS-a z temperaturą.

Zalecana: