Daftar Isi:

Stasiun Cuaca Pribadi Menggunakan Raspberry Pi Dengan BME280 di Jawa: 6 Langkah
Stasiun Cuaca Pribadi Menggunakan Raspberry Pi Dengan BME280 di Jawa: 6 Langkah

Video: Stasiun Cuaca Pribadi Menggunakan Raspberry Pi Dengan BME280 di Jawa: 6 Langkah

Video: Stasiun Cuaca Pribadi Menggunakan Raspberry Pi Dengan BME280 di Jawa: 6 Langkah
Video: Raspberry Pi Weather Station 2024, Juli
Anonim
Image
Image
Tagihan Peralatan Esensial
Tagihan Peralatan Esensial

Cuaca buruk selalu terlihat lebih buruk melalui jendela

Kami selalu tertarik untuk memantau cuaca lokal kami dan apa yang kami lihat di luar jendela. Kami juga menginginkan kontrol yang lebih baik atas sistem pemanas dan AC kami. Membangun Stasiun Cuaca Pribadi adalah pengalaman belajar yang luar biasa. Ketika Anda selesai membangun proyek ini, Anda akan memiliki pemahaman yang lebih baik tentang cara kerja komunikasi nirkabel, cara kerja sensor, dan seberapa kuat platform Raspberry Pi. Dengan proyek ini sebagai dasar dan pengalaman yang diperoleh, Anda akan dapat dengan mudah membangun proyek yang lebih kompleks di masa depan.

Langkah 1: Bill of Essential Equipment

Tagihan Peralatan Esensial
Tagihan Peralatan Esensial
Tagihan Peralatan Esensial
Tagihan Peralatan Esensial
Tagihan Peralatan Esensial
Tagihan Peralatan Esensial

1. Pi Raspberry

Langkah pertama adalah mendapatkan papan Raspberry Pi. Raspberry Pi adalah komputer papan tunggal bertenaga Linux. Tujuannya adalah untuk meningkatkan keterampilan pemrograman dan pemahaman perangkat keras. Itu dengan cepat diadopsi oleh penggemar dan penggemar elektronik untuk proyek-proyek inovatif.

2. Perisai I²C untuk Raspberry Pi

INPI2 (adaptor I2C) menyediakan port I²C Raspberry Pi 2/3 untuk digunakan dengan beberapa perangkat I²C. Sudah tersedia di Dcube Store

3. Sensor Kelembaban, Tekanan dan Suhu Digital, BME280

BME280 adalah sensor kelembaban, tekanan, dan suhu yang memiliki waktu respons cepat dan akurasi keseluruhan yang tinggi. Kami membeli sensor ini dari Dcube Store

4. Kabel Penghubung I²C

Kami memiliki kabel penghubung I²C yang tersedia di Dcube Store

5. Kabel USB mikro

Kabel USB mikro Catu daya adalah pilihan ideal untuk memberi daya pada Raspberry Pi.

6. Menafsirkan Akses Internet melalui EthernetCable/WiFi Adapter

Salah satu hal pertama yang ingin Anda lakukan adalah menghubungkan Raspberry Pi Anda ke Internet. Kita dapat terhubung menggunakan kabel Ethernet. Kemungkinan lain adalah Anda dapat terhubung ke jaringan nirkabel menggunakan Adaptor nirkabel USB.

7. Kabel HDMI (Kabel layar & konektivitas)

Monitor HDMI/DVI dan TV apa pun harus berfungsi sebagai tampilan untuk Pi. Tapi itu opsional. Akses jarak jauh (seperti-SSH) kemungkinan tidak dapat dikesampingkan juga. Anda juga bisa mendapatkan akses dengan perangkat lunak PUTTY.

Langkah 2: Koneksi Perangkat Keras untuk Pengaturan

Koneksi Perangkat Keras untuk Pengaturan
Koneksi Perangkat Keras untuk Pengaturan
Koneksi Perangkat Keras untuk Pengaturan
Koneksi Perangkat Keras untuk Pengaturan

Buat rangkaian sesuai skema yang ditunjukkan.

Sambil belajar, kami benar-benar menguasai dasar-dasar elektronika mengenai pengetahuan perangkat keras dan perangkat lunak. Kami ingin membuat skema elektronik sederhana untuk proyek ini. Skema elektronik seperti cetak biru untuk elektronik. Buat cetak biru dan ikuti desainnya dengan cermat. Kami telah menerapkan beberapa dasar elektronik di sini. Logika membawa Anda dari A ke B, Imajinasi akan membawa Anda ke mana-mana!

Koneksi Raspberry Pi dan I²C Shield

Pertama-tama ambil Raspberry Pi dan tempatkan I²C Shield (dengan Inward Facing I²C Port) di atasnya. Tekan Perisai dengan lembut di atas pin GPIO Pi dan kita selesai dengan langkah ini semudah pie (lihat gambar).

Koneksi Sensor dan Raspberry Pi

Ambil sensor dan Hubungkan kabel I²C dengannya. Pastikan Output I²C SELALU terhubung ke Input I²C. Hal yang sama harus diikuti untuk Raspberry Pi dengan pelindung I²C yang dipasang di atasnya pada pin GPIO. Kami memiliki Pelindung I²C dan kabel penghubung di pihak kami sebagai bantuan yang sangat besar dan keuntungan yang sangat besar karena kami hanya tersisa dengan opsi pasang dan mainkan. Tidak ada lagi masalah pin dan kabel dan karenanya, kebingungan hilang. Bayangkan saja diri Anda berada di jaringan kabel dan masuk ke dalamnya. Sebuah kelegaan dari itu. Ini membuat segalanya tidak rumit.

Catatan: Kabel coklat harus selalu mengikuti koneksi Ground (GND) antara output dari satu perangkat dan input dari perangkat lain

Konektivitas Internet adalah Kebutuhan

Anda punya pilihan di sini sebenarnya. Anda dapat menghubungkan Raspberry Pi dengan kabel LAN atau Adaptor USB Nano nirkabel untuk Konektivitas WIFI. Either way, manifes adalah untuk terhubung ke internet yang dicapai.

Pemberdayaan Sirkuit

Colokkan kabel Micro USB ke colokan listrik Raspberry Pi. Pukulan dan voila! Semuanya baik untuk pergi dan kami akan segera mulai.

Koneksi ke Tampilan

Kita dapat menghubungkan kabel HDMI ke monitor atau TV. Kita dapat mengakses Raspberry Pi tanpa menghubungkannya ke monitor menggunakan -SSH(Akses baris perintah Pi dari komputer lain). Anda juga dapat menggunakan perangkat lunak PUTTY untuk itu. Opsi ini untuk pengguna tingkat lanjut jadi kami tidak akan membahasnya secara detail di sini.

Saya pernah mendengar akan ada resesi, saya memutuskan untuk tidak berpartisipasi

Langkah 3: Pemrograman Raspberry Pi di Java

Pemrograman Raspberry Pi di Java
Pemrograman Raspberry Pi di Java

Kode Java untuk Sensor Raspberry Pi dan BME280. Ini tersedia di repositori Github kami.

Sebelum melanjutkan ke kode, pastikan Anda membaca instruksi yang diberikan dalam file Readme dan Atur Raspberry Pi Anda sesuai dengan itu. Hanya perlu beberapa saat untuk melakukannya. Stasiun cuaca pribadi adalah seperangkat instrumen pengukur cuaca yang dioperasikan oleh individu, klub, asosiasi, atau bahkan bisnis pribadi. Stasiun cuaca pribadi dapat dioperasikan semata-mata untuk kesenangan dan pendidikan pemiliknya, tetapi banyak operator stasiun cuaca pribadi juga berbagi data mereka dengan orang lain, baik dengan mengumpulkan data secara manual dan mendistribusikannya, atau melalui penggunaan internet atau radio amatir.

Kodenya dalam bentuk paling sederhana yang dapat Anda bayangkan dan Anda seharusnya tidak memiliki masalah dengan itu tetapi tanyakan apakah Anda memilikinya. Bahkan jika Anda tahu seribu hal, tetap tanyakan pada seseorang yang tahu.

Anda dapat menyalin kode java yang berfungsi untuk sensor ini dari sini juga.

// Didistribusikan dengan lisensi kehendak bebas.// Gunakan sesuka Anda, untung atau gratis, asalkan sesuai dengan lisensi karya terkait. // BME280 // Kode ini dirancang untuk bekerja dengan Modul Mini BME280_I2CS I2C yang tersedia dari ControlEverything.com. //

impor com.pi4j.io.i2c. I2CBus;

impor com.pi4j.io.i2c. I2CDevice; impor com.pi4j.io.i2c. I2CFfactory; impor java.io. IOException;

kelas publik BME280

{ public static void main(String args) throws Exception { // Buat I2C bus I2CBus bus = I2CFfactory.getInstance(I2CBus. BUS_1); // Dapatkan perangkat I2C, alamat I2C BME280 adalah 0x76(108) Perangkat I2CDevice = bus.getDevice(0x76); // Membaca 24 byte data dari alamat 0x88(136) byte b1 = byte baru[24]; device.read(0x88, b1, 0, 24); // Konversi data // koefisien suhu int dig_T1 = (b1[0] & 0xFF) + ((b1[1] & 0xFF) * 256); int dig_T2 = (b1[2] & 0xFF) + ((b1[3] & 0xFF) * 256); if(dig_T2 > 32767) { dig_T2 -= 65536; } int dig_T3 = (b1[4] & 0xFF) + ((b1[5] & 0xFF) * 256); if(dig_T3 > 32767) { dig_T3 -= 65536; } // koefisien tekanan int dig_P1 = (b1[6] & 0xFF) + ((b1[7] & 0xFF) * 256); int dig_P2 = (b1[8] & 0xFF) + ((b1[9] & 0xFF) * 256); if(dig_P2 > 32767) { dig_P2 -= 65536; } int dig_P3 = (b1[10] & 0xFF) + ((b1[11] & 0xFF) * 256); if(dig_P3 > 32767) { dig_P3 -= 65536; } int dig_P4 = (b1[12] & 0xFF) + ((b1[13] & 0xFF) * 256); if(dig_P4 > 32767) { dig_P4 -= 65536; } int dig_P5 = (b1[14] & 0xFF) + ((b1[15] & 0xFF) * 256); if(dig_P5 > 32767) { dig_P5 -= 65536; } int dig_P6 = (b1[16] & 0xFF) + ((b1[17] & 0xFF) * 256); if(dig_P6 > 32767) { dig_P6 -= 65536; } int dig_P7 = (b1[18] & 0xFF) + ((b1[19] & 0xFF) * 256); if(dig_P7 > 32767) { dig_P7 -= 65536; } int dig_P8 = (b1[20] & 0xFF) + ((b1[21] & 0xFF) * 256); if(dig_P8 > 32767) { dig_P8 -= 65536; } int dig_P9 = (b1[22] & 0xFF) + ((b1[23] & 0xFF) * 256); if(dig_P9 > 32767) { dig_P9 -= 65536; } // Membaca 1 byte data dari alamat 0xA1(161) int dig_H1 = ((byte)device.read(0xA1) & 0xFF); // Membaca 7 byte data dari alamat 0xE1(225) device.read(0xE1, b1, 0, 7); // Konversi data // koefisien kelembaban int dig_H2 = (b1[0] & 0xFF) + (b1[1] * 256); if(dig_H2 > 32767) { dig_H2 -= 65536; } int dig_H3 = b1[2] & 0xFF; int dig_H4 = ((b1[3] & 0xFF) * 16) + (b1[4] & 0xF); if(dig_H4 > 32767) { dig_H4 -= 65536; } int dig_H5 = ((b1[4] & 0xFF) / 16) + ((b1[5] & 0xFF) * 16); if(dig_H5 > 32767) { dig_H5 -= 65536; } int dig_H6 = b1[6] & 0xFF; if(dig_H6 > 127) { dig_H6 -= 256; } // Pilih register kelembaban kontrol // Kelembaban di atas laju pengambilan sampel = 1 device.write(0xF2, (byte)0x01); // Pilih register pengukuran kontrol // Mode normal, suhu dan tekanan di atas laju pengambilan sampel = 1 device.write(0xF4, (byte)0x27); // Pilih register konfigurasi // Waktu siaga = 1000 ms device.write(0xF5, (byte)0xA0); // Membaca 8 byte data dari alamat 0xF7(247) // tekanan msb1, tekanan msb, tekanan lsb, suhu msb1, suhu msb, suhu lsb, kelembaban lsb, kelembaban msb byte data = byte baru[8]; device.read(0xF7, data, 0, 8); // Konversikan data tekanan dan suhu ke panjang 19-bit adc_p = (((panjang)(data[0] & 0xFF) * 65536) + ((panjang)(data[1] & 0xFF) * 256) + (panjang) (data[2] & 0xF0)) / 16; panjang adc_t = (((panjang)(data[3] & 0xFF) * 65536) + ((panjang)(data[4] & 0xFF) * 256) + (panjang)(data[5] & 0xF0)) / 16; // Konversi data kelembaban long adc_h = ((panjang)(data[6] & 0xFF) * 256 + (panjang)(data[7] & 0xFF)); // Perhitungan offset suhu double var1 = (((double)adc_t) / 16384.0 - ((double)dig_T1) / 1024.0) * ((double)dig_T2); double var2 = ((((double)adc_t) / 131072.0 - ((double)dig_T1) / 8192.0) * (((double)adc_t)/131072.0 - ((double)dig_T1)/8192.0)) * ((double)dig_T3); double t_fine = (panjang)(var1 + var2); cTemp ganda = (var1 + var2) / 5120.0; fTemp ganda = cTemp * 1,8 + 32; // Perhitungan offset tekanan var1 = ((double)t_fine / 2.0) - 640000.0; var2 = var1 * var1 * ((ganda)dig_P6) / 32768.0; var2 = var2 + var1 * ((ganda)dig_P5) * 2.0; var2 = (var2 / 4.0) + (((ganda)dig_P4) * 65536.0); var1 = (((ganda) dig_P3) * var1 * var1 / 524288.0 + ((ganda) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((ganda)dig_P1); ganda p = 1048576.0 - (ganda)adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((ganda) dig_P9) * p * p / 2147483648.0; var2 = p * ((ganda) dig_P8) / 32768.0; tekanan ganda = (p + (var1 + var2 + ((double)dig_P7)) / 16.0) / 100; // Perhitungan offset kelembaban double var_H = (((double)t_fine) - 76800,0); var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))); kelembaban ganda = var_H * (1.0 - dig_H1 * var_H / 524288.0); if(kelembaban > 100.0) { kelembaban = 100.0; }else if(kelembaban < 0.0) { kelembaban = 0.0; } // Keluarkan data ke layar System.out.printf("Suhu dalam Celcius: %.2f C %n", cTemp); System.out.printf("Suhu dalam Fahrenheit: %.2f F %n", fTemp); System.out.printf("Tekanan: %.2f hPa %n", tekanan); System.out.printf("Kelembaban Relatif: %.2f %% RH %n", kelembapan); } }

Langkah 4: Kepraktisan Kode

Kepraktisan Kode
Kepraktisan Kode

Sekarang, unduh (atau git pull) kode dan buka di Raspberry Pi.

Jalankan perintah untuk Kompilasi dan Unggah kode di terminal dan lihat hasilnya di Monitor. Setelah beberapa saat, itu akan menyaring semua parameter. Memastikan bahwa Anda memiliki transisi kode yang mulus dan hasil yang tenang, Anda memikirkan lebih banyak ide untuk membuat amandemen lebih lanjut (Setiap Proyek dimulai dengan sebuah Cerita).

Langkah 5: Pemanfaatan di Dunia Konstruktif

BME280 mencapai kinerja tinggi di semua aplikasi yang membutuhkan pengukuran kelembaban dan tekanan. Aplikasi yang muncul ini adalah Kesadaran Konteks, mis. Deteksi Kulit, Deteksi Perubahan Ruangan, Pemantauan Kebugaran / Kesejahteraan, Peringatan Mengenai Kekeringan atau Suhu Tinggi, Pengukuran Volume dan Aliran Udara, Kontrol Otomatisasi Rumah, Kontrol Pemanasan, Ventilasi, Pendingin Udara (HVAC), Internet of Things (IoT), Penyempurnaan GPS (mis. Peningkatan Waktu ke Perbaikan Pertama, Perhitungan Mati, Deteksi Kemiringan), Navigasi Dalam Ruangan (Perubahan Deteksi Lantai, Deteksi Lift), Navigasi Luar Ruangan, Aplikasi Kenyamanan & Olahraga, Prakiraan Cuaca Dan Indikasi Kecepatan Vertikal (Naik/Turun Kecepatan).

Langkah 6: Kesimpulan

Seperti yang Anda lihat, proyek ini adalah demonstrasi hebat tentang kemampuan perangkat keras dan perangkat lunak. Dalam waktu singkat, seseorang dapat membangun proyek yang begitu mengesankan! Tentu saja, ini baru permulaan. Membuat Stasiun Cuaca Pribadi yang lebih canggih seperti Stasiun Cuaca Pribadi Bandara Otomatis dapat melibatkan lebih banyak sensor seperti Anemometer (kecepatan angin), Transmissometer (visibilitas), Pyranometer (radiasi matahari), dll. Kami memiliki tutorial video di Youtube yang memiliki fungsi dasar dari Sensor I²C dengan Rasp Pi. Sungguh menakjubkan melihat hasil dan kerja komunikasi I²C. Periksa juga. Selamat membangun dan belajar! Beri tahu kami pendapat Anda tentang instruksi ini. Kami akan senang untuk melakukan beberapa perbaikan jika perlu.

Direkomendasikan: