Orodha ya maudhui:

Kituo cha hali ya hewa cha Mini na Attiny85: Hatua 6 (na Picha)
Kituo cha hali ya hewa cha Mini na Attiny85: Hatua 6 (na Picha)

Video: Kituo cha hali ya hewa cha Mini na Attiny85: Hatua 6 (na Picha)

Video: Kituo cha hali ya hewa cha Mini na Attiny85: Hatua 6 (na Picha)
Video: Bundi mdadisi anaswa kwenye kamera ya hali ya hewa 2024, Julai
Anonim
Kituo cha hali ya hewa cha mini na Attiny85
Kituo cha hali ya hewa cha mini na Attiny85
Kituo cha hali ya hewa cha mini na Attiny85
Kituo cha hali ya hewa cha mini na Attiny85
Kituo cha hali ya hewa cha mini na Attiny85
Kituo cha hali ya hewa cha mini na Attiny85

Katika Indigod0g inayoweza kufundishwa hivi karibuni ilielezea kituo cha hali ya hewa mini ambacho hufanya kazi vizuri, kwa kutumia Arduinos mbili. Labda sio kila mtu anataka kutoa kafara 2 Arduinos ili kupata unyevu na usomaji wa joto na nikatoa maoni kuwa inapaswa kufanya kazi sawa na mbili za Attiny85. Nadhani mazungumzo ni rahisi, kwa hivyo ni bora kuweka pesa yangu mahali kinywa changu kilipo.

Kwa kweli, ikiwa nitaunganisha mafundisho mawili ya mapema niliandika:

2-Waya LCD interface kwa Arduino au Attiny na Kupokea na kutuma data kati ya Attiny85 (Arduino IDE 1.06) basi kazi nyingi tayari zimefanywa. Unahitaji tu kurekebisha programu kidogo.

Nilichagua suluhisho la LCD ya waya mbili na rejista ya mabadiliko, badala ya LCD ya I2C kwa sababu kwenye Attiny rejista ya mabadiliko ni rahisi kutekeleza kuliko basi ya I2C. Walakini… ikiwa kwa mfano unataka kusoma sensa ya shinikizo ya BMP180 au BMP085, unahitaji I2C kwa hiyo hata hivyo unaweza kutumia LCD ya I2C pia. TinyWireM ni maktaba nzuri ya I2C kwenye Attiny (lakini inahitaji nafasi ya ziada).

BOM mtumaji: DHT11 Attiny85 10 k resistor 433MHz moduli ya kusambaza

Mpokeaji wa moduli ya mpokeaji Attiny85 10k 433 MHz

Onyesha usajili 74LS164 rejista ya kuhama 1N4148 diode 2x1k resistor 1x1k variable resistor LCD display 2x16

Hatua ya 1: Kituo cha hali ya hewa cha mini na Attiny85: Transmitter

Kituo cha hali ya hewa cha mini na Attiny85: Mpitishaji
Kituo cha hali ya hewa cha mini na Attiny85: Mpitishaji
Kituo cha hali ya hewa cha mini na Attiny85: Mpitishaji
Kituo cha hali ya hewa cha mini na Attiny85: Mpitishaji
Kituo cha hali ya hewa cha mini na Attiny85: Mpitishaji
Kituo cha hali ya hewa cha mini na Attiny85: Mpitishaji
Kituo cha hali ya hewa cha mini na Attiny85: Mpitishaji
Kituo cha hali ya hewa cha mini na Attiny85: Mpitishaji

Mtumaji ni usanidi wa kimsingi wa Attiny85 na kontena la kuvuta kwenye laini ya kuweka upya. Moduli ya kusambaza imeambatanishwa na pini ya dijiti '0' na pini ya data ya DHT11 inaambatisha kwa pini ya dijiti 4. Unganisha waya wa cm 17.2 kama antena (kwa antena bora zaidi angalia hatua ya 5). Programu ni kama ifuatavyo:

// itafanya kazi kwenye Attiny // RF433 = D0 pin 5

// DHT11 = pini ya D4 3 // maktaba # ikiwa ni pamoja na // Kutoka Rob Tillaart # pamoja na dht DHT11; #fafanua DHT11PIN 4 #fafanua TX_PIN 0 // pini ambapo mtumaji wako ameunganishwa // vigeu vinaelea h = 0; kuelea t = 0; kusambaza_t = 0; kusambaza_h = 0; kusambaza_data = 0; kuanzisha batili () {pinMode (1, INPUT); mtu.setupTransmit (TX_PIN, MAN_1200); } kitanzi batili () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. unyevu; t = DHT11.joto; // Najua, ninatumia anuwai tatu kamili hapa // ambapo ninaweza kutumia 1 // lakini hiyo ni hivyo tu ni rahisi kufuata transmit_h = 100 * (int) h; kusambaza_t = (int) t; sambaza_data = sambaza_h + sambaza_t; kuhamisha mtu (kusambaza_data); kuchelewesha (500); }

Programu hutumia nambari ya Manchester kutuma data. Inasoma DHT11 na kuhifadhi joto na unyevu katika kuelea 2 tofauti. Kama nambari ya Manchester haitumii kuelea, lakini nambari kamili, nina chaguzi kadhaa: 1- gawanya kuelea katika nambari mbili kila mmoja na tuma hizo 2- tuma kila kuelea kama nambari3- tuma kuelea mbili kama nambari moja Na chaguo 1 ninahitaji kuchanganya nambari ndani ya kuelea tena kwenye mpokeaji na lazima nigundue ni nambari gani ni nini, na kufanya nambari iwe na upepo mrefuKwa chaguo la 2 bado ninahitaji kutambua ni nambari ipi ya unyevu na ambayo ni ya joto. Siwezi kwenda kwa mlolongo peke yake ikiwa nambari moja itapotea kwa usafirishaji, kwa hivyo ningehitaji kutuma kitambulisho kilichoambatanishwa na nambari. Kwa chaguo la 3, naweza kutuma nambari moja tu. Kwa wazi hii inafanya usomaji kuwa chini kidogo - ndani ya digrii 1- na mtu hawezi kutuma chini ya joto la sifuri, lakini ni nambari rahisi tu na kuna njia kuzunguka hiyo. Kwa sasa ni juu ya kanuni. Kwa hivyo ninachofanya ni kugeuza kuelea kuwa nambari kamili na ninazidisha unyevu na 100. Kisha ninaongeza joto kwa unyevu ulioongezeka. Kwa sababu ukweli kwamba unyevu hautakuwa 100% nambari nitapata ni 9900. Kwa kuzingatia ukweli kwamba joto pia halitakuwa juu ya digrii 100, idadi kubwa itakuwa 99, kwa hivyo nambari kubwa zaidi nitakayotuma ni 9999 na hiyo ni rahisi kutenganishwa kwa upande wa mpokeaji. hesabu yangu ambayo ninatumia nambari 3 ni kubwa zaidi kwani inaweza kufanywa kwa urahisi na ubadilishaji 1. Nilitaka tu kufanya nambari iwe rahisi kufuata. Nambari hiyo sasa inajumuisha kama:

Ukubwa wa mchoro wa binary: 2, 836 ka (ya kiwango cha juu cha 8, 192 baiti) ili iweze kutoshea kwenye Attiny 45 au 85 TAZAMA maktaba ya dht.h ninayotumia ni ile kutoka Rob Tillaart. Maktaba hiyo pia inafaa kwa DHT22. Ninatumia toleo la 1.08. Walakini Attiny85 inaweza kuwa na shida kusoma DHT22 na matoleo ya chini ya maktaba. Imethibitishwa kwangu kuwa 1.08 na 1.14 - ingawa inafanya kazi kwenye Arduino ya kawaida- wana shida kusoma DHT22 kwenye Attiny85. Ikiwa unataka kutumia DHT22 kwenye Attiny85, tumia toleo la 1.20 la maktaba hii. Yote ha sto kufanya na muda. Toleo la maktaba 1.20 linasomeka haraka. (Asante kwa uzoefu huo wa mtumiaji Jeroen)

Hatua ya 2: Kituo cha hali ya hewa cha mini na Attiny85: Mpokeaji

Kituo cha hali ya hewa cha mini na Attiny85: Mpokeaji
Kituo cha hali ya hewa cha mini na Attiny85: Mpokeaji

Tena Attiny85 hutumiwa katika usanidi wa kimsingi na pini ya Rudisha vunjwa juu na kontena la 10 k. Moduli ya Mpokeaji imeambatanishwa na pini ya dijiti 1 (pini 6 kwenye chip). LCD imeambatanishwa na pini za dijiti 0 na mbili. Unganisha waya wa cm 17.2 kama antena. Nambari ni kama ifuatavyo:

# pamoja

# pamoja na LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #fafanua RX_PIN 1 // = pini ya mwili 6 kusanidi batili () {lcd. anza (16, 2); lcd.home (); kuanzisha. Pokea (RX_PIN, MAN_1200); Mwanadamu.anzaKupokea (); } kitanzi batili () {if (man.receiveComplete ()) {uint16_t m = man.getMessage (); Mwanadamu.anzaKupokea (); lcd.print ("Humid:"); lcd.print (m / 100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m% 100); }}

Nambari ni rahisi sana: nambari inayopitishwa inapokelewa na kuhifadhiwa kwa kutofautisha 'm'. Imegawanywa na 100 kutoa unyevu na modulo ya 100 inatoa joto. Kwa hivyo tuseme nambari iliyopokelewa ilikuwa 33253325/100 = 333325% 100 Nambari hii hukusanywa kama ka 3380 na kwa hivyo inaweza kutumika tu na attiny85, sio na 45

Hatua ya 3: Kituo cha hali ya hewa cha mini na Attiny85 / 45: Onyesho

Kituo cha hali ya hewa cha mini na Attiny85 / 45: Onyesho
Kituo cha hali ya hewa cha mini na Attiny85 / 45: Onyesho
Kituo cha hali ya hewa cha mini na Attiny85 / 45: Onyesho
Kituo cha hali ya hewa cha mini na Attiny85 / 45: Onyesho

Kwa onyesho ni bora nirejelezee yangu inayoweza kufundishwa kwenye onyesho la waya mbili. inawezekana pia, lakini basi unahitaji kutekeleza itifaki ya I2C kwenye Attiny. Itifaki ya Tinywire inaweza kufanya hivyo. Ingawa vyanzo vingine vinasema kuwa hiyo inatarajia saa ya 1 Mhz, sikuwa na shida yoyote (katika mradi mwingine) kuitumia kwenye 8MhzAnyway sikujisumbua tu hapa na nilitumia rejista ya mabadiliko.

Hatua ya 4: Kituo cha hali ya hewa cha mini na Attiny85 / 45: Uwezekano / Hitimisho

Kituo cha hali ya hewa cha mini na Attiny85 / 45: Uwezekano / Hitimisho
Kituo cha hali ya hewa cha mini na Attiny85 / 45: Uwezekano / Hitimisho
Kituo cha hali ya hewa cha mini na Attiny85 / 45: Uwezekano / Hitimisho
Kituo cha hali ya hewa cha mini na Attiny85 / 45: Uwezekano / Hitimisho
Kituo cha hali ya hewa cha mini na Attiny85 / 45: Uwezekano / Hitimisho
Kituo cha hali ya hewa cha mini na Attiny85 / 45: Uwezekano / Hitimisho

Kama nilivyosema, nilifanya hii kufundisha kuonyesha kuwa mtu anaweza kutengeneza kituo cha hali ya hewa mini na mbili attiny85's (hata na moja attiny85 + 1 attiny45). Inatuma tu unyevu na joto, kwa kutumia DHT11. Walakini, Attiny ina pini 5 za dijiti za kutumia, 6 hata na ujanja fulani. Kwa hivyo inawezekana kutuma data kutoka kwa sensorer zaidi. Katika mradi wangu- kama inavyoonekana kwenye picha kwenye ukanda na kwenye PCB ya kitaalam (OSHPark) - mimi hutuma / kupokea data kutoka kwa DHT11, kutoka LDR na kutoka kwa PIR, wote wakitumia kizuizi cha kutumia attiny85 kama mpokeaji ingawa ni uwasilishaji wa data kwa mtindo wa kupendeza. Kwa kuwa kumbukumbu ni mdogo: Maandiko kama "Joto, Unyevu, kiwango cha mwanga, kukaribia mada" yatajaza nafasi muhimu ya kumbukumbu haraka sana. Walakini, hakuna sababu ya kutumia mbili za Arduino kutuma / kupokea joto na unyevu tu. kuwa na mtumaji kwenda kulala na kuamka tu ili kutuma data kusema kila dakika 10 na kwa hivyo kuilisha kutoka kwa seli ya kifungo. usomaji wa unyevu wa mchanga pia, au ongeza anemometer, au mita ya mvua

Hatua ya 5: Kituo cha hali ya hewa ya mini: Antena

Kituo cha hali ya hewa ya mini: Antena
Kituo cha hali ya hewa ya mini: Antena

Antena ni sehemu muhimu ya usanidi wowote wa 433Mhz. Nimejaribu na antena ya kawaida ya 17.2 cm ya 'fimbo' na nilikuwa na mapenzi mafupi na antena ya coil, Kilichoonekana kufanya kazi bora ni antenna iliyobeba coil ambayo ni rahisi kutengeneza. Ubunifu huo unatoka kwa Ben Schueler na inaonekana ilichapishwa katika jarida la 'Elektor'. PDF iliyo na maelezo ya hii "Hewa kilichopozwa kwa Antio ya MHz 433" ni rahisi kufuata. (Kiungo kilipotea, angalia hapa)

Hatua ya 6: Kuongeza BMP180

Inaongeza BMP180
Inaongeza BMP180

Unataka kuongeza sensorer ya shinikizo la kibaometri kama BMP180? angalia maelezo yangu mengine juu ya hilo.

Ilipendekeza: