Turinys:

SMS teksto įspėjimai iš ATTINY85 ir A1 GSM: 5 žingsniai
SMS teksto įspėjimai iš ATTINY85 ir A1 GSM: 5 žingsniai

Video: SMS teksto įspėjimai iš ATTINY85 ir A1 GSM: 5 žingsniai

Video: SMS teksto įspėjimai iš ATTINY85 ir A1 GSM: 5 žingsniai
Video: Текст. Реальность || 1 cерия 2024, Liepa
Anonim
SMS teksto įspėjimai iš ATTINY85 ir A1 GSM
SMS teksto įspėjimai iš ATTINY85 ir A1 GSM

Ši instrukcija parodo, kaip užfiksuoti temperatūrą iš paprasto temperatūros jutiklio ir išsiųsti ją SMS žinute į savo mobilųjį telefoną. Kad būtų paprasčiau, aš siunčiu temperatūrą nustatytu intervalu, bet taip pat parodau, kaip tai galima padaryti tik išimtimi / įspėjimais. Techninė įranga yra labai maža kaina, mažiau nei 10 dolerių, nors reikia atsižvelgti į pasikartojančias SMS išlaidas.

Sunkių kėlimų imasi paprastas, bet galingas ATTINY 85, kuris fiksuoja temperatūros duomenis ir po to suaktyvina SMS žinutę, siunčiamą per AI-Thinker A6 GSM modulį.

Trumpai tariant, jūs parašote ATTINY85 kodą „Arduino IDE“aplinkoje ir įrašote jį į ATTINY85 naudodami USBASP nuoseklųjį/USB keitiklį. Dviejuose ankstesniuose vadovėliuose aptariau „AI-Thinker A6 GSM“modulio ir „Arduino IDE“nustatymą. Čia skiriasi ATTINY ir A6 GSM modulių sąsaja naudojant nuoseklųjį ryšį.

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

Po programavimo ATTINY nuskaito temperatūros duomenis iš termometro jutiklio - „Dallas 18B20-“, o tada siunčia duomenis ir komandas nuosekliu ryšiu į A6 GSM modulį, kuris tada siunčia juos kaip SMS tekstą į jūsų mobilųjį / išmanųjį telefoną.

Štai ko jums reikia:

1. USBASP serijinis/USB keitiklis.

2. ATTINAS 85.

3. AI-Thinker A6 GSM modulio 6 versija (su sim, turinčiu SMS kreditus).

4. 3.3V duonos lentos maitinimo šaltinis ATTINY85.

5. 3.3.v USB maitinimo šaltinis AI-Thinker A6 GSM moduliui.

6. Dalaso 18B20 temperatūros jutiklis..

7. 4,7 k rezistorius 18B20 jutikliui.

8. Duonos lenta ir kabeliai.

9. „Arduino IDE“(tam naudojau 1.8.5 versiją).

10. „Windows X“nešiojamasis kompiuteris (naudojau 10 versiją) su nemokamu USB prievadu.

1 žingsnis: ATTINY 85 programavimas

Čia yra „Arduino IDE“kodas (turėsite pakeisti telefono numerį, į kurį norite siųsti SMS.)

#įtraukti #įtraukti #įtraukti

*** *** *** *** Apibrėžkite RX ir TX kaiščius. Pasirinkite bet kokius du nenaudotus // *** kaiščius. Stenkitės vengti D0 (5 kaištis) // *** ir D2 (7 kaištis), jei planuojate naudoti I2C. // *** #define RX 3 // *** D3, 2 kaištis #define TX 4 // *** D4, 3 kaištis

// *** // *** Apibrėžkite programine įranga pagrįstą nuoseklųjį prievadą. Naudojant // *** pavadinimą „Serial“, kad kodas galėtų būti naudojamas kitose // *** platformose, palaikančiose aparatinę seriją. Ant // *** lustų, palaikančių aparatinės įrangos seriją, tiesiog // *** pakomentuokite šią eilutę. // ***

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 dažnis nustatytas esant vidiniam 8 MHz dažniui

// *** // *** Kištukas, prie kurio prijungtas „OneWire“duomenų laidas. // *** #define ONE_WIRE_BUS 1

// *** // *** Nustatykite „OneWire“egzempliorių, kad galėtumėte bendrauti su bet kokiais „OneWire“// *** įrenginiais (ne tik „Maxim“/„Dallas“temperatūros IC). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

*** *** *** Pateikite „oneWire“nuorodą į Dalaso temperatūrą. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

void setup () {// *** // *** Inicijuokite nuoseklųjį prievadą // *** mySerial.begin (115200); vėlavimas (60000);

// *** Paleiskite biblioteką. _jutikliai.begin (); }

void loop () {

*** *** *** *** Gaukite dabartinę temperatūrą ir parodykite ją. // *** _sensors.requestTemperatures (); vėlavimas (2000 m.); dviguba tempC = _sensors.getTempCByIndex (0); dviguba tempF = _sensors.getTempFByIndex (0); // patikrinkite, ar nėra klaidų - kartais pradžioje, temperatūra rodoma kaip 85C

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature) {SMS_temp (tempC, „Per šilta“);}}

void SMS_temp (dvigubas mitas, eilutė myalert) {mySerial.println ("AT+CMGF = 1"); // nustatyti SMS režimo uždelsimą (1000); mySerial.println ("AT+CMGF = 1"); // nustatyti SMS režimo uždelsimą (1000); //mySerial.println("AT+CMGS=\"+JAVO NUMERIS / ""); // nustatyti telefono numerio (suvyniotą į dvi kabutes) uždelsimą (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); vėlavimas (1000); mySerial.write (0x1A); // siunčia ctrl+z pranešimo pabaigos uždelsimas (1000); mySerial.write (0x0D); // Vežimo grąžinimas šešiabriauniu vėlavimu (1000); mySerial.write (0x0A); vėlavimas (1000000); // 17 minučių - prisitaikykite prie savo programos}

Atidarykite „Arduino IDE“aplinką - aš išsamiai aprašiau, kaip tai padaryti, savo ankstesnėje instrukcijoje, apie kurią užsiminiau anksčiau.

Jums reikės šių bibliotekų

SoftwareSerial.h

OneWire.h

Dalaso temperatūra.h

Tada sukonfigūruokite RX ir TX kaiščius ATTINY85, kuriuos turite prijungti prie „A1 Thinker“. „ATTINY 85“turi 8 kaiščius, po keturis iš abiejų pusių ir yra išlygintas naudojant tašką ant paviršiaus ir yra atskaitos taškas. 1 smeigtukas arba RESET kaištis yra šalia taško.

(šiuo atveju pasirinkau 2 ir 3 kaiščius - jie yra toje pačioje pusėje kaip ir RESET kaištis, esantis šalia taško ATTINY 85 paviršiuje. 2 kaištis yra kitas kaištis iš RESET kaiščio, o 3 kaištis yra tarp kaiščio 2 ir GROUND)

Tada turite sukonfigūruoti temperatūros jutiklį -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

Toliau nustatykite programinės įrangos nuoseklųjį prievadą

mySerial.begin (115200);

vėlavimas (60000);

ir tada iškvieskite jutiklius naudodami _sensors.begin ();

Tada yra ciklas, kuris apklausia iš anksto nustatytu laiku, registruoja temperatūrą ir siunčia pranešimą / įspėjimą, priklausomai nuo vertės. Jis naudoja funkciją SMS_temp, kurioje taip pat nustatote ciklo laiką

void loop () {sensors.requestTemperatures (); vėlavimas (2000 m.);

dviguba tempC = _sensors.getTempCByIndex (0);

dviguba tempF = _sensors.getTempFByIndex (0);

if (tempC <= 14) {SMS_temp (tempC, "PAVOJINGAI šalta");}

if (tempC> 14 && tempC <= 18) {SMS_temp (tempC, "Gana šalta");}

if (tempC> 18 && tempC <23) {SMS_temp (tempC, "Temp Just right");}

if (tempC> = 23 && error_temperature) {SMS_temp (tempC, "Per šilta");}

}

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

Tada nustatykite „Arduino IDE“, kad galėtumėte pasiruošti įkėlimui į ATTINY85.

Reikia atkreipti dėmesį į daugybę dalykų

1- Jei neturite ATTINY plokščių šeimos, pridėkite šį URL https://raw.githubusercontent.com/damellis/attiny/…, esantį faile/nuostatos/papildomų lentų tvarkyklės URL, Tada „Arduio IDE“spustelėkite Įrankiai/Lentos/Lentos tvarkyklė ir ieškokite ATTINY ir įdiekite naują plokštę. Pakeiskite procesorių į „Attiny85“.

2 veiksmas: įkelkite programą į ATTINY85

Programos įkėlimas į ATTINY85
Programos įkėlimas į ATTINY85

Taip pat žiūrėkite mano ankstesnį nurodymą šiuo klausimu-https://www.instructables.com/id/15-Dollar-Attiny8…

ATTINY85 turi du režimus, atitinkamai programavimo ir veikimo režimus. PROGRAMAVIMO REŽIMAS Pirmiausia nustatykite ATTINY85 kaiščius. Norėdami tai padaryti, suraskite mažą įpjovą ant lusto paviršiaus, esančio šalia RST/RESET kaiščio. Naudodami tai kaip atskaitos tašką, galite nustatyti likusius kaiščius. Visa ši informacija pateikta A85 duomenų lape -https://www.microchip.com/downloads/en/DeviceDoc/At…

USBasp ir ATTINY85 turi būti prijungti, kaip parodyta aukščiau esančiame paveikslėlyje.

Tada „Arduino IDE“programuotoją nustatykite į USBasp, o dažnį - į vidinį 8Mhz.

Prijunkite USBasp prie nešiojamojo kompiuterio USB prievado („Windows 10“, jei neturite „USBasp“tvarkyklės, naudokite „Zadig“, kaip nurodyta svetainėje

Tada, prijungę „USBasp“, pasirinkite iš „Arduino IDE Sketch/upload“ir, tikiuosi, turėtumėte pamatyti įkėlimo eigą, rodomą raudonomis „Arduino IDE“raidėmis ir baigiant „avrdude done“. Ačiū.

Bet kokios klaidos šiame etape paprastai yra susijusios su laisvais kabeliais arba netinkama tvarkykle.

3 žingsnis: paleiskite programą

Jūsų programos vykdymas
Jūsų programos vykdymas
Jūsų programos vykdymas
Jūsų programos vykdymas
Jūsų programos vykdymas
Jūsų programos vykdymas

Pirma, kažkas apie „Dallas 18b20“termometro jutiklį. Jis turi 3 kaiščius, įžeminimą (G), duomenis (D) ir VCC, kaip parodyta aukščiau esančiame paveikslėlyje. Norint veikti, reikia susieti D ir VCC su 4,7 k rezistoriumi. G ir VCC yra prijungti prie atitinkamų polių, o D yra prijungtas prie ATTINY 85, kaiščio - [6] PB1, kaip sukonfigūruota kode.

Tada prijunkite ATTINY prie A6 GSM taip (ir parodyta aukščiau)

ATTINY TX A6 UART_RXd ATTINY RX A6 UART_TXd

ATTINY GND A6 GND

ir pačiame A6, A6 PWR A6 VCC 5.0A6 RST A6 GND (dar neprisijunkite prie žemės !!!!!)

Dabar įjunkite abu įrenginius ir po kelių sekundžių laikinai palieskite A6 įžeminimo kaištį, prijungę kabelį prie A6 RST kaiščio. A6 išsijungs ir įsijungs, ir, tikiuosi, netrukus į savo telefoną turėtumėte gauti temperatūros duomenis.

4 žingsnis: Išvada

Ši pamoka gali atrodyti gana paprasta, tačiau idėja yra parodyti, ką galima pasiekti naudojant pigius komponentus. Akivaizdu, kad jei turite prieigą prie „Wi-Fi“ar BLE koncentratoriaus, yra tinkamesnių sprendimų.

Neapžvelgiau kitų funkcijų, tokių kaip SMS siuntimas į telefoną, kad būtų galima pradėti temperatūros įrašymą / perdavimą ir pan.

Rekomenduojamas: