Բովանդակություն:
- Քայլ 1. Մինի եղանակային կայան Attiny85- ով. Հաղորդիչ
- Քայլ 2. Մինի եղանակային կայան Attiny85- ով. Ընդունիչ
- Քայլ 3. Մինի օդերևութաբանական կայան Attiny85/45. Էկրան
- Քայլ 4. Մինի եղանակային կայան Attiny85/45. Հնարավորություններ/եզրակացություններ
- Քայլ 5. Մինի եղանակային կայան. Անթենա
- Քայլ 6: BMP180- ի ավելացում
Video: Mini Weather Station With Attiny85: 6 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Վերջերս ուսուցանվող 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- ով. Հաղորդիչ
Հաղորդիչը 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- ով. Ընդունիչ
Կրկին 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. Էկրան
Theուցադրման համար ամենալավն այն է, որ ես վկայակոչեմ երկու մետաղալարով ցուցադրվող իմ ծրագիրը: Մի խոսքով, սովորական 16x2 էկրանն օգտագործում է shiftregister, որպեսզի կարողանա աշխատել երկու թվային կապում: Իհարկե, եթե նախընտրում եք օգտագործել I2C պատրաստի էկրան, այսինքն. հնարավոր է նաև, բայց հետո պետք է ներդնել I2C արձանագրություն Attiny- ի վրա: Tinywire արձանագրությունը կարող է դա անել: Թեև որոշ աղբյուրներ ասում են, որ դա սպասում է 1 ՄՀց ժամացույցի, ես որևէ խնդիր չունեի (մեկ այլ նախագծում) այն 8 ՄՀց -ով օգտագործելու համար: Ինչևէ, ես պարզապես այստեղ չխանգարեցի և օգտագործեցի հերթափոխի գրանցամատյան:
Քայլ 4. Մինի եղանակային կայան 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- ի ավելացում
Wantանկանում եք ավելացնել բարոմետրիկ ճնշման տվիչ, ինչպիսին է BMP180- ը: ստուգեք իմ մյուս հրահանգը դրա վերաբերյալ:
Խորհուրդ ենք տալիս:
HC-12 Long Range Distance Weather Station and DHT Sensors: 9 Steps
HC-12 Long Range Distance Weather Station և DHT սենսորներ. Այս ձեռնարկում մենք կսովորենք, թե ինչպես կատարել հեռավոր հեռավոր եղանակային կայան ՝ օգտագործելով երկու dht տվիչ, HC12 մոդուլ և I2C LCD էկրան: Դիտեք տեսանյութը:
Super Weather Station Hanging Basket: 11 քայլ (նկարներով)
Super Weather Station Hanging Basket: Բարև բոլորին: Այս T3chFlicks բլոգային գրառման մեջ մենք ձեզ ցույց կտանք, թե ինչպես ենք պատրաստել խելացի կախովի զամբյուղ: Բույսերը թարմ և օգտակար հավելում են ցանկացած տան համար, բայց կարող են արագ հոգնեցնել, հատկապես, եթե դուք երբևէ հիշում եք դրանք ջրել
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 Arduino Uno- ով. 4 քայլ (նկարներով)
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 Arduino Uno- ի հետ. Ինչպե՞ս դարձնել կրելի գործունեության հետևող ժամացույց: Սա կրելի սարք է, որը նախատեսված է թրթռալու համար, երբ հայտնաբերում է լճացում: Դուք ժամանակի մեծ մասն ինձ պես համակարգչո՞վ եք անցկացնում: Դուք ժամեր շարունակ նստած եք ՝ դա չգիտակցելով: Ապա այս սարքը զ
MicroPython : : Mini Weather Station: 7 Steps
MicroPython Program : Mini Weather Station. Հիմա ձմեռ է, բայց դեռ մի փոքր շոգ է, չնայած ես միայն շապիկ եմ հագնում, ինչը ինձ ստիպում է իմանալ ընթացիկ ջերմաստիճանը, ուստի ես օգտագործում եմ Micropython ESP32 և DHT11 սենսորները: և պարզ եղանակային կայան, որպեսզի կարողանաք ստանալ ընթացիկ
Raspberry Pi Solar Weather Station: 7 քայլ (նկարներով)
Raspberry Pi Solar Weather Station: Իմ երկու նախորդ նախագծերի ՝ Compact Camera- ի և Portable Games Console- ի ավարտից հետո, ես ցանկանում էի նոր մարտահրավեր գտնել: Բնական առաջընթացը բացօթյա հեռավոր համակարգ էր … Ես ուզում էի կառուցել Raspberry Pi եղանակային կայան, որը