Мазмуну:
- 1 -кадам: Attiny85 менен мини аба ырайы станциясы: өткөргүч
- 2 -кадам: Attiny85 менен Mini Weather Station: Алуучу
- 3 -кадам: Attiny85/45 менен Mini Weather Station: Дисплей
- 4 -кадам: Attiny85/45 менен Mini Weather Station: Мүмкүнчүлүктөр/Жыйынтыктар
- 5 -кадам: Mini Weather Station: Антенна
- 6 -кадам: BMP180 кошуу
Video: Attiny85 менен мини -метеостанциясы: 6 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Жакында көрсөтмө берген Indigod0g, эки Arduino колдонуп, абдан жакшы иштеген мини -метеостанцияны сүрөттөгөн. Балким, ар ким нымдуулукту жана температуранын көрсөткүчтөрүн алуу үчүн 2 Arduinosту курмандыкка чалгысы келбеши мүмкүн жана мен муну эки Attiny85 менен окшош функцияны аткаруу мүмкүн экенин айттым. Менимче, сүйлөшүү оңой, андыктан акчамды оозума салганга жакшы.
Чынында, эгер мен мурунку эки көрсөтмөнү бириктирсем, мен мындай деп жазгам:
2-Wire LCD интерфейси Arduino же Attiny and Attiny85 (Arduino IDE 1.06) ортосунда маалыматтарды кабыл алуу жана жөнөтүү, анда иштин көбү бүткөн. Болгону программаны бир аз ыңгайлаштыруу керек.
Мен I2C ЖКнын ордуна сменалык реестр менен эки зымдуу LCD чечимди тандадым, анткени Attinyде сменалык реестр I2C автобусуна караганда ишке ашыруу оңой. Бирок, эгер сиз, мисалы, BMP180 же BMP085 басым сенсорун окууну кааласаңыз, анда I2C керек, андыктан I2C LCDди да колдонсоңуз болот. TinyWireM - Attinyдеги I2C үчүн жакшы китепкана (бирок бул кошумча орунду талап кылат).
BOM өткөргүч: DHT11 Attiny85 10 к каршылыгы 433MHz өткөргүч модулу
Алуучу Attiny85 10k каршылыгы 433 MHz кабыл алуучу модуль
Дисплей 74LS164 сменалык регистр 1N4148 диод 2x1k резистор 1x1k өзгөрмөлүү резистор LCD дисплей 2x16
1 -кадам: Attiny85 менен мини аба ырайы станциясы: өткөргүч
Өткөргүч - бул баштапкы абалга келтирүү линиясында каршылыгы бар Attiny85тин эң негизги конфигурациясы. Трансмиттер модулу санарип пинге '0' тиркелет жана DHT11 маалымат пини санариптик пинге 4. Антенна катары 17.2 см зымды тиркейт. (алда канча жакшы антенна үчүн 5 -кадамды караңыз). Программалык камсыздоо төмөнкүдөй:
// Attinyде иштейт // RF433 = D0 pin 5
// DHT11 = D4 pin 3 // китепканалар #кошуу // Роб Тиллаардан #кошуу DHT11; #define DHT11PIN 4 #dexine TX_PIN 0 // өткөргүңүз туташкан пин // өзгөрмөлөр калкып h = 0; float 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 өзүнчө сүзгүчтө сактайт. Манчестер коду сүзгүчтөрдү жөнөтпөйт, бирок бүтүн сан болгондо, менде бир нече вариант бар: 1- сүзгүчтөрдү эки бүтүн сандарга бөлүп, аларды жөнөтүү2- ар бир сүзгүчтү бүтүн санга жөнөтүү3- эки сүзгүчтү бир бүтүн санга жөнөтүү 1 варианты менен мен бириктиришим керек бүтүн сандар кайра ресиверде калкып чыгат жана мен кайсы бүтүн сан экенин аныкташым керек, кодду узун кылып салдым 2 -вариант менен мен дагы дагы кайсы бүтүн сан нымдуулукка, кайсынысы температурага тиешелүү экенин аныкташым керек. Мен өткөрүп берүү учурунда бир бүтүн сан жоголуп кетсе, мен ырааттуулук менен бара албайм, ошондуктан мен бүтүн санга тиркелген идентификаторду жөнөтүшүм керек эле. 3 -вариант менен мен бир бүтүн санды гана жөнөтө алам. Албетте, бул көрсөткүчтөрдү бир аз такыраак кылат - 1 градустун ичинде жана нөлдөн төмөн температураны жөнөтө албайт, бирок бул жөн эле код жана анын жолдору бар. Азырынча бул жөн эле принцип жөнүндө. Мен эмне кылсам, мен сүзгүчтөрдү бүтүн сандарга айландырам жана нымдуулукту 100гө көбөйтөм. Андан кийин температураны көбөйтүлгөн нымдуулукка кошом. Нымдуулук эч качан 100% болбойт Мен ала турган максималдуу номер 9900. Температура 100 градустан жогору болбостугун эске алганда, максималдуу саны 99 болот, ошондуктан мен жөнөтө турган эң чоң номер 9999 жана аны кабыл алуучу тараптан ажыратуу оңой. Менин эсептөөм 3 бүтүн сандарды колдонот, анткени ал 1 өзгөрмөнүн жардамы менен оңой эле жасалат. Мен жөн гана кодду ээрчүүнү оңой кылгым келди. Код азыр төмөнкүдөй түзүлөт:
Экилик эскиздин өлчөмү: 2, 836 байт (8, 192 байттык максимум), ошондуктан мен колдонгон dht.h китепканасы Attiny 45 же 85NOTEге туура келет. Бул китепкана DHT22 үчүн да ылайыктуу. Мен 1.08 версиясын колдонуп жатам. Бирок Attiny85те китепкананын төмөнкү версиялары бар DHT22 окуусунда көйгөйлөр болушу мүмкүн. Мени тастыктады, 1.08 жана 1.14 - кадимки Arduinoдо иштеп жатышса да - Attiny85тен DHT22ди окууда кыйынчылыктар бар. Эгерде сиз Attiny85те DHT22 колдонууну кааласаңыз, бул китепкананын 1.20 версиясын колдонуңуз. Мунун баары убакыт менен байланыштуу. Китепкананын 1.20 версиясы тезирээк окулат. (Jeroen колдонуучу тажрыйбасы үчүн рахмат)
2 -кадам: Attiny85 менен Mini Weather Station: Алуучу
Кайра Attiny85 негизги конфигурацияда 10 к каршылыгы менен бийикке тартылган Reset пини менен колдонулат. Алуучу модулу санарип пин 1ге (чипте пин 6) тиркелет. ЖК антенна катары 17.2 см зымды тиркеп, 0 жана эки сандык казыктарга тиркелет. Код төмөнкүчө:
#кошуу
#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = физикалык пин 6 жараксыз орнотуу () {lcd.begin (16, 2); lcd.home (); man.setupReceive (RX_PIN, MAN_1200); man.beginReceive (); } void loop () {if (man.receiveComplete ()) {uint16_t m = man.getMessage (); man.beginReceive (); lcd.print ("Нымдуу:"); lcd.print (m/100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m%100); }}
Код өтө жөнөкөй: берилген бүтүн сан "m" өзгөрмөсүндө кабыл алынат жана сакталат. Бул нымдуулукту берүү үчүн 100гө бөлүнөт жана 100дүн модулу температураны берет. Демек, алынган бүтүн сан 33253325/100 = 333325 % 100 болгон дейли = 25Бул код 3380 байтты түзөт, ошондуктан 45 менен эмес, attiny85 менен гана колдонсо болот
3 -кадам: Attiny85/45 менен Mini Weather Station: Дисплей
Дисплей үчүн мен эки зымдуу дисплейдеги көрсөтмөмө кайрылганым жакшы. Кыскача айтканда, жалпы 16x2 дисплей эки цифралуу пин менен иштей алышы үчүн shiftregister колдонот. мүмкүн, бирок андан кийин Аттини боюнча I2C протоколун ишке ашыруу керек. Tinywire протоколу муну кыла алат. Кээ бир булактар 1 МГц саат күтөт деп айтышса да, менде 8MhzAnywayде колдонуу үчүн эч кандай кыйынчылык болгон жок (башка долбоордо), мен бул жерде убара болгон жокмун жана нөөмөт реестрин колдондум.
4 -кадам: Attiny85/45 менен Mini Weather Station: Мүмкүнчүлүктөр/Жыйынтыктар
Жогоруда айтылгандай, мен мини -аба бекетин эки аттиний 85 менен жасай аларын көрсөтүш үчүн кылдым (ал тургай бир attiny85+ 1 attiny45 менен). Бул DHT11ди колдонуп, нымдуулукту жана температураны гана жөнөтөт., 6 ал тургай кээ бир амалкөйлүк менен. Ошондуктан дагы сенсорлордон маалыматтарды жөнөтүүгө болот. Менин долбоорумда- стриптиздеги жана профессионалдык ПХБдагы сүрөттөрдө көрүнгөндөй- мен DHT11ден, LDRден жана PIRден маалыматтарды колдонуп/алам. Attiny85ти кабыл алуучу катары колдонуунун чектөөсү - бул маалыматтарды жаркыраган стильде көрсөтүү. Эстутум чектелүү болгондуктан: "Температура, нымдуулук, жарыктын деңгээли, темага жакындап келүү" сыяктуу тексттер баалуу эстутум мейкиндигин бат эле толтурат. Ошентсе да, температураны жана нымдуулукту жөнөтүү/алуу үчүн эки Arduino колдонууга эч кандай себеп жок. Ар бир 10 мүнөттө маалыматтарды жөнөтүү үчүн уктатуу үчүн гана ойготуу жана аны баскычтын клеткасынан берүү. Ачык айтканда, температура же нымдуулук жөнүндөгү маалыматтар гана жөнөтүлбөстөн, бирөө жөнөтүүчү кичинекей өткөргүчтөргө ээ болушу мүмкүн. топурактын нымдуулугунун көрсөткүчтөрүн, же анемометрди же жамгыр өлчөгүчтү кошуңуз
5 -кадам: Mini Weather Station: Антенна
Антенна 433Mhz орнотуунун маанилүү бөлүгү болуп саналат. Мен стандарттуу 17.2 см 'rod' антеннасы менен эксперимент жүргүздүм жана антеннасы бар кыска флиртке ээ болдум. Дизайн Бен Шюелерден келген жана, кыязы, 'Электор' журналына жарыяланган. Бул "Аба муздатуучу 433 МГц антенна" сүрөттөлүшү бар PDFти ээрчүү оңой. (Шилтеме жоголду, бул жерден текшериңиз)
6 -кадам: BMP180 кошуу
BMP180 сыяктуу барометрдик басым сенсорун кошкуңуз келеби? менин башка көрсөтмөмдү текшериңиз.
Сунушталууда:
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 Arduino Uno менен: 4 кадам (сүрөттөр менен)
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 Arduino Uno менен: Кийилүүчү кыймылга көз салуу саатын кантип жасоо керек? Бул стагнацияны аныктаганда титирөө үчүн иштелип чыккан кийилүүчү гаджет. Убактыңыздын көбүн мен сыяктуу компьютерде өткөрөсүзбү? Сиз өзүңүз билбей сааттап отурасызбы? Анда бул аппарат f
Мини конвейерди кургак машина катары куруңуз: 7 кадам (сүрөттөр менен)
Мини конвейердик курду Slinky Machine катары куруңуз: Бул кичинекей проект сары түтүктүү моторду колдонуп, 1 фут узундуктагы конвейерди PVC түтүктөн, 1ден 4кө чейин карагайдан жана сүрөтчүнүн кенепинен (кур үчүн) иштетет. Мен иштей электе бир нече версияны карап көрдүм, жөнөкөй жана ачык ката кетирип
Мини гарнитура күчөткүчү: 7 кадам (сүрөттөр менен)
Мини гарнитуранын күчөткүчү: Текче модулдарынан кичинекей гарнитураны күчөткүч жасаңыз. Мен бул гарнитураны күчөткүчтү жакында Кытайга болгон учак сапарында кулакчындарымдан чыккан коркунучтуу үн сапатына нааразы болгондон кийин жасадым. Үнү жупуну жана мага окшош экен
Мини конвейерди кантип жасоо керек: 4 кадам (сүрөттөр менен)
Мини конвейерди кантип жасоо керек: Бүгүн мен эң жөнөкөй буюмдарды колдонуу менен мини конвейер жасап жатам, конвейер - бул роликтердин жардамы менен буюмдарды бир жерден экинчи жерге ташуучу машина, ошондуктан мен кичинекей моделди түзөм майда -чүйдөсүнө чейин видеону көрүп, добуш бериңиз
TerraDome: Arduino менен мини -тропикалык теплица: 18 кадам (сүрөттөр менен)
TerraDome: Arduino менен мини -тропикалык күнөскана: TerraDome - бул өсүмдүктөр жана тропикалык гүлдөр үчүн сегиз бурчтуу күмбөз формасындагы жабык күнөскана.Ардуино Мега башкарат, ал ар кандай сенсорлор жана ЖК дисплей аркылуу температураны жана жарыктандырууну жөнгө салат. Ошондой эле Юра паркынын эшиги бар (же