Spisu treści:
- Krok 1: Programowanie ATTINY 85
- Krok 2: Wgranie programu do ATTINY85
- Krok 3: Uruchamianie programu
- Krok 4: Wniosek
Wideo: Powiadomienia SMS o temperaturze SMS z ATTINY85 i A1 GSM: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
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
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:
Opaska ostrzegawcza o temperaturze: 10 kroków
Opaska ostrzegawcza przed temperaturą: Mieszkając na Florydzie, interesowałam się stworzeniem ubrania, które mogłoby mnie ostrzegać, gdy na zewnątrz robi się zbyt gorąco. Korzystając z Arduino i kilku prostych komponentów, udało mi się stworzyć płytkę drukowaną, którą można wbudować w opaskę, która ostrzega mnie, gdy
Ręcznie wykonany stop lutowniczy o niskiej temperaturze topnienia: 5 kroków
Ręcznie wykonany stop lutowniczy o niskiej temperaturze topnienia: Stwórz stop lutowniczy o niskiej temperaturze topnienia, aby ułatwić rozlutowywanie. Odwiedź mój blog
Serwer danych o podwójnej temperaturze IoT: 12 kroków (ze zdjęciami)
Serwer danych o podwójnej temperaturze IoT: to moja pierwsza próba napisania instrukcji, więc proszę, nie przejmuj się! Jeśli uważasz, że to nie jest takie złe, zagłosuj na mnie w konkursie na autora po raz pierwszy. To mój projekt Lock-Down do zdalnego monitorowania 2 temperatur w szklarni
Wysyłanie danych o bezprzewodowych wibracjach i temperaturze do Arkuszy Google za pomocą Node-RED: 37 kroków
Wysyłanie danych o bezprzewodowych wibracjach i temperaturze do Arkuszy Google za pomocą Node-RED: Przedstawiamy przemysłowy bezprzewodowy czujnik wibracji i temperatury Long Range IoT firmy NCD, który może pochwalić się zasięgiem do 2 mil przy użyciu bezprzewodowej struktury sieci kratowej. Wyposażony w precyzyjny 16-bitowy czujnik wibracji i temperatury, to urządzenie przek
Powiadomienia e-mail o wibracjach i temperaturze za pomocą Node-RED: 33 kroki
Powiadomienia e-mail o wibracjach i temperaturze za pomocą Node-RED: Przedstawiamy przemysłowy bezprzewodowy czujnik wibracji i temperatury Long Range IoT firmy NCD, który może pochwalić się zasięgiem do 2 mil przy użyciu bezprzewodowej struktury sieci kratowej. Wyposażony w precyzyjny 16-bitowy czujnik wibracji i temperatury, to urządzenie przek