Isi kandungan:
- Langkah 1: Stesen Cuaca Mini Dengan Attiny85: Pemancar
- Langkah 2: Stesen Cuaca Mini Dengan Attiny85: Penerima
- Langkah 3: Stesen Cuaca Mini Dengan Attiny85 / 45: Paparan
- Langkah 4: Stesen Cuaca Mini Dengan Attiny85 / 45: Kemungkinan / Kesimpulan
- Langkah 5: Stesen Cuaca Mini: Antena
- Langkah 6: Menambah BMP180
Video: Stesen Cuaca Mini Dengan Attiny85: 6 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
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
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
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
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
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
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
Ingin menambah sensor tekanan barometrik seperti BMP180? periksa arahan saya yang lain.
Disyorkan:
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: 8 Langkah (dengan Gambar)
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: Setelah 1 tahun beroperasi di 2 lokasi yang berbeza, saya berkongsi rancangan projek stesen cuaca berkuasa solar saya dan menerangkan bagaimana ia berkembang menjadi sistem yang benar-benar dapat bertahan dalam jangka masa yang lama tempoh dari tenaga suria. Sekiranya anda mengikuti
Stesen Cuaca DIY & Stesen Sensor WiFi: 7 Langkah (dengan Gambar)
DIY Weather Station & WiFi Sensor Station: Dalam projek ini saya akan menunjukkan kepada anda cara membuat stesen cuaca bersama dengan stesen sensor WiFi. Stesen sensor mengukur data suhu dan kelembapan tempatan dan menghantarnya, melalui WiFi, ke stesen cuaca. Stesyen cuaca kemudian memaparkan
Lengkapkan Stesen Cuaca Raspberry Pi DIY Dengan Perisian: 7 Langkah (dengan Gambar)
Lengkapkan Stesen Cuaca Raspberry Pi DIY Dengan Perisian: Kembali pada akhir Februari saya melihat siaran ini di laman Raspberry Pi. http://www.raspberrypi.org/school-weather-station-..Mereka telah membuat Stesen Cuaca Raspberry Pi untuk Sekolah. Saya benar-benar mahukan satu! Tetapi pada masa itu (dan saya percaya masih seperti yang ditulis
Cuaca-stesen Dengan Arduino, BME280 & Paparan untuk Melihat Trend Dalam 1-2 Hari Terakhir: 3 Langkah (dengan Gambar)
Cuaca-stesen Dengan Arduino, BME280 & Paparan untuk Melihat Trend Dalam 1-2 Hari Terakhir: Halo! Di sini, stesen cuaca yang diperintahkan telah diperkenalkan. Mereka menunjukkan tekanan udara, suhu dan kelembapan semasa. Apa yang mereka kekurangan setakat ini adalah persembahan kursus dalam 1-2 hari terakhir. Proses ini akan mempunyai
Stesen Cuaca Acurite 5 dalam 1 Menggunakan Pi Raspberry dan Weewx (Stesen Cuaca lain Sesuai): 5 Langkah (dengan Gambar)
Stesen Cuaca Acurite 5 in 1 Menggunakan Raspberry Pi dan Weewx (Stesen Cuaca yang Lain Sesuai): Semasa saya membeli stesen cuaca Acurite 5 in 1, saya ingin dapat memeriksa cuaca di rumah saya semasa saya tiada. Semasa saya pulang dan menyiapkannya, saya menyedari bahawa saya mesti mempunyai paparan yang disambungkan ke komputer atau membeli hab pintar mereka