Мазмуну:
- 1 -кадам: ATTINY 85ти программалоо
- 2 -кадам: Программаны ATTINY85ке жүктөө
- 3 -кадам: Программаңызды иштетүү
- 4 -кадам: Жыйынтык
Video: ATTINY85 жана A1 GSMден SMS текст темп эскертүүлөрү: 5 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бул көрсөтмө сизге жөнөкөй температура сенсорунан температураны кантип тартып алууну жана аны смс аркылуу уюлдук телефонго жөнөтүүнү көрсөтөт. Жөнөкөйлөтүү үчүн, мен температураны белгиленген интервалда жөнөтөм, бирок мен муну өзгөчө / эскертүүлөр менен гана жасоого болорун көрсөтөм. Аппараттын баасы өтө төмөн, 10 доллардан азыраак, бирок кайталануучу смс чыгымдарын эске алуу керек.
Оор көтөрүү жөнөкөй, бирок күчтүү ATTINY 85 тарабынан жүргүзүлөт, ал температура маалыматын кармап, андан кийин AI-Thinker A6 GSM модулу аркылуу SMS жөнөтөт.
Кыскача айтканда, сиз ATTINY85 кодун Arduino IDE чөйрөсүнө жазасыз жана USBASP сериялык/USB конверторун колдонуп ATTINY85ке күйгүзөсүз. Мен AI-Thinker A6 GSM модулун жана Arduino IDEди мурунку эки окуу куралында орнотууну камтыдым. Бул жерде айырмасы ATTINY жана A6 GSM модулдарын сериялык байланышты колдонуу.
www.instructables.com/id/How-to-Send-an-SM…https://www.instructables.com/id/15-Dollar-Attiny8…
Программалоодон кийин, ATTINY термометр сенсорунун температурасын окуйт - Dallas 18B20-, андан кийин маалыматтарды жана буйруктарды A6 GSM модулуна сериялык туташуу аркылуу жөнөтөт, андан кийин аны мобилдик / смарт телефонуңузга SMS катары жөнөтөт.
Бул жерде сизге эмне керек:
1. USBASP сериялык/USB конвертору.
2. ATTINY 85.
3. AI-Thinker A6 GSM модулунун 6 версиясы (SMS кредиттери бар сим менен).
4. ATTINY85 үчүн 3.3v панельдик электр энергиясы.
5. AI-Thinker A6 GSM модулу үчүн 3.3.v USB кубаты.
6. Даллас 18B20 температура сенсору..
7. 18B20 сенсор үчүн 4.7k каршылык.
8. Нан тактасы жана кабелдер.
9. Arduino IDE (мен бул үчүн 1.8.5 версиясын колдондум).
10. Акысыз USB порту бар Windows X ноутбугу (мен 10 -версиясын колдондум).
1 -кадам: ATTINY 85ти программалоо
Бул жерде Arduino IDE коду (SMS жөнөткүңүз келген телефон номерин өзгөртүүгө туура келет.)
#кошуу #кошуу #кошуу
// *** // *** RX жана TX казыктарын аныктаңыз. Колдонулбаган эки // *** казыкты тандаңыз. Эгерде сиз I2C колдонууну пландасаңыз, D0 (5 -пин) // *** жана D2 (7 -пин) качууга аракет кылыңыз. // *** #dexine RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3
// *** // *** Программалык камсыздоого негизделген сериялык портту аныктаңыз. Кодду аппараттык негизделген серияны колдогон башка // *** платформаларында колдонуу үчүн // *** Сериалынын атын колдонуу. Аппараттык серияны колдогон // *** чиптеринде, жөн гана // *** бул сапты комментарийлеңиз. // ***
SoftwareSerial mySerial = SoftwareSerial (RX, TX);
// *** // *** Pin 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 жыштыгы ички 8 МГцте коюлган
// *** // *** OneWire маалыматы // *** зымы туташкан пин. // *** #аныктоо ONE_WIRE_BUS 1
// *** // *** OneWire экземплярын каалаган OneWire // *** түзмөктөрү менен байланышуу үчүн орнотуңуз (Максим/Даллас температурасы ICлери эле эмес). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);
// *** // *** Биздин OneWire шилтемесин Даллас Температурасына өткөрүңүз. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);
void setup () {// *** // *** Serial port initialize *** *** mySerial.begin (115200); кечигүү (60000);
// *** Китепкананы баштоо. _sensors.begin (); }
void loop () {
// *** // *** Учурдагы температураны алыңыз жана аны көрсөтүңүз. // *** _sensors.requestTemperatures (); кечигүү (2000); кош темп = _sensors.getTempCByIndex (0); кош темп = _sensors.getTempFByIndex (0); // каталарды текшерүү - кээде башталышында темп 85C катары көрсөтүлөт
эгер (tempC 14 && tempC 18 && tempC = 23 && error_temperature) {SMS_temp (tempC, "Өтө жылуу");}}
жараксыз SMS_temp (double mytemp, String myalert) {mySerial.println ("AT+CMGF = 1"); // SMS режиминин кечигүүсүнө коюлган (1000); mySerial.println ("AT+CMGF = 1"); // SMS режиминин кечигүүсүнө коюлган (1000); //mySerial.println("AT+CMGS=\"+СЕНИН САНЫН / ""); // телефон номерин коюу (кош тырмакчага оролгон) кечигүү (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); кечигүү (1000); mySerial.write (0x1A); // ctrl+z билдирүүнүн кечигүүсүнүн аягына жөнөтөт (1000); mySerial.write (0x0D); // Артка кайтуу Hex кечиктирүүдө (1000); mySerial.write (0x0A); кечигүү (1000000); // 17 мүнөт - өз колдонмоңузга ылайыкташтырыңыз}
Arduino IDE чөйрөсүн ачыңыз - мен буга чейин айтып өткөн мурунку көрсөтмөмдө муну кантип тапса болорун сүрөттөп бергем.
Сизге төмөнкү китепканалар керек болот
SoftwareSerial.h
OneWire.h
DallasTemperature.h
Андан кийин, A1 Thinker менен туташууңуз керек болгон ATTINY85 RX жана TX казыктарын конфигурациялаңыз. ATTINY 85те 8 казык бар, ар бир тарабында төртөө жана бетиндеги чекиттин жардамы менен тегизделген. Pin 1 же RESET пин бул чекиттин жанында.
(бул учурда мен Pin2 менен 3тү тандап алгам - бул ATTINY 85тин бетиндеги чекиттин жанында жайгашкан RESET пини менен бир тарапта. Pin 2 - RESET пиндин кийинки пини, ал эми пин 3 - пин ортосунда 2 жана GROUND)
Андан кийин, температура сенсорун конфигурациялашыңыз керек -
#аныктоо ONE_WIRE_BUS 1
OneWire _oneWire = OneWire (ONE_WIRE_BUS);
DallasTemperature _sensors = DallasTemperature (& _ oneWire);
Андан кийин программалык камсыздоонун сериялык портун орнотуңуз
mySerial.begin (115200);
кечигүү (60000);
анан сенсорлорду _sensors.begin () менен чакырыңыз;
Андан кийин, алдын ала белгиленген убакта сурамжылоо жүргүзүүчү, температураны жазып, мааниге жараша билдирүү / эскертүү жөнөтүүчү цикл бар. Бул SMS_temp функциясын колдонот, ал жерде сиз циклдин убакытын белгилейсиз
void loop () {sensors.requestTemperatures (); кечигүү (2000);
кош темп = _sensors.getTempCByIndex (0);
кош темп = _sensors.getTempFByIndex (0);
if (tempC <= 14) {SMS_temp (tempC, "DANGEROUSLY Cold");}
if (tempC> 14 && tempC <= 18) {SMS_temp (tempC, "Old Cold");}
if (tempC> 18 && tempC <23) {SMS_temp (tempC, "Temp Just right");}
if (tempC> = 23 && error_temperature) {SMS_temp (tempC, "Өтө жылуу");}
}
==============
Андан кийин, ATTINY85ке жүктөөгө даярдануу үчүн Arduino IDE орнотуңуз.
Белгилей турган бир катар нерселер
1- Эгерде сизде ATTINY такталар үй-бүлөсү жок болсо, анда төмөнкү URL дарегин кошуңуз https://raw.githubusercontent.com/damellis/attiny/… File/Preferences/Кошумча такталар менеджери URL, Андан кийин, Arduio IDE ичинде Tools/Board/Board Managerди басыңыз жана ATTINY издеп, жаңы тактаны орнотуңуз. Процессорду Attiny85ке өзгөртүңүз.
2 -кадам: Программаны ATTINY85ке жүктөө
Ошондой эле, бул боюнча менин мурунку көрсөтмөлөрүмө кайрылыңыз-https://www.instructables.com/id/15-Dollar-Attiny8…
ATTINY85тин эки режими, программалоо жана операциялар режими бар.1. ПРОГРАММАЛОО РЕЖИМИ Биринчиден, ATTINY85теги казыктарды аныктаңыз. Бул үчүн, чиптин бетиндеги RST/RESET төөнөгүчүнүн жанындагы кичинекей оюкту табыңыз. Муну шилтеме катары колдонуп, калган казыктарды аныктай аласыз. Бул маалыматтын бардыгы A85 маалымат барагында берилген -https://www.microchip.com/downloads/en/DeviceDoc/At…
USBasp жана ATTINY85 жогорудагы сүрөттө көрсөтүлгөндөй туташтырылышы керек.
Андан кийин, Arduino IDEде, программистти USBasp жана жыштыгын ички 8МГцке коюңуз.
USBaspти ноутбугуңуздагы USB портуна туташтырыңыз (Windows 10до, эгерде USBasp драйвери жок болсо, https://www.fischl.de/usbasp/ сайтына ылайык Zadig колдонуңуз)
Андан кийин, USBasp туташып турганда, Arduino IDE эскизинен/жүктөөдөн тандаңыз жана Arduino IDEнин кызыл тамгалары менен көрсөтүлгөн жана avrdude менен аяктаган жүктөө процессин көрөсүз деп үмүттөнөбүз. Рахмат.
Бул этапта каталар көбүнчө бош кабелдер же туура эмес драйвер менен байланышкан.
3 -кадам: Программаңызды иштетүү
Биринчиден, Даллас 18b20 термометр сенсору жөнүндө бир нерсе. Бул 3 төөнөгүчтөрү бар, Ground (G), маалымат (D) жана VCC жогорудагы сүрөттө көрсөтүлгөндөй. Иштетүү үчүн D жана VCCди 4.7k каршылыгы менен көпүрө кылууну талап кылат. G жана VCC тиешелүү уюлдарга туташат, ал эми D ATTINY 85, pin - [6] PB1, коддо конфигурацияланган.
Кийинки, ATTINY'ди A6 GSMге төмөнкүдөй туташтырыңыз (жана жогоруда көрсөтүлгөн)
ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd
ATTINY GND A6 GND
жана A6нын өзүндө, A6 PWR A6 VCC 5.0A6 RST A6 GND (Жерге азырынча туташпаңыз !!!!!)
Эми эки түзмөктү тең күйгүзүңүз, жана бир нече секунддан кийин, убактылуу A6 жерге туташтыргычын A6 RST пинине туташтырылган кабель менен тийиңиз. A6 өчөт жана күйөт жана үмүттөнөбүз, жакында телефонуңуздагы температура маалыматын алышыңыз керек.
4 -кадам: Жыйынтык
Бул көрсөтмө жөнөкөй көрүнүшү мүмкүн, бирок идея арзан баалуу компоненттер менен эмнеге жетишсе болорун көрсөтүү. Албетте, эгер сизде wi-fi же BLE хабына мүмкүнчүлүгүңүз болсо, анда ылайыктуу чечимдер бар.
Мен башка функцияларды камтыган жокмун, мисалы, телефонго SMS жөнөтүү, температураны жазууну / берүүнү баштоо ж.
Сунушталууда:
AWS жана ESP32 колдонуу темп жана нымдуулукту эскертүү: 11 кадам
AWS жана ESP32ди колдонуу менен температура жана нымдуулук жөнүндө эскертүү: Бул окуу куралында биз Temp жана нымдуулук сенсорунун жардамы менен ар кандай температура жана нымдуулук маалыматтарын өлчөйбүз. Сиз ошондой эле бул маалыматты AWSке кантип жөнөтүүнү үйрөнөсүз
Greentent - Ардуино темп жана нымдуулукту өлчөөчү дүйнөдөгү биринчи мини көчмө жашыл үй: 3 кадам
Greentent - Ардуино темп жана нымдуулукту өлчөөчү дүйнөдөгү биринчи мини портативдүү жашыл үй: Мен биринчи жолу температурасы көзөмөлдөнгөн кутуга кичинекей бакча орнотууну каалаганымда, түнкүсүн көчүп жүрүүгө боло турган көчмө теплица идеясын ойлоп таптым. жана нымдуулук. Ошентип, түндүн бир оокумунда, мен бул дүкөнгө баргым келет
ThingSpeak, ESP32 жана узак аралыкка зымсыз темп жана нымдуулук: 5 кадам
ThingSpeak, ESP32 жана Long Range Wireless Temp and Humidity: Бул окуу куралында биз Temp жана нымдуулук сенсорун колдонуп, ар кандай температура жана нымдуулук маалыматтарын өлчөйбүз. Бул маалыматты ThingSpeakке кантип жөнөтүүнү да үйрөнөсүз. Ошентип, аны ар кандай колдонмолор үчүн каалаган жерден талдай аласыз
Текст эскертүүлөрү бар DIY Door Alarm: 5 кадам
Текст эскертүүлөрү менен DIY эшик ойготкучу: Кээ бир жөнөкөй электроника, магниттер жана Raspberry Pi менен эшик/терезе сигналын жасаңыз. Raspberry Pi эшик ачылганда сизге текст же электрондук кат жөнөтүү үчүн колдонулат! Керектүү материалдар (шилтемелер камтылган): Raspberry Pi (бул жерде биз колдонгон комплект) Reed SwitchNeodymiu
Текст эскертүүлөрү бар Arduino эшик сигнализациясы: 14 кадам (сүрөттөр менен)
Arduino Door Alarm with Text Alerts: Бул эшиктин абалын аныктоо үчүн магниттик камыш которгучун колдонгон Arduino негизделген эшик ойготкучу жана үн сигналын жана текст билдирүүсүнө негизделген сигналды камтыйт