İçindekiler:

ATTINY85 ve A1 GSM'den SMS Metin Sıcaklık Uyarıları: 5 Adım
ATTINY85 ve A1 GSM'den SMS Metin Sıcaklık Uyarıları: 5 Adım

Video: ATTINY85 ve A1 GSM'den SMS Metin Sıcaklık Uyarıları: 5 Adım

Video: ATTINY85 ve A1 GSM'den SMS Metin Sıcaklık Uyarıları: 5 Adım
Video: ✅ Monitor Gamer hecho en casa con Ambilight 2024, Temmuz
Anonim
ATTINY85 ve A1 GSM'den SMS Metin Sıcaklık Uyarıları
ATTINY85 ve A1 GSM'den SMS Metin Sıcaklık Uyarıları

Bu talimat, basit bir sıcaklık sensöründen sıcaklığı nasıl yakalayacağınızı ve bunu cep telefonunuza sms metin ile nasıl göndereceğinizi gösterir. İşleri basitleştirmek için sıcaklığı belirli bir aralıkta gönderiyorum ama bunun sadece istisna/uyarılarla nasıl yapılabileceğini de gösteriyorum. Dikkate alınması gereken yinelenen sms maliyetleri olmasına rağmen, donanım çok düşük maliyetli, 10 dolardan az.

Ağır kaldırma, sıcaklık verilerini yakalayan ve ardından bir AI-Thinker A6 GSM modülü aracılığıyla gönderilecek bir SMS'i tetikleyen basit ama güçlü ATTINY 85 tarafından üstlenilir.

Kısacası ATTINY85 kodunu Arduino IDE ortamında yazıp, bir USBASP seri/USB çevirici kullanarak ATTINY85 üzerine yakıyorsunuz. AI-Thinker A6 GSM modülünün ve Arduino IDE'nin kurulumunu önceki iki derste ele aldım. Burada farklı olan, seri iletişim kullanarak ATTINY ve A6 GSM modülünün arayüzlenmesidir.

www.instructables.com/id/How-to-Send-an-SM…https://www.instructables.com/id/15-Dollar-Attiny8…

Programlamadan sonra ATTINY, bir termometre sensöründen - Dallas 18B20- sıcaklık verilerini okur ve ardından verileri ve komutları seri bağlantı ile A6 GSM modülüne gönderir ve ardından SMS metni olarak cep telefonunuza / akıllı telefonunuza gönderir.

İşte ihtiyacınız olan:

1. USBASP seri/USB dönüştürücü.

2. ATTINY 85.

3. AI-Thinker A6 GSM modülü sürüm 6 (SMS kredisi olan bir sim ile).

4. ATTINY85 için 3.3v devre tahtası güç kaynağı.

5. AI-Thinker A6 GSM modülü için 3.3.v USB güç kaynağı.

6. Dallas 18B20 sıcaklık sensörü..

7. 18B20 sensörü için 4.7k direnç.

8. Breadboard ve kablolar.

9. Arduino IDE (Bunun için 1.8.5 sürümünü kullandım).

10. Ücretsiz bir USB bağlantı noktasına sahip Windows X dizüstü bilgisayar (sürüm 10 kullandım).

Adım 1: ATTINY 85'in Programlanması

İşte Arduino IDE kodu (SMS göndermek istediğiniz telefon numarasını değiştirmeniz gerekecektir.)

#include #include #include

// *** // *** RX ve TX pinlerini tanımlayın. Kullanılmayan herhangi iki // *** pinini seçin. I2C kullanmayı planlıyorsanız D0 (pin 5) // *** ve D2 (pin 7)'den kaçınmaya çalışın. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Yazılım tabanlı seri port tanımlayın. // *** Serial adını kullanarak kodun donanım tabanlı seriyi destekleyen diğer // *** platformlarında kullanılabilmesi. // *** donanım serisini destekleyen çiplerde, sadece // *** bu satırı yorumlayın. // ***

SoftwareSerial mySerial = SoftwareSerial(RX, TX);

// *** // *** ATtiny25/45/85 pin çıkışı: // *** 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 frekansı dahili 8 MHz'de ayarlandı

// *** // *** OneWire verilerinin // *** kablosunun bağlı olduğu pin. // *** #define ONE_WIRE_BUS 1

// *** // *** Herhangi bir OneWire // *** cihazıyla iletişim kurmak için bir oneWire örneği kurun (yalnızca Maxim/Dallas sıcaklık IC'leri değil). // *** OneWire _oneWire = OneWire(ONE_WIRE_BUS);

// *** // *** oneWire referansımızı Dallas Sıcaklığına iletin. // *** DallasTemperature _sensors = DallasTemperature(&_oneWire);

void setup() { // *** // *** Seri bağlantı noktasını başlat // *** mySerial.begin(115200); gecikme(60000);

// *** Kütüphaneyi başlatın. _sensors.begin(); }

boşluk döngüsü () {

// *** // *** Mevcut sıcaklığı alın ve görüntüleyin. // *** _sensors.requestTemperatures(); gecikme(2000); çift tempC = _sensors.getTempCByIndex(0); çift tempF = _sensors.getTempFByIndex(0); // hataları kontrol et - bazen başlangıçta, sıcaklık 85C olarak gösterilir

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature){SMS_temp(tempC, " Çok sıcak");} }

void SMS_temp(double mytemp, String myalert) { mySerial.println("AT+CMGF=1"); // SMS modu gecikmesine ayarla(1000); mySerial.println("AT+CMGF=1"); // SMS modu gecikmesine ayarla(1000); //mySerial.println("AT+CMGS=\"+NUMARALARINIZ\""); // telefon numarasını ayarla (çift tırnak içine alınmış) gecikme(1000); mySerial.print(mytemp, 1); mySerial.print(myalert); gecikme(1000); mySerial.write(0x1A); // ctrl+z mesaj sonu gecikmesini gönderir(1000); mySerial.write(0x0D); // Onaltılık gecikmede Satır Başı(1000); mySerial.write(0x0A); gecikme(1000000); // 17 dakika - kendi uygulamanıza göre ayarlayın }

Arduino IDE ortamını açın - Daha önce bahsettiğim önceki talimatımda bu konuda sizi nasıl bulacağınızı ayrıntılı olarak açıkladım.

Aşağıdaki kütüphanelere ihtiyacınız olacak

SoftwareSerial.h

OneWire.h

DallasSıcaklık.h

Ardından, A1 Thinker ile bağlamanız gereken ATTINY85 üzerindeki RX ve TX pinlerini yapılandırın. ATTINY 85'in her iki tarafında dört adet olmak üzere 8 pimi vardır ve yüzeydeki nokta referans olarak kullanılarak hizalanmıştır. Pin 1 veya RESET pini noktanın yanındadır.

(bu durumda Pin2 ve 3'ü seçtim - Bunlar ATTINY 85'in yüzeyindeki noktanın yanında bulunan RESET pini ile aynı tarafta. Pin 2 RESET pininden sonraki pin iken Pin 3 Pin arasında 2 ve ZEMİN)

Ardından, sıcaklık sensörünü yapılandırmanız gerekir -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire(ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature(&_oneWire);

Ardından yazılım seri bağlantı noktasını ayarlayın

mySerial.begin(115200);

gecikme(60000);

ve ardından sensörleri _sensors.begin(); ile çağırın.

Ardından, önceden belirlenmiş bir zamanda yoklama yapan, sıcaklığı kaydeden ve değere bağlı olarak bir mesaj/uyarı gönderen döngü vardır. Döngünün zamanlamasını da ayarladığınız yer olan SMS_temp işlevini kullanır.

void loop(){ sensor.requestTemperatures(); gecikme(2000);

çift tempC = _sensors.getTempCByIndex(0);

çift tempF = _sensors.getTempFByIndex(0);

if (tempC <= 14){SMS_temp(tempC, "TEHLİKELİ ŞEKİLDE Soğuk");}

if (tempC > 14 && tempC <= 18) {SMS_temp(tempC, " Oldukça Soğuk");}

if (tempC > 18 && tempC < 23) {SMS_temp(tempC, " Temp Tam sağda");}

if (tempC >= 23 && error_temperature){SMS_temp(tempC, " Çok sıcak");}

}

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

Ardından, ATTINY85'e yüklemeye hazırlanmak için Arduino IDE'yi kurun.

Dikkat edilmesi gereken birkaç şey

1- ATTINY pano ailesine sahip değilseniz, Dosya/Tercihler/Ek Panolar Yöneticisi URL'sine https://raw.githubusercontent.com/damellis/attiny/… URL'sini ekleyin, Ardından, Arduio IDE içinde Araçlar/Board/Board Manager'a tıklayın ve ATTINY'yi arayın ve yeni kartı kurun. İşlemciyi Attiny85 olarak değiştirin.

Adım 2: Programı ATTINY85'e Yükleme

Programı ATTINY85'e Yükleme
Programı ATTINY85'e Yükleme

Ayrıca, bununla ilgili önceki talimatıma bakın -

ATTINY85'in sırasıyla programlama ve operasyon modu olmak üzere iki modu vardır.1. PROGRAMLAMA MODU Öncelikle ATTINY85 üzerindeki pinleri tanımlayın. Bunu yapmak için, RST/RESET pininin yanındaki çipin yüzeyindeki küçük çentiği bulun. Bunu referans noktası olarak kullanarak pinlerin geri kalanını belirleyebilirsiniz. Tüm bu bilgiler A85 veri sayfasında verilmiştir -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

USBasp ve ATTINY85 yukarıdaki resimde gösterildiği gibi bağlanmalıdır.

Ardından, Arduino IDE'de programlayıcıyı USBasp'ye ve frekansı dahili 8Mhz'ye ayarlayın.

USBasp'yi dizüstü bilgisayarınızdaki bir USB bağlantı noktasına bağlayın (Windows 10'da, USBasp sürücünüz yoksa, https://www.fischl.de/usbasp/ web sitesine göre Zadig'i kullanın)

Ardından, USBasp bağlıyken, Arduino IDE Sketch/upload'dan seçim yapın ve umarım Arduino IDE'nin kırmızı harfleriyle gösterilen ve avrdude ile biten yükleme ilerlemesini görmelisiniz. Teşekkürler.

Bu aşamadaki herhangi bir hata genellikle gevşek kablolardan veya yanlış sürücüden kaynaklanır.

Adım 3: Programınızı Çalıştırmak

Programınızı Çalıştırmak
Programınızı Çalıştırmak
Programınızı Çalıştırmak
Programınızı Çalıştırmak
Programınızı Çalıştırmak
Programınızı Çalıştırmak

İlk olarak, Dallas 18b20 termometre sensörü hakkında bir şeyler. Yukarıdaki resimde gösterildiği gibi 3 pin, Ground (G), data (D) ve VCC'ye sahiptir. Çalışması için D ve VCC'nin 4.7k dirençle köprülenmesini gerektirir. G ve VCC ilgili kutuplara bağlanırken D, kodda yapılandırıldığı gibi ATTINY 85, pin - [6] PB1'e bağlanır.

Ardından, ATTINY'yi aşağıdaki gibi (ve yukarıda gösterildiği gibi) A6 GSM'ye bağlayın.

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

ve A6'nın kendisinde, A6 PWR A6 VCC 5.0A6 RST A6 GND (Henüz toprağa bağlamayın!!!!!)

Şimdi her iki cihazı da açın ve birkaç saniye sonra, kablo A6 RST pimine bağlıyken geçici olarak A6 topraklama pimine dokunun. A6 kapanacak ve açılacak ve umarım yakında telefonunuza sıcaklık verilerini alacaksınız.

4. Adım: Sonuç

Bu talimat oldukça basit görünebilir, ancak fikir, düşük maliyetli bileşenlerle neler başarılabileceğini göstermektir. Açıkçası, wi-fi veya BLE hub'ına erişiminiz varsa, daha uygun çözümler vardır.

Sıcaklık kaydı / iletimini başlatmak için telefona SMS gönderme gibi diğer işlevleri ele almadım.

Önerilen: