Talaan ng mga Nilalaman:

Mini Weather Station Na May Attiny85: 6 Mga Hakbang (na may Mga Larawan)
Mini Weather Station Na May Attiny85: 6 Mga Hakbang (na may Mga Larawan)

Video: Mini Weather Station Na May Attiny85: 6 Mga Hakbang (na may Mga Larawan)

Video: Mini Weather Station Na May Attiny85: 6 Mga Hakbang (na may Mga Larawan)
Video: Как вернуть недостающие устройства из диспетчера устройств в Windows 10/8/7 2024, Nobyembre
Anonim
Mini Weather Station Na May Attiny85
Mini Weather Station Na May Attiny85
Mini Weather Station Na May Attiny85
Mini Weather Station Na May Attiny85
Mini Weather Station Na May Attiny85
Mini Weather Station Na May Attiny85

Sa isang kasalukuyang itinuro na Indigod0g ay inilarawan ang isang mini istasyon ng panahon na gumagana nang maayos, gamit ang dalawang Arduino. Marahil hindi lahat ay nais na isakripisyo ang 2 Arduinos upang makakuha ng mga pagbabasa ng kahalumigmigan at temperatura at nagkomento ako na dapat posible na gumawa ng isang katulad na pagpapaandar sa dalawang Attiny85's. Madali yata ang pag-uusap, kaya mas mabuti kong ilagay ang aking pera sa kung saan ang aking bibig.

Sa katunayan, kung pagsamahin ko ang dalawang naunang mga instruktor na isinulat ko:

2-Wire LCD interface para sa Arduino o Attiny andReceiving at pagpapadala ng data sa pagitan ng Attiny85 (Arduino IDE 1.06) pagkatapos ang karamihan sa trabaho ay tapos na. Kailangan lamang iakma ang software ng kaunti.

Pinili ko para sa isang dalawang wire lcd solution na may shift register, sa halip na isang I2C LCD dahil sa Attiny ay mas madaling ipatupad ang shift register kaysa sa I2C bus. Gayunpaman … kung nais mong halimbawa basahin ang isang sensor ng presyon ng BMP180 o BMP085, kailangan mo rin ng I2C para sa gayon ay maaari mo ring gamitin ang isang I2C LCD. Ang TinyWireM ay isang magandang silid-aklatan para sa I2C sa isang Attiny (ngunit nangangailangan ito ng labis na puwang).

BOM Ang transmiter: DHT11 Attiny85 10 k resistor 433MHz transmitter module

Ang tatanggap Attiny85 10k risistor 433 MHz module ng tatanggap

Ang display 74LS164 shift register 1N4148 diode 2x1k resistor 1x1k variable resistor isang LCD display 2x16

Hakbang 1: Mini Weather Station Na May Attiny85: ang Transmitter

Mini Weather Station Sa Attiny85: ang Transmitter
Mini Weather Station Sa Attiny85: ang Transmitter
Mini Weather Station Sa Attiny85: ang Transmitter
Mini Weather Station Sa Attiny85: ang Transmitter
Mini Weather Station Sa Attiny85: ang Transmitter
Mini Weather Station Sa Attiny85: ang Transmitter
Mini Weather Station Sa Attiny85: ang Transmitter
Mini Weather Station Sa Attiny85: ang Transmitter

Ang transmitter ay isang napaka-pangunahing pagsasaayos ng Attiny85 na may isang pull up risistor sa linya ng pag-reset. Ang isang module ng transmitter ay naka-attach sa digital pin '0' at ang data data DHT11 ay nakakabit sa digital pin 4. Mag-attach ng isang wire na 17.2 cm bilang antena (para sa isang mas mahusay na antena tingnan ang hakbang 5). Ang software ay ang mga sumusunod:

// gagana sa Attiny // RF433 = D0 pin 5

// DHT11 = D4 pin 3 // libraries #include // From Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin kung saan nakakonekta ang iyong transmitter // variable na lumutang h = 0; lumutang 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.humidity; t = DHT11.temperature; // Alam ko, gumagamit ako ng 3 variable ng integer dito // kung saan maaaring gumagamit ako ng 1 // ngunit para lang mas madaling sundin ang transmit_h = 100 * (int) h; transmit_t = (int) t; transmit_data = transmit_h + transmit_t; man.transmit (transmit_data); pagkaantala (500); }

Gumagamit ang software ng Manchester code upang maipadala ang data. Binabasa nito ang DHT11 at iniimbak ang temperatura at halumigmig sa 2 magkakahiwalay na float. Tulad ng code ng Manchester na hindi nagpapadala ng mga float, ngunit isang integer, mayroon akong maraming mga pagpipilian: 1- hatiin ang mga float sa dalawang integer bawat isa at ipadala ang mga iyon- ipadala ang bawat float bilang isang integer3- ipadala ang dalawang float bilang isang integer Sa pagpipiliang 1 kailangan kong pagsamahin ang mga integer sa floats muli sa tatanggap at kailangan kong kilalanin kung alin ang integer kung ano, ginagawa ang code na mahangin sa pamamagitan ng pagpipiliang 2 Kailangan ko pa ring kilalanin kung alin ang integer para sa halumigmig at alin para sa temperatura. Hindi ako maaaring pumunta sa pamamagitan ng pagkakasunud-sunod nang nag-iisa kung sakaling ang isang integer ay nawala sa paghahatid, kaya kailangan kong magpadala ng isang identifier na nakakabit sa integer. Sa pagpipiliang 3, maaari akong magpadala ng isang integer lamang. Malinaw na ginagawang medyo hindi gaanong tumpak ang mga pagbasa - sa loob ng 1 degree- at ang isa ay hindi maaaring magpadala ng mas mababa sa zero temperatura, ngunit ito ay isang simpleng code lamang at may mga paraan sa paligid nito. Sa ngayon ito ay tungkol lamang sa prinsipyo. Kaya kung ano ang ginagawa ko ay ginagawa kong integer ang mga float at pinarami ko ang halumigmig na may 100. Pagkatapos ay idinagdag ko ang temperatura sa pinaraming halumigmig. Ibinigay ang katotohanan na ang halumigmig ay hindi magiging 100% ang max number na makukuha ko ay 9900. Dahil sa katotohanang ang temperatura ay hindi rin lalampas sa 100 degree, ang max na numero ay magiging 99, samakatuwid ang pinakamataas na bilang na ipapadala ko ay 9999 at madali itong paghiwalayin sa panig ng tatanggap. ang aking pagkalkula kung saan gumagamit ako ng 3 integers ay labis na labis dahil madali itong magagawa sa 1 variable. Nais kong gawing mas madaling sundin ang code. Ang code ay pinagsasama-sama bilang:

Laki ng sketch ng binary: 2, 836 bytes (ng isang maximum na 8, 192 byte) upang magkasya sa isang Attiny 45 o 85NOTE ang dht.h library na ginagamit ko ay ang mula kay Rob Tillaart. Ang aklatan na iyon ay angkop din para sa isang DHT22. Gumagamit ako ng bersyon 1.08. Gayunpaman ang Attiny85 ay maaaring magkaroon ng mga problema sa pagbabasa ng isang DHT22 na may mas mababang mga bersyon ng library. Nakumpirma sa akin na ang 1.08 at 1.14-bagaman nagtatrabaho sa isang regular na Arduino- nagkakaproblema sa pagbabasa ng isang DHT22 sa Attiny85. Kung nais mong gumamit ng isang DHT22 sa Attiny85, gamitin ang 1.20 bersyon ng library na ito. Ang lahat ng ito ay ginagawa sa tiyempo. Ang 1.20 bersyon ng library ay may isang mas mabilis na nabasa. (Salamat sa karanasan ng gumagamit na Jeroen)

Hakbang 2: Mini Weather Station Na May Attiny85: ang Receiver

Mini Weather Station Sa Attiny85: ang Tagatanggap
Mini Weather Station Sa Attiny85: ang Tagatanggap

Muli ang Attiny85 ay ginagamit sa isang pangunahing pagsasaayos na may Reset pin na nakuha na mataas na may isang 10 k risistor. Ang module ng Receiver ay nakakabit sa digital pin 1 (pin 6 sa chip). Ang LCD ay naka-attach sa mga digital na pin 0 at dalawa. Maglakip ng isang kawad na 17.2 cm bilang antena. Ang code ay ang mga sumusunod:

# isama

# isama ang LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = physical pin 6 void setup () {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 ("Humid:"); lcd.print (m / 100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m% 100); }}

Ang code ay medyo simple: ang ipinadala na integer ay natanggap at nakaimbak sa variable na 'm'. Hinahati ito ng 100 upang ibigay ang halumigmig at ang modulo na 100 ay nagbibigay ng temperatura. Kaya't ipagpalagay na ang natanggap na integer ay 33253325/100 = 333325% 100 = 25 Ang code na ito ay pinagsasama bilang 3380 bytes at samakatuwid ay maaari lamang magamit sa isang attiny85, hindi sa isang 45

Hakbang 3: Mini Weather Station Na May Attiny85 / 45: ang Display

Mini Weather Station Na May Attiny85 / 45: ang Display
Mini Weather Station Na May Attiny85 / 45: ang Display
Mini Weather Station Na May Attiny85 / 45: ang Display
Mini Weather Station Na May Attiny85 / 45: ang Display

Para sa pagpapakita ito ay pinakamahusay na mag-refer ako sa aking itinuturo sa isang dalawang wire display. Sa madaling salita, ang isang karaniwang 16x2 display ay gumagamit ng isang shiftregister upang maaari itong gumana gamit ang dalawang mga digital na pin. Kasamaan kung gusto mong gumamit ng isang handa na I2C na ipakita, iyon ay posible rin, ngunit kailangan mong magpatupad ng isang I2C na protokol sa Attiny. Magagawa iyon ng Tinywire protocol. Kahit na sinabi ng ilang mga mapagkukunan na inaasahan nito ang isang 1 Mhz na orasan, wala akong anumang problema (sa ibang proyekto) na gamitin ito sa 8MhzAnyway Hindi lang ako nag-abala dito at gumamit ng isang shift register.

Hakbang 4: Mini Weather Station Na May Attiny85 / 45: Mga Posibilidad / Konklusyon

Mini Weather Station Na May Attiny85 / 45: Mga Posibilidad / Konklusyon
Mini Weather Station Na May Attiny85 / 45: Mga Posibilidad / Konklusyon
Mini Weather Station Na May Attiny85 / 45: Mga Posibilidad / Konklusyon
Mini Weather Station Na May Attiny85 / 45: Mga Posibilidad / Konklusyon
Mini Weather Station Na May Attiny85 / 45: Mga Posibilidad / Konklusyon
Mini Weather Station Na May Attiny85 / 45: Mga Posibilidad / Konklusyon

Tulad ng sinabi, ginawa ko itong itinuro upang ipakita na ang isa ay maaaring gumawa ng isang mini istasyon ng panahon na may dalawang attiny85's (kahit na may isang attiny85 + 1 attiny45). Nagpapadala lamang ito ng kahalumigmigan at temperatura, gamit ang isang DHT11. Gayunpaman, ang Attiny ay may 5 mga digital na pin upang magamit, 6 kahit na may ilang panloloko. Samakatuwid posible na magpadala ng data mula sa maraming mga sensor. Sa aking proyekto- tulad ng nakikita sa mga larawan sa stripboard at sa isang propesyonal na PCB (OSHPark) - Nagpadala / tumatanggap ako ng data mula sa isang DHT11, mula sa isang LDR at mula sa isang PIR, lahat ay gumagamit ng ang dalawang limitasyon sa paggamit ng isang attiny85 bilang tatanggap bagaman ay ang pagtatanghal ng data sa isang marangyang istilo. Bilang ang memorya ay limitado: Ang mga teksto tulad ng 'Temperatura, Humidity, antas ng ilaw, paparating na paksa' ay punan ang mahalagang puwang ng memorya nang napakabilis. Gayunpaman, walang dahilan upang magamit ang dalawang Arduino lamang upang magpadala / makatanggap ng temperatura at halumigmig. Dagdag pa, posible upang matulog ang transmitter at gisingin lamang ito upang magpadala ng data na sinasabi tuwing 10 minuto at sa gayon ay pakainin ito mula sa isang cell ng pindutan. Malinaw, hindi lamang ang data ng temperatura o kahalumigmigan ang maaaring maipadala ngunit ang isa ay maaaring magkaroon ng isang hanay ng mga maliliit na transmiter na nagpapadala pagbabasa din ng kahalumigmigan sa lupa, o magdagdag ng isang anemometer, o isang metro ng ulan

Hakbang 5: Mini Weather Station: ang Antenna

Mini Weather Station: ang Antenna
Mini Weather Station: ang Antenna

Ang antena ay isang mahalagang bahagi ng anumang na-set up na 433Mhz. Nag-eksperimento ako sa pamantayang 17.2 cm 'rod' antena at nagkaroon ng isang maikling pang-aakit ng isang coil antena, Ang tila pinakamahusay na gumagana ay isang coil load antena na madaling gawin. Ang disenyo ay mula kay Ben Schueler at tila na-publish sa magazine na 'Elektor'. Ang isang PDF na may paglalarawan ng 'Air cooled 433 MHz Antenna' na madaling sundin. (Nawala ang link, suriin dito)

Hakbang 6: Pagdaragdag ng isang BMP180

Pagdaragdag ng isang BMP180
Pagdaragdag ng isang BMP180

Nais na magdagdag ng sensor ng presyon ng barometric tulad ng BMP180? suriin ang iba kong itinuturo doon.

Inirerekumendang: