Spisu treści:

Powiadomienia SMS o temperaturze SMS z ATTINY85 i A1 GSM: 5 kroków
Powiadomienia SMS o temperaturze SMS z ATTINY85 i A1 GSM: 5 kroków

Wideo: Powiadomienia SMS o temperaturze SMS z ATTINY85 i A1 GSM: 5 kroków

Wideo: Powiadomienia SMS o temperaturze SMS z ATTINY85 i A1 GSM: 5 kroków
Wideo: [HA] ESP - powiadomienia, wysyłanie z Home Asisstanta komunikatów tekstowych i głosowych na telefon 2024, Lipiec
Anonim
Powiadomienia SMS o temperaturze SMS z ATTINY85 i A1 GSM
Powiadomienia SMS o temperaturze SMS z ATTINY85 i A1 GSM

Ta instrukcja pokazuje, jak uchwycić temperaturę z prostego czujnika temperatury i wysłać ją SMS-em na telefon komórkowy. Dla uproszczenia wysyłam temperaturę z ustawionym interwałem ale pokazuję też jak można to zrobić tylko wyjątkami/alertami. Sprzęt jest bardzo tani, mniej niż 10 dolarów, chociaż należy wziąć pod uwagę powtarzające się koszty SMS-ów.

Podnoszenie ciężkich przedmiotów jest wykonywane przez prosty, ale wydajny ATTINY 85, który rejestruje dane o temperaturze, a następnie wysyła SMS-a za pośrednictwem modułu GSM AI-Thinker A6.

Krótko mówiąc, piszesz kod ATTINY85 w środowisku Arduino IDE i wypalasz go na ATTINY85 za pomocą konwertera USBASP serial/USB. Omówiłem konfigurację modułu GSM AI-Thinker A6 i Arduino IDE w dwóch poprzednich samouczkach. Różnicą jest tutaj połączenie modułu GSM ATTINY i A6 za pomocą komunikacji szeregowej.

www.instructables.com/id/How-to-Send-an-SM…

Po zaprogramowaniu ATTINY odczytuje dane temperatury z czujnika termometru - Dallas 18B20-, a następnie wysyła dane i polecenia przez połączenie szeregowe do modułu GSM A6, który następnie wysyła je jako tekst SMS na Twój telefon komórkowy/smartfon.

Oto, czego potrzebujesz:

1. Konwerter szeregowy USBASP/USB.

2. CZUŁOŚĆ 85.

3. AI-Thinker A6 Moduł GSM w wersji 6 (z simem z kredytami SMS).

4. Zasilanie płytki stykowej 3.3 v dla ATTINY85.

5. Zasilanie USB 3.3.v dla modułu GSM AI-Thinker A6.

6. Czujnik temperatury Dallas 18B20..

7. Rezystor 4,7k dla czujnika 18B20.

8. Płytka do krojenia chleba i kable.

9. Arduino IDE (użyłem do tego wersji 1.8.5.).

10. Laptop z systemem Windows X (użyłem wersji 10) z wolnym portem USB.

Krok 1: Programowanie ATTINY 85

Oto kod Arduino IDE (Będziesz musiał zmienić numer telefonu, na który chcesz wysłać SMS.)

#include #include #include

// *** // *** Zdefiniuj piny RX i TX. Wybierz dowolne dwa // *** szpilki, które nie są używane. Staraj się unikać D0 (pin 5) // *** i D2 (pin 7) jeśli planujesz używać I2C. // *** #define RX 3 // *** D3, pin 2 #define TX 4 // *** D4, pin 3

// *** // *** Zdefiniuj port szeregowy oparty na oprogramowaniu. Używanie // *** nazwy Serial, aby kod mógł być używany na innych platformach // *** obsługujących sprzętowy serial. Na chipach // *** obsługujących szeregowy sprzęt, po prostu // *** skomentuj tę linię. // ***

SoftwareSerial mySerial = SoftwareSerial (RX, TX);

// *** // *** Pinout ATtiny25/45/85: // *** PDIP/SOIC/TSSOP // *** ================== =========================================================== ========================= // *** // *** (PCINT5/RESET/ADC0/dW) PB5 [1]* [8] VCC // *** (PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3 [2] [7] PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) // *** (PCINT4/ XTAL2/CLKO/OC1B/ADC2) PB4 [3] [6] PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1) // *** GND [4] [5] PB0 (MOSI/DI/SDA/AIN0 /OC0A/OC1A/AREF/PCINT0) // *** // ATTINY 85 częstotliwość ustawiona na wewnętrzne 8 MHz

// *** // *** Pin, do którego podłączony jest przewód danych OneWire // ***. // *** #define ONE_WIRE_BUS 1

// *** // *** Skonfiguruj instancję oneWire do komunikacji z dowolnymi urządzeniami // *** OneWire (nie tylko z układami temperatury Maxim/Dallas). // *** OneWire _oneWire = OneWire(ONE_WIRE_BUS);

// *** // *** Przekaż nasze odniesienie oneWire do temperatury Dallas. // *** DallasTemperature _sensors = DallasTemperature(&_oneWire);

void setup() { // *** // *** Zainicjuj port szeregowy // *** mySerial.begin(115200); opóźnienie (60000);

// *** Uruchom bibliotekę. _czujniki.początek(); }

pusta pętla () {

// *** // *** Pobierz aktualną temperaturę i wyświetl ją. // *** _sensors.requestTemperatures(); opóźnienie (2000); podwójna tempC = _sensors.getTempCByIndex(0); podwójna tempF = _sensors.getTempFByIndex(0); // sprawdź błędy - czasami na początku, temperatura pokazywana jako 85C

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature){SMS_temp(tempC, " Za ciepło");} }

void SMS_temp(double mytemp, String myalert) { mySerial.println("AT+CMGF=1"); //ustaw na opóźnienie trybu SMS(1000); mySerial.println("AT+CMGF=1"); //ustaw na opóźnienie trybu SMS(1000); //mySerial.println("AT+CMGS=\"+TWÓJ NUMER\""); //ustaw numer telefonu (w cudzysłowie) delay(1000); mySerial.print(mytemp, 1); mójSerial.print(mojalert); opóźnienie (1000); mójSerial.write(0x1A); // wysyła ctrl+z koniec komunikatu delay(1000); mójSerial.write(0x0D); // Powrót karetki w Hex delay(1000); mójSerial.write(0x0A); opóźnienie (1000000); // 17 minut - dostosuj do własnych potrzeb }

Otwórz środowisko Arduino IDE - szczegółowo opisałem, jak znaleźć sposób na obejście tego w mojej poprzedniej instrukcji, do której nawiązałem wcześniej.

Będziesz potrzebować następujących bibliotek

SoftwareSerial.h

OneWire.h

DallasTemperatura.h

Następnie skonfiguruj piny RX i TX na ATTINY85, które musisz połączyć z A1 Thinker. ATTINY 85 ma 8 pinów, po cztery z każdej strony i jest wyrównany za pomocą kropki na powierzchni jako odniesienia. Pin 1 lub pin RESET znajduje się obok kropki.

(w tym przypadku wybrałem Pin2 i 3 - znajdują się po tej samej stronie co pin RESET, który znajduje się obok kropki na powierzchni ATTINY 85. Pin 2 jest kolejnym pinem po pinzie RESET, podczas gdy pin 3 znajduje się między pinem 2 i ZIEMIA)

Następnie musisz skonfigurować czujnik temperatury -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire(ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature(&_oneWire);

Następnie skonfiguruj port szeregowy oprogramowania

mójSerial.początek(115200);

opóźnienie (60000);

a następnie wywołaj czujniki za pomocą _sensors.begin();

Dalej jest pętla, która odpytuje w ustalonym czasie, rejestruje temperaturę i wysyła komunikat/alert w zależności od wartości. Używa funkcji SMS_temp, w której również ustawiasz czas trwania pętli

void loop(){ sensors.requestTemperatures(); opóźnienie (2000);

podwójna tempC = _sensors.getTempCByIndex(0);

podwójna tempF = _sensors.getTempFByIndex(0);

if (tempC <= 14){SMS_temp(tempC, " NIEBEZPIECZNIE zimno");}

if (tempC > 14 && tempC <= 18) {SMS_temp(tempC, " Dość zimno");}

if (tempC > 18 && tempC < 23) {SMS_temp(tempC, " Temp w sam raz");}

if (tempC >= 23 && error_temperature){SMS_temp(tempC, "Za ciepło");}

}

==============

Następnie skonfiguruj Arduino IDE, aby przygotować się do wgrania do ATTINY85.

Kilka rzeczy do zapamiętania

1- Jeśli nie masz tablic z rodziny ATTINY, dodaj następujący adres URL https://raw.githubusercontent.com/damellis/attiny/… w URL File/Preferences/Additional Boards Manager, Następnie w Arduio IDE kliknij Tools/Board/Board Manager i wyszukaj ATTINY i zainstaluj nową płytkę. Zmień procesor na Attiny85.

Krok 2: Wgranie programu do ATTINY85

Wgrywanie programu do ATTINY85
Wgrywanie programu do ATTINY85

Zapoznaj się również z moją poprzednią instrukcją na ten temat -

ATTINY85 posiada dwa tryby, odpowiednio tryb programowania i tryb operacyjny.1. TRYB PROGRAMOWANIA Najpierw zidentyfikuj piny na ATTINY85. Aby to zrobić, znajdź małe wycięcie na powierzchni chipa, które znajduje się obok pinu RST/RESET. Używając tego jako punktu odniesienia, możesz zidentyfikować pozostałe szpilki. Wszystkie te informacje znajdują się w arkuszu danych A85 -

USBasp i ATTINY85 należy podłączyć tak, jak pokazano na powyższym obrazku.

Następnie na Arduino IDE ustaw programator na USBasp, a częstotliwość na wewnętrzne 8Mhz.

Podłącz USBasp do portu USB w laptopie (w systemie Windows 10, jeśli nie masz sterownika USBasp, użyj Zadiga zgodnie ze stroną

Następnie, po podłączeniu USBasp, wybierz szkic/przesyłanie Arduino IDE i miejmy nadzieję, że powinieneś zobaczyć postęp przesyłania pokazany czerwonymi literami Arduino IDE i kończący się na avrdude done. Dziękuję Ci.

Wszelkie błędy na tym etapie są zwykle związane z luźnymi kablami lub niewłaściwym sterownikiem.

Krok 3: Uruchamianie programu

Uruchamianie programu
Uruchamianie programu
Uruchamianie programu
Uruchamianie programu
Uruchamianie programu
Uruchamianie programu

Najpierw coś o czujniku termometru Dallas 18b20. Ma 3 piny, uziemienie (G), dane (D) i VCC, jak pokazano na powyższym obrazku. Do działania wymaga zmostkowania D i VCC rezystorem 4,7k. G i VCC są podłączone do odpowiednich biegunów, podczas gdy D jest podłączone do ATTINY 85, pin - [6] PB1, zgodnie z konfiguracją w kodzie.

Następnie podłącz ATTINY do A6 GSM w następujący sposób (i pokazano powyżej)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

i na samej A6, A6 PWR A6 VCC 5.0A6 RST A6 GND (Jeszcze nie podłączaj do masy!!!!!)

Teraz włącz oba urządzenia i po kilku sekundach dotknij tymczasowo styku uziemienia A6 kablem podłączonym do styku A6 RST. A6 wyłączy się i włączy i miejmy nadzieję, że wkrótce otrzymasz dane o temperaturze w telefonie.

Krok 4: Wniosek

Ta instrukcja może wydawać się dość prosta, ale chodzi o zilustrowanie tego, co można osiągnąć za pomocą tanich komponentów. Oczywiście, jeśli masz dostęp do wi-fi lub huba BLE, są bardziej odpowiednie rozwiązania.

Nie obejmowałem innych funkcjonalności takich jak wysłanie SMS-a na telefon w celu zainicjowania rejestracji/transmisji temperatury itp.

Zalecana: