Բովանդակություն:

Mini Weather Station With Attiny85: 6 քայլ (նկարներով)
Mini Weather Station With Attiny85: 6 քայլ (նկարներով)

Video: Mini Weather Station With Attiny85: 6 քայլ (նկարներով)

Video: Mini Weather Station With Attiny85: 6 քայլ (նկարներով)
Video: AtTiny85 based Mini Weather Station using DHT22 Sensor OLED Display & 16x2 I2C LCD 2024, Նոյեմբեր
Anonim
Մինի եղանակային կայան Attiny85- ով
Մինի եղանակային կայան Attiny85- ով
Մինի եղանակային կայան Attiny85- ով
Մինի եղանակային կայան Attiny85- ով
Մինի եղանակային կայան Attiny85- ով
Մինի եղանակային կայան Attiny85- ով

Վերջերս ուսուցանվող Indigod0g- ում նկարագրվեց մինի եղանակային կայանը, որը բավականին լավ է աշխատում ՝ օգտագործելով երկու Arduinos: Միգուցե ոչ բոլորը ցանկանում են զոհաբերել 2 Arduino- ն `խոնավության և ջերմաստիճանի ցուցանիշներ ստանալու համար, և ես մեկնաբանեցի, որ հնարավոր է նմանատիպ գործառույթ կատարել երկու Attiny85- ի հետ: Կարծում եմ ՝ խոսելը հեշտ է, ուստի ավելի լավ է գումարս դնեմ այնտեղ, որտեղ բերանս է:

Իրականում, եթե ես համատեղեմ երկու ավելի վաղ հրահանգներ, ես գրեցի.

2-Wire LCD ինտերֆեյս Arduino- ի կամ Attiny- ի համար և տվյալների ստացում և ուղարկում Attiny85 (Arduino IDE 1.06) միջև, ապա աշխատանքի մեծ մասն արդեն կատարված է: Պետք է միայն մի փոքր հարմարեցնել ծրագրակազմը:

Ես ընտրեցի երկու լարային LCD լուծում `հերթափոխի գրանցամատյանով, այլ ոչ թե I2C LCD- ով, քանի որ Attiny- ում հերթափոխի գրանցամատյանը ավելի հեշտ է իրականացնել, քան I2C ավտոբուսը: Այնուամենայնիվ… եթե դուք, օրինակ, ցանկանում եք կարդալ BMP180 կամ BMP085 ճնշման սենսոր, դրա համար ձեզ ամեն դեպքում անհրաժեշտ է I2C, այնպես որ կարող եք նաև I2C LCD օգտագործել: TinyWireM- ը լավ գրադարան է I2C- ի համար Attiny- ում (բայց դա լրացուցիչ տարածք է պահանջում):

BOM Հաղորդիչ. DHT11 Attiny85 10 կ ռեզիստոր 433 ՄՀց հաղորդիչ մոդուլ

Ստացողը Attiny85 10k resistor 433 ՄՀց ընդունիչ մոդուլ

Displayուցասարք 74LS164 հերթափոխի գրանցամատյան 1N4148 դիոդ 2x1k դիմադրություն 1x1k փոփոխական դիմադրություն LCD էկրան 2x16

Քայլ 1. Մինի եղանակային կայան Attiny85- ով. Հաղորդիչ

Mini Weather Station With Attiny85: The Transmitter
Mini Weather Station With Attiny85: The Transmitter
Mini Weather Station With Attiny85: The Transmitter
Mini Weather Station With Attiny85: The Transmitter
Mini Weather Station With Attiny85: The Transmitter
Mini Weather Station With Attiny85: The Transmitter
Mini Weather Station With Attiny85: The Transmitter
Mini Weather Station With Attiny85: The Transmitter

Հաղորդիչը Attiny85- ի շատ հիմնական կոնֆիգուրացիա է ՝ վերակայման գծի վրա ձգվող դիմադրիչով: Հաղորդիչի մոդուլը կցված է «0» թվային կապին, իսկ DHT11 տվյալների կապը ամրացվում է թվային 4 -րդ կապին: Որպես ալեհավաք ամրացրեք 17,2 սմ լար: (շատ ավելի լավ ալեհավաքի համար տես 5 -րդ քայլը): softwareրագրակազմը հետևյալն է.

// կաշխատի Attiny // RF433 = D0 փին 5 -ի վրա

// DHT11 = D4 pin 3 // գրադարաններ #ներառել // Rob Tillaart- ից #ներառել dht DHT11; #սահմանել DHT11PIN 4 #սահմանել TX_PIN 0 // քորոց, որտեղ ձեր հաղորդիչը միացված է // փոփոխականները լողում են h = 0; բոց t = 0; int transmit_t = 0; int transmit_h = 0; int transmit_data = 0; void setup () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } void loop () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. խոնավություն; t = DHT11.temperature; // Ես գիտեմ, ես այստեղ օգտագործում եմ 3 ամբողջ փոփոխական // որտեղ կարող էի օգտագործել 1 // բայց դա հենց այնպես է, որ ավելի հեշտ է հետևել transmit_h = 100* (int) h; transmit_t = (int) t; transmit_data = transmit_h+transmit_t; man.transmit (transmit_data); ուշացում (500); }

Տվյալները ուղարկելու համար ծրագրաշարը օգտագործում է Մանչեսթերյան ծածկագիրը: Այն կարդում է DHT11- ը և ջերմաստիճանը և խոնավությունը պահում է 2 առանձին բոցերում: Քանի որ Մանչեսթերի ծածկագիրը ոչ թե բոց է ուղարկում, այլ ամբողջ թիվ, ես ունեմ մի քանի տարբերակ. ամբողջ թվերը նորից լողում են ստացողի մեջ, և ես պետք է որոշեմ, թե որն է ամբողջ թիվը, ինչը երկար է դարձնում ծածկագիրը: 2 -րդ տարբերակով ես դեռ պետք է որոշեմ, թե որ ամբողջ թիվն է խոնավության, իսկ որը `ջերմաստիճանի համար: Ես չեմ կարող միայն հաջորդականությամբ գնալ, եթե մեկ ամբողջ թիվ կորչի փոխանցման մեջ, այնպես որ ես պետք է ուղարկեմ նույնացուցիչ, որը կցված է ամբողջ թվին: 3 -րդ տարբերակով ես կարող եմ ուղարկել միայն մեկ ամբողջ թիվ: Ակնհայտ է, որ դա ընթերցումները դարձնում է մի փոքր ավելի ճշգրիտ `1 աստիճանի սահմաններում, և չի կարելի զրոյից ցածր ջերմաստիճան ուղարկել, բայց դա պարզապես պարզ կոդ է, և դրա շուրջ կան եղանակներ: Առայժմ միայն սկզբունքի մասին է խոսքը: Այսպիսով, ես անում եմ, որ բոցերը վերածում եմ ամբողջ թվերի և խոնավությունը բազմապատկում եմ 100 -ով: Այնուհետև ջերմաստիճանը ավելացնում եմ բազմապատկած խոնավությանը: Հաշվի առնելով այն փաստը, որ խոնավությունը երբեք չի լինի 100% առավելագույն թիվը, որը ես կստանամ, 9900 է: Հաշվի առնելով այն հանգամանքը, որ ջերմաստիճանը նույնպես չի լինի 100 աստիճանից բարձր, առավելագույն թիվը կլինի 99, հետևաբար ամենաբարձր թիվը, որը ես կուղարկեմ, 9999 է, և դա հեշտ է առանձնացնել ստացողի կողմից: Իմ հաշվարկը, որում ես օգտագործում եմ 3 ամբողջ թիվ, չափազանց մեծ է, քանի որ դա հեշտությամբ կարելի էր անել 1 փոփոխականի միջոցով: Ես պարզապես ուզում էի հեշտացնել ծածկագրին հետևելը: կոդը այժմ կազմվում է հետևյալ կերպ.

Երկուական էսքիզների չափը `2, 836 բայթ (առավելագույնը 8, 192 բայթ), այնպես, որ այն տեղավորվի Attiny 45 կամ 85 ՆՇՈՄ, իմ օգտագործած dht.h գրադարանը Ռոբ Թիլարտի գրադարանն է: Այդ գրադարանը նույնպես հարմար է DHT22- ի համար: Ես օգտագործում եմ 1.08 տարբերակը: Այնուամենայնիվ, Attiny85- ը կարող է խնդիրներ ունենալ գրադարանի ավելի ցածր տարբերակներով DHT22 կարդալիս: Ինձ համար հաստատվեց, որ 1.08 -ը և 1.14 -ը, չնայած աշխատում են սովորական Arduino- ով, դժվարանում են DHT22 կարդալ Attiny85- ում: Եթե ցանկանում եք DHT22 օգտագործել Attiny85- ում, օգտագործեք այս գրադարանի 1.20 տարբերակը: Այդ ամենը ժամանակի հետ է կապված: Գրադարանի 1.20 տարբերակն ունի ավելի արագ ընթերցում: (Շնորհակալություն Jeroen- ի օգտագործողի փորձի համար)

Քայլ 2. Մինի եղանակային կայան Attiny85- ով. Ընդունիչ

Mini Weather Station With Attiny85: The Receiver
Mini Weather Station With Attiny85: The Receiver

Կրկին Attiny85- ը օգտագործվում է հիմնական կոնֆիգուրացիայի դեպքում, երբ Վերակայման քորոցը բարձր է քաշված 10 կ ռեզիստորով: Ստացողի մոդուլը ամրացված է թվային 1 -ին կապին (6 -ի չիպի վրա): LCD- ն ամրացված է 0 և երկու թվային կապում: Կցեք 17.2 սմ մետաղալար ՝ որպես ալեհավաք: Կոդը հետևյալն է.

#ներառում

#ներառել LiquidCrystal_SR LCD (0, 2, TWO_WIRE); #սահմանել RX_PIN 1 // = ֆիզիկական փին 6 անվավեր կարգավորում () {lcd.begin (16, 2); lcd. տուն (); man.setupReceive (RX_PIN, MAN_1200); man.beginReceive (); } void loop () {if (man.receiveComplete ()) {uint16_t m = man.getMessage (); man.beginReceive (); lcd.print ("Խոնավ:"); lcd.print (մ/100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (մ%100); }}

Կոդը բավականին պարզ է. Փոխանցվող ամբողջ թիվը ստացվում և պահվում է «m» փոփոխականում: Այն բաժանվում է 100 -ի ՝ խոնավություն տալու համար, իսկ 100 -ի մոդուլը տալիս է ջերմաստիճանը: Այսպիսով, ենթադրենք, որ ստացված ամբողջ թիվը եղել է 33253325/100 = 333325 % 100 = 25 Այս ծածկագիրը կազմվում է 3380 բայթ և, հետևաբար, կարող է օգտագործվել միայն attiny85- ով, այլ ոչ 45 -ով

Քայլ 3. Մինի օդերևութաբանական կայան Attiny85/45. Էկրան

Mini Weather Station With Attiny85/45: Displayուցասարք
Mini Weather Station With Attiny85/45: Displayուցասարք
Mini Weather Station With Attiny85/45: Displayուցասարք
Mini Weather Station With Attiny85/45: Displayուցասարք

Theուցադրման համար ամենալավն այն է, որ ես վկայակոչեմ երկու մետաղալարով ցուցադրվող իմ ծրագիրը: Մի խոսքով, սովորական 16x2 էկրանն օգտագործում է shiftregister, որպեսզի կարողանա աշխատել երկու թվային կապում: Իհարկե, եթե նախընտրում եք օգտագործել I2C պատրաստի էկրան, այսինքն. հնարավոր է նաև, բայց հետո պետք է ներդնել I2C արձանագրություն Attiny- ի վրա: Tinywire արձանագրությունը կարող է դա անել: Թեև որոշ աղբյուրներ ասում են, որ դա սպասում է 1 ՄՀց ժամացույցի, ես որևէ խնդիր չունեի (մեկ այլ նախագծում) այն 8 ՄՀց -ով օգտագործելու համար: Ինչևէ, ես պարզապես այստեղ չխանգարեցի և օգտագործեցի հերթափոխի գրանցամատյան:

Քայլ 4. Մինի եղանակային կայան Attiny85/45. Հնարավորություններ/եզրակացություններ

Mini Weather Station With Attiny85/45. Հնարավորություններ/եզրակացություններ
Mini Weather Station With Attiny85/45. Հնարավորություններ/եզրակացություններ
Mini Weather Station With Attiny85/45. Հնարավորություններ/եզրակացություններ
Mini Weather Station With Attiny85/45. Հնարավորություններ/եզրակացություններ
Mini Weather Station With Attiny85/45. Հնարավորություններ/եզրակացություններ
Mini Weather Station With Attiny85/45. Հնարավորություններ/եզրակացություններ

Ինչպես ասվեց, ես այս հրահանգը դարձրեցի ցույց տալու, որ կարելի է մինի եղանակային կայան պատրաստել երկու attiny85- ով (նույնիսկ մեկ attiny85+ 1 attiny45- ով): Այն ուղարկում է միայն խոնավություն և ջերմաստիճան ՝ օգտագործելով DHT11: Այնուամենայնիվ, Attiny- ն ունի 5 թվային կապում, 6 նույնիսկ ինչ -որ խորամանկությամբ: Հետևաբար, հնարավոր է տվյալներ ուղարկել ավելի շատ սենսորներից: Իմ նախագծում, ինչպես երևում է նկարների տախտակի և պրոֆեսիոնալ PCB- ի (OSHPark) նկարներում, ես տվյալներ եմ ուղարկում/ստանում DHT11- ից, LDR- ից և PIR- ից, բոլորը օգտագործելով երկու attiny85's The attiny85 որպես ընդունիչ օգտագործելու սահմանափակումը, այնուամենայնիվ, տվյալների փայլուն ոճով ներկայացումն է: Քանի որ հիշողությունը սահմանափակ է. «Peratերմաստիճան, խոնավություն, լուսավորության մակարդակ, առարկայի մոտեցում» տեքստերը բավականին արագ կլրացնեն արժեքավոր հիշողության տարածքը: Այնուամենայնիվ, Arduino- ի երկու տարբերակ օգտագործելու ոչ մի պատճառ պարզապես ջերմաստիճան և խոնավություն ուղարկելու համար: Բացի այդ, հնարավոր է հաղորդիչը քնել և միայն արթնանալ, որպեսզի տվյալները ուղարկեն ասեք ամեն 10 րոպեն մեկ և դրանով կերակրեք այն կոճակի բջիջից: Ակնհայտ է, որ ոչ միայն ջերմաստիճանի կամ խոնավության տվյալները կարող են ուղարկվել, այլև կարելի է ուղարկել փոքր հաղորդիչների զանգված հողի խոնավության ցուցանիշները նույնպես, կամ ավելացնել անեմոմետր կամ անձրևաչափ

Քայլ 5. Մինի եղանակային կայան. Անթենա

Մինի եղանակային կայան. Ալեհավաք
Մինի եղանակային կայան. Ալեհավաք

Անթենան ցանկացած 433 ՄՀց -ի կարևոր մասն է: Ես փորձարկել եմ 17,2 սմ ստանդարտ «ձող» ալեհավաքի հետ և կարճ ֆլիրտ եմ արել կծիկ ալեհավաքի հետ: Այն, ինչ թվում էր, ամենալավն է, կծիկով բեռնված ալեհավաք է, որը հեշտ է պատրաստել: Դիզայնը Բեն Շուլերից է և, ըստ երևույթին, տպագրվել է «Elektor» ամսագրում: Այս «Air cooled 433 MHz Antenna» - ի նկարագրությամբ PDF- ը հեշտ է հետևել: (Հղումն անհետացավ, ստուգեք այստեղ)

Քայլ 6: BMP180- ի ավելացում

BMP180- ի ավելացում
BMP180- ի ավելացում

Wantանկանում եք ավելացնել բարոմետրիկ ճնշման տվիչ, ինչպիսին է BMP180- ը: ստուգեք իմ մյուս հրահանգը դրա վերաբերյալ:

Խորհուրդ ենք տալիս: