Isi kandungan:

Stesen Cuaca Mini Dengan Attiny85: 6 Langkah (dengan Gambar)
Stesen Cuaca Mini Dengan Attiny85: 6 Langkah (dengan Gambar)

Video: Stesen Cuaca Mini Dengan Attiny85: 6 Langkah (dengan Gambar)

Video: Stesen Cuaca Mini Dengan Attiny85: 6 Langkah (dengan Gambar)
Video: [Катастрофа] Кемпинг в маленькой машине под проливным дождем на аварийной плотине. 2024, November
Anonim
Stesen Cuaca Mini Dengan Attiny85
Stesen Cuaca Mini Dengan Attiny85
Stesen Cuaca Mini Dengan Attiny85
Stesen Cuaca Mini Dengan Attiny85
Stesen Cuaca Mini Dengan Attiny85
Stesen Cuaca Mini Dengan Attiny85

Dalam Indigod0g yang diarahkan baru-baru ini, menerangkan stesen cuaca mini yang berfungsi dengan baik, menggunakan dua Arduino. Mungkin tidak semua orang ingin mengorbankan 2 Arduino untuk mendapatkan pembacaan kelembapan dan suhu dan saya memberi komen bahawa mungkin melakukan fungsi yang serupa dengan dua Attiny85's. Saya rasa senang bercakap, jadi saya lebih baik meletakkan wang saya di tempat mulut saya.

Sebenarnya, jika saya menggabungkan dua arahan awal saya menulis:

Antara muka LCD 2-Wire untuk Arduino atau Attiny dan Menerima dan menghantar data antara Attiny85 (Arduino IDE 1.06) maka sebahagian besar kerja sudah selesai. Hanya perlu sedikit menyesuaikan perisian.

Saya memilih penyelesaian dua wayar lcd dengan shift shift, bukan LCD I2C kerana di Attiny register shift lebih mudah dilaksanakan daripada bas I2C. Namun… jika anda misalnya ingin membaca sensor tekanan BMP180 atau BMP085, anda tetap memerlukan I2C untuk itu supaya anda juga boleh menggunakan LCD I2C. TinyWireM adalah perpustakaan yang baik untuk I2C di Attiny (tetapi memerlukan ruang tambahan).

BOM Pemancar: Modul pemancar perintang DH311 Attiny85 10 k 433MHz

Penerima Attiny85 10k perintang modul penerima 433 MHz

Paparan 74LS164 shift register 1N4148 diod 2x1k perintang 1x1k pemboleh ubah perintang paparan LCD 2x16

Langkah 1: Stesen Cuaca Mini Dengan Attiny85: Pemancar

Stesen Cuaca Mini Dengan Attiny85: Pemancar
Stesen Cuaca Mini Dengan Attiny85: Pemancar
Stesen Cuaca Mini Dengan Attiny85: Pemancar
Stesen Cuaca Mini Dengan Attiny85: Pemancar
Stesen Cuaca Mini Dengan Attiny85: Pemancar
Stesen Cuaca Mini Dengan Attiny85: Pemancar
Stesen Cuaca Mini Dengan Attiny85: Pemancar
Stesen Cuaca Mini Dengan Attiny85: Pemancar

Pemancar adalah konfigurasi yang sangat asas dari Attiny85 dengan resistor penarik pada garis semula. Modul pemancar dipasang pada pin digital '0' dan pin data DHT11 melekat pada pin digital 4. Pasang wayar 17.2 cm sebagai antena (untuk antena yang jauh lebih baik lihat langkah 5). Perisiannya adalah seperti berikut:

// akan berfungsi pada Attiny // RF433 = D0 pin 5

// DHT11 = D4 pin 3 // perpustakaan #include // Dari Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin tempat pemancar anda disambungkan // pemboleh ubah mengapung h = 0; apungan t = 0; int transmit_t = 0; int transmit_h = 0; int transmit_data = 0; batal persediaan () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } gelung void () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. kelembapan; t = DHT11. suhu; // Saya tahu, saya menggunakan 3 pemboleh ubah integer di sini // di mana saya boleh menggunakan 1 // tetapi itu hanya supaya lebih mudah untuk mengikuti transmit_h = 100 * (int) h; transmit_t = (int) t; transmit_data = transmit_h + transmit_t; man.transmit (transmit_data); kelewatan (500); }

Perisian menggunakan kod Manchester untuk menghantar data. Ia membaca DHT11 dan menyimpan suhu dan kelembapan dalam 2 pelampung berasingan. Oleh kerana kod Manchester tidak menghantar apungan, tetapi bilangan bulat, saya mempunyai beberapa pilihan: 1- bahagikan apungan menjadi dua bilangan bulat masing-masing dan hantarkan 2- hantar setiap pelampung sebagai bilangan bulat3- hantarkan dua apungan sebagai satu bilangan bulat Dengan pilihan 1 Saya perlu menggabungkan bilangan bulat menjadi terapung lagi di penerima dan saya harus mengenal pasti bilangan bulat mana, menjadikan kodnya berliku panjang Dengan pilihan 2 Saya masih perlu mengenal pasti bilangan bulat yang mana untuk kelembapan dan yang mana untuk suhu. Saya tidak dapat mengikut urutan sahaja sekiranya satu bilangan bulat hilang dalam penghantaran, jadi saya perlu menghantar pengecam yang dilekatkan pada bilangan bulat. Dengan pilihan 3, saya dapat menghantar hanya satu bilangan bulat. Jelas sekali ini menjadikan bacaannya sedikit kurang tepat - dalam 1 darjah- dan seseorang tidak dapat menghantar di bawah suhu sifar, tetapi itu hanya kod sederhana dan ada cara untuk mengatasi itu. Buat masa ini, ini hanyalah mengenai prinsipnya. Oleh itu, apa yang saya lakukan ialah saya menukar pelampung menjadi bilangan bulat dan saya mengalikan kelembapan dengan 100. Kemudian saya menambah suhu ke kelembapan berlipat ganda. Memandangkan hakikat bahawa kelembapan tidak akan pernah 100% nombor maksimum yang akan saya dapat ialah 9900. Memandangkan kenyataan bahawa suhu juga tidak akan melebihi 100 darjah, nombor maksimum akan menjadi 99, oleh itu nombor tertinggi yang akan saya hantar adalah 9999 dan mudah dipisahkan di bahagian penerima. pengiraan saya di mana saya menggunakan 3 bilangan bulat adalah berlebihan kerana ia dapat dilakukan dengan mudah dengan 1 pemboleh ubah. Saya hanya mahu membuat kod lebih mudah diikuti. Kod sekarang disusun sebagai:

Saiz lakaran binari: 2, 836 bait (maksimum 8, 192 bait) sehingga sesuai dengan Attiny 45 atau 85BUKAN perpustakaan dht.h yang saya gunakan adalah satu dari Rob Tillaart. Perpustakaan itu juga sesuai untuk DHT22. Saya menggunakan versi 1.08. Walau bagaimanapun, Attiny85 mungkin menghadapi masalah membaca DHT22 dengan versi perpustakaan yang lebih rendah. Telah disahkan kepada saya bahawa 1.08 dan 1.14 - walaupun bekerja di Arduino biasa - menghadapi masalah membaca DHT22 di Attiny85. Sekiranya anda ingin menggunakan DHT22 di Attiny85, gunakan versi 1.20 perpustakaan ini. Ini semua berkaitan dengan masa. Versi 1.20 perpustakaan mempunyai bacaan yang lebih pantas. (Terima kasih atas pengalaman pengguna Jeroen)

Langkah 2: Stesen Cuaca Mini Dengan Attiny85: Penerima

Stesen Cuaca Mini Dengan Attiny85: Penerima
Stesen Cuaca Mini Dengan Attiny85: Penerima

Sekali lagi Attiny85 digunakan dalam konfigurasi asas dengan pin Reset ditarik tinggi dengan perintang 10 k. Modul Penerima dilampirkan pada pin digital 1 (pin 6 pada cip). LCD dipasang pada pin digital 0 dan dua. Pasang wayar 17.2 cm sebagai antena. Kodnya adalah seperti berikut:

#sertakan

#masuk LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = penyediaan kekosongan pin fizikal 6 () {lcd.begin (16, 2); lcd.home (); man.setupReceive (RX_PIN, MAN_1200); lelaki.beginReceive (); } gelung void () {if (man.receiveComplete ()) {uint16_t m = man.getMessage (); lelaki.beginReceive (); lcd.print ("Humid:"); lcd.print (m / 100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m% 100); }}

Kodnya agak mudah: bilangan bulat yang dihantar diterima dan disimpan dalam pemboleh ubah 'm'. Ia dibahagi dengan 100 untuk memberikan kelembapan dan modulo 100 memberikan suhu. Oleh itu, bilangan bulat yang diterima adalah 33253325/100 = 333325% 100 = 25Kod ini disusun sebagai 3380 byte dan oleh itu hanya dapat digunakan dengan attiny85, bukan dengan 45

Langkah 3: Stesen Cuaca Mini Dengan Attiny85 / 45: Paparan

Stesen Cuaca Mini Dengan Attiny85 / 45: Paparan
Stesen Cuaca Mini Dengan Attiny85 / 45: Paparan
Stesen Cuaca Mini Dengan Attiny85 / 45: Paparan
Stesen Cuaca Mini Dengan Attiny85 / 45: Paparan

Untuk paparan lebih baik saya merujuk arahan saya pada paparan dua wayar. Ringkasnya, paparan 16x2 biasa menggunakan shiftregister sehingga dapat beroperasi dengan dua pin digital. Tentu saja jika anda lebih suka menggunakan paparan siap I2C, iaitu mungkin juga, tetapi kemudian anda perlu melaksanakan protokol I2C di Attiny. Protokol Tinywire boleh melakukannya. Walaupun beberapa sumber mengatakan bahawa itu menjangkakan jam 1 Mhz, saya tidak menghadapi masalah (dalam projek lain) untuk menggunakannya pada 8Mhz. Bagaimanapun saya tidak mengganggu di sini dan menggunakan shift shift.

Langkah 4: Stesen Cuaca Mini Dengan Attiny85 / 45: Kemungkinan / Kesimpulan

Stesen Cuaca Mini Dengan Attiny85 / 45: Kemungkinan / Kesimpulan
Stesen Cuaca Mini Dengan Attiny85 / 45: Kemungkinan / Kesimpulan
Stesen Cuaca Mini Dengan Attiny85 / 45: Kemungkinan / Kesimpulan
Stesen Cuaca Mini Dengan Attiny85 / 45: Kemungkinan / Kesimpulan
Stesen Cuaca Mini Dengan Attiny85 / 45: Kemungkinan / Kesimpulan
Stesen Cuaca Mini Dengan Attiny85 / 45: Kemungkinan / Kesimpulan

Seperti yang saya katakan, saya membuat ini untuk menunjukkan bahawa seseorang dapat membuat stesen cuaca mini dengan dua attiny85's (walaupun dengan satu attiny85 + 1 attiny45). Ia hanya menghantar kelembapan dan suhu, menggunakan DHT11. Walau bagaimanapun, Attiny mempunyai 5 pin digital untuk digunakan, 6 walaupun dengan beberapa tipu muslihat. Oleh itu, adalah mungkin untuk menghantar data dari lebih banyak sensor. Dalam projek saya - seperti yang dilihat dalam gambar di papan tulis dan pada PCB profesional (OSHPark) - Saya menghantar / menerima data dari DHT11, dari LDR dan dari PIR, semuanya menggunakan Dua attiny85's Batasan dalam menggunakan attiny85 sebagai penerima adalah penyampaian data dalam gaya yang mencolok. Memori terhad: Teks seperti 'Suhu, Kelembapan, tahap cahaya, subjek mendekati' akan mengisi ruang memori yang berharga dengan cepat. Walau bagaimanapun, tidak ada alasan untuk menggunakan dua Arduino hanya untuk menghantar / menerima suhu dan kelembapan. Selain itu, mungkin agar si pemancar tidur dan hanya bangun untuk menghantar data mengatakan setiap 10 minit dan dengan itu memberi makan dari sel butang. Jelas, bukan sahaja data suhu atau kelembapan dapat dihantar tetapi seseorang dapat memiliki pelbagai pemancar kecil yang mengirim bacaan kelembapan tanah juga, atau menambahkan anemometer, atau meter hujan

Langkah 5: Stesen Cuaca Mini: Antena

Stesen Cuaca Mini: Antena
Stesen Cuaca Mini: Antena

Antena adalah bahagian penting dari penyediaan 433Mhz. Saya telah bereksperimen dengan antena 'rod' standard 17.2 cm dan menggoda pendek dengan antena gegelung. Apa yang paling sesuai ialah antena gegelung yang mudah dibuat. Reka bentuknya adalah dari Ben Schueler dan nampaknya diterbitkan di majalah 'Elektor'. PDF dengan keterangan mengenai 'Antena 433 MHz yang didinginkan udara' ini mudah diikuti. (Pautan hilang, periksa di sini)

Langkah 6: Menambah BMP180

Menambah BMP180
Menambah BMP180

Ingin menambah sensor tekanan barometrik seperti BMP180? periksa arahan saya yang lain.

Disyorkan: