Isi kandungan:

Stesen Cuaca Peribadi Menggunakan Raspberry Pi Dengan BME280 di Jawa: 6 Langkah
Stesen Cuaca Peribadi Menggunakan Raspberry Pi Dengan BME280 di Jawa: 6 Langkah

Video: Stesen Cuaca Peribadi Menggunakan Raspberry Pi Dengan BME280 di Jawa: 6 Langkah

Video: Stesen Cuaca Peribadi Menggunakan Raspberry Pi Dengan BME280 di Jawa: 6 Langkah
Video: 🇧🇷 ДНЕВНЫЕ БОРДЕЛИ РИО // ЗАБРАЛ ЛЬВИЦУ С ПЛЯЖА ДОМОЙ 🇧🇷 БРАЗИЛИЯ РИО ДЕ ЖАНЕЙРО 2024, Julai
Anonim
Image
Image
Bil Peralatan Penting
Bil Peralatan Penting

Cuaca buruk selalu kelihatan lebih teruk melalui tingkap

Kami selalu berminat untuk memantau cuaca setempat dan apa yang kami lihat di luar jendela. Kami juga mahukan kawalan yang lebih baik terhadap sistem pemanasan dan A / C kami. Membina Stesen Cuaca Peribadi adalah pengalaman belajar yang hebat. Apabila anda selesai membina projek ini, anda akan mempunyai pemahaman yang lebih baik mengenai bagaimana komunikasi tanpa wayar berfungsi, bagaimana sensor berfungsi, dan seberapa kuat platform Raspberry Pi. Dengan projek ini sebagai asas dan pengalaman yang diperoleh, anda akan dapat dengan mudah membina projek yang lebih kompleks pada masa akan datang.

Langkah 1: Bil Peralatan Penting

Bil Peralatan Penting
Bil Peralatan Penting
Bil Peralatan Penting
Bil Peralatan Penting
Bil Peralatan Penting
Bil Peralatan Penting

1. A Raspberry Pi

Langkah pertama adalah menggunakan papan Raspberry Pi. Raspberry Pi adalah komputer papan tunggal berkuasa Linux. Tujuannya adalah untuk meningkatkan kemahiran pengaturcaraan dan pemahaman perkakasan. Ini dengan cepat diadopsi oleh peminat dan peminat elektronik untuk projek inovatif.

2. Perisai I²C untuk Raspberry Pi

INPI2 (penyesuai I2C) menyediakan port Raspberry Pi 2/3 dan I²C untuk digunakan dengan pelbagai peranti I²C. Ia boleh didapati di Dcube Store

3. Sensor Kelembapan Digital, Tekanan dan Suhu, BME280

BME280 adalah sensor kelembapan, tekanan dan suhu yang mempunyai masa tindak balas yang cepat dan ketepatan keseluruhan yang tinggi. Kami membeli sensor ini dari Dcube Store

4. Kabel Penyambung I²C

Kami mempunyai kabel penyambung I²C yang terdapat di Dcube Store

5. Kabel USB mikro

Bekalan kuasa kabel USB mikro adalah pilihan yang sesuai untuk menghidupkan Raspberry Pi.

6. Mentafsirkan Akses Internet melalui EthernetCable / WiFi Adapter

Salah satu perkara pertama yang anda ingin lakukan ialah menyambungkan Raspberry Pi anda ke Internet. Kita boleh berhubung menggunakan kabel Ethernet. Kemungkinan lain ialah anda boleh menyambung ke rangkaian tanpa wayar menggunakan Penyesuai tanpa wayar USB.

7. Kabel HDMI (Kabel paparan & sambungan)

Mana-mana monitor HDMI / DVI dan TV apa pun harus berfungsi sebagai paparan untuk Pi. Tetapi ia adalah pilihan. Kemungkinan akses jauh (seperti SSH) tidak dapat dikesampingkan juga. Anda juga boleh mendapatkan akses dengan perisian PUTTY.

Langkah 2: Sambungan Perkakasan untuk Persediaan

Sambungan Perkakasan untuk Persediaan
Sambungan Perkakasan untuk Persediaan
Sambungan Perkakasan untuk Persediaan
Sambungan Perkakasan untuk Persediaan

Buat litar mengikut skema yang ditunjukkan.

Semasa belajar, kami memahami asas elektronik mengenai pengetahuan perkakasan dan perisian. Kami ingin merangka skema elektronik mudah untuk projek ini. Skema elektronik seperti cetak biru untuk elektronik. Rangka cetak biru dan ikuti reka bentuknya dengan teliti. Kami telah menerapkan beberapa asas elektronik di sini. Logik membawa anda dari A ke B, Imaginasi akan membawa anda ke mana-mana!

Sambungan Raspberry Pi dan I²C Shield

Mula-mula ambil Raspberry Pi dan letakkan I²C Shield (dengan Inward Facing I²C Port) di atasnya. Tekan Perisai dengan lembut di atas pin GPIO Pi dan kami selesai dengan langkah ini semudah pai (lihat gambar).

Sambungan Sensor dan Raspberry Pi

Ambil sensor dan Sambungkan kabel I²C dengannya. Pastikan Output I²C SELALU menghubungkan ke Input I²C. Perkara yang sama harus diikuti untuk Raspberry Pi dengan pelindung I²C yang terpasang di atasnya pin GPIO. Kami mempunyai Perisai I²C dan kabel penghubung di sisi kami sebagai pelepasan yang sangat besar dan kelebihan yang sangat besar kerana kami hanya tinggal dengan pilihan pasang dan mainkan. Tidak ada lagi pin dan masalah pendawaian dan oleh itu, kekeliruan hilang. Cuba bayangkan diri anda dalam jaringan wayar dan masuk ke dalamnya. Lega dari itu. Ini menjadikan perkara tidak rumit.

Catatan: Kawat coklat harus selalu mengikuti hubungan Ground (GND) antara output satu peranti dan input peranti lain

Kesambungan Internet adalah Keperluan

Anda sebenarnya ada pilihan di sini. Anda boleh menyambungkan Raspberry Pi dengan kabel LAN atau Adaptor Nano USB tanpa wayar untuk Kesambungan WIFI. Walau apa pun, manifesnya adalah untuk menyambung ke internet yang dicapai.

Kuasa Litar

Pasangkan kabel Micro USB ke soket kuasa Raspberry Pi. Tumbuk dan voila! Semuanya baik untuk dilalui dan kami akan memulakan dengan segera.

Sambungan ke Paparan

Kita boleh menyambungkan 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 boleh menggunakan perisian PUTTY untuk itu. Pilihan ini adalah untuk pengguna lanjutan sehingga kami tidak akan membahasnya secara terperinci di sini.

Saya pernah mendengar akan berlaku kemelesetan, saya memutuskan untuk tidak turut serta

Langkah 3: Pengaturcaraan Raspberry Pi di Java

Pengaturcaraan Raspberry Pi di Jawa
Pengaturcaraan Raspberry Pi di Jawa

Kod Java untuk Sensor Raspberry Pi dan BME280. Ia boleh didapati di repositoriGithub kami.

Sebelum meneruskan kod, pastikan anda membaca arahan yang diberikan dalam fail Readme dan Siapkan Pi Raspberry anda sesuai dengannya. Hanya perlu sedikit masa untuk melakukannya. Stesen cuaca peribadi adalah sekumpulan alat pengukur cuaca yang dikendalikan oleh individu persendirian, kelab, persatuan, atau bahkan perniagaan. Stesen cuaca peribadi boleh dikendalikan hanya untuk kesenangan dan pendidikan pemiliknya, tetapi banyak pengendali stesen cuaca peribadi juga berkongsi data mereka dengan orang lain, sama ada dengan menyusun data dan menyebarkannya secara manual, atau melalui penggunaan internet atau radio amatur.

Kodnya ada dalam bentuk termudah yang dapat anda bayangkan dan anda seharusnya tidak mempunyai masalah dengannya tetapi tanyakan apakah anda memilikinya. Walaupun anda tahu seribu satu perkara, tetap bertanya kepada seseorang yang tahu.

Anda boleh menyalin kod java yang berfungsi untuk sensor ini dari sini juga.

// Diagihkan dengan lesen kehendak bebas.// Gunakannya dengan cara yang anda mahukan, untung atau percuma, dengan syarat ia sesuai dengan lesen karya yang berkaitan. // BME280 // Kod ini direka untuk berfungsi dengan Modul Mini BME280_I2CS I2C yang tersedia dari ControlEverything.com. //

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;

kelas awam BME280

{public static void main (String args ) membuang Pengecualian {// Buat bas I2C bus I2CBus = I2CFactory.getInstance (I2CBus. BUS_1); // Dapatkan peranti I2C, alamat BME280 I2C adalah 0x76 (108) I2CDevice device = bus.getDevice (0x76); // Baca 24 bait data dari alamat 0x88 (136) bait b1 = bait baru [24]; device.read (0x88, b1, 0, 24); // Tukarkan data // pekali temp int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); jika (dig_T2> 32767) {dig_T2 - = 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); jika (dig_T3> 32767) {dig_T3 - = 65536; } // pekali tekanan int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); jika (dig_P2> 32767) {dig_P2 - = 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); jika (dig_P3> 32767) {dig_P3 - = 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); jika (dig_P4> 32767) {dig_P4 - = 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); jika (dig_P5> 32767) {dig_P5 - = 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); jika (dig_P6> 32767) {dig_P6 - = 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); jika (dig_P7> 32767) {dig_P7 - = 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); jika (dig_P8> 32767) {dig_P8 - = 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); jika (dig_P9> 32767) {dig_P9 - = 65536; } // Baca 1 bait data dari alamat 0xA1 (161) int dig_H1 = ((bait) device.read (0xA1) & 0xFF); // Baca 7 bait data dari alamat 0xE1 (225) device.read (0xE1, b1, 0, 7); // Tukarkan data // pekali kelembapan int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); jika (dig_H2> 32767) {dig_H2 - = 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); jika (dig_H4> 32767) {dig_H4 - = 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); jika (dig_H5> 32767) {dig_H5 - = 65536; } int dig_H6 = b1 [6] & 0xFF; jika (dig_H6> 127) {dig_H6 - = 256; } // Pilih daftar kelembapan kawalan // Kelembapan melebihi kadar pensampelan = 1 device.write (0xF2, (byte) 0x01); // Pilih daftar pengukuran kawalan // Mod, suhu dan tekanan normal atas kadar pensampelan = 1 peranti. Tulis (0xF4, (bait) 0x27); // Pilih register konfigurasi // Waktu siaga = 1000 ms device.write (0xF5, (byte) 0xA0); // Baca 8 bait data dari alamat 0xF7 (247) // tekanan msb1, tekanan msb, tekanan lsb, temp msb1, temp msb, temp lsb, kelembapan lsb, kelembapan msb byte data = bait baru [8]; device.read (0xF7, data, 0, 8); // Tukarkan 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; long adc_t = (((panjang) (data [3] & 0xFF) * 65536) + ((panjang) (data [4] & 0xFF) * 256) + (panjang) (data [5] & 0xF0)) / 16; // Tukar data kelembapan panjang adc_h = ((panjang) (data [6] & 0xFF) * 256 + (panjang) (data [7] & 0xFF)); // Pengiraan 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); double cTemp = (var1 + var2) / 5120.0; double fTemp = cTemp * 1.8 + 32; // Pengiraan offset tekanan var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((double) dig_P6) / 32768.0; var2 = var2 + var1 * ((double) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dua kali ganda) dig_P4) * 65536.0); var1 = (((double) dig_P3) * var1 * var1 / 524288.0 + ((double) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dua kali ganda) dig_P1); berganda p = 1048576.0 - (dua kali ganda) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dua kali ganda) dig_P9) * p * p / 2147483648.0; var2 = p * ((dua kali ganda) dig_P8) / 32768.0; tekanan berganda = (p + (var1 + var2 + ((double) dig_P7)) / 16.0) / 100; // Pengiraan offset kelembapan 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))); kelembapan berganda = var_H * (1.0 - dig_H1 * var_H / 524288.0); jika (kelembapan> 100.0) {kelembapan = 100.0; } lain jika (kelembapan <0.0) {kelembapan = 0.0; } // Keluarkan data ke skrin System.out.printf ("Suhu dalam Celsius:%.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 ("Kelembapan Relatif:%.2f %% RH% n", kelembapan); }}

Langkah 4: Praktikal Kod

Praktikal Kod
Praktikal Kod

Sekarang, muat turun (atau git tarik) kod dan buka di Raspberry Pi.

Jalankan arahan untuk Menyusun dan Memuat naik kod di terminal dan melihat outputnya di Monitor. Selepas beberapa saat, ia akan menyaring semua parameter. Dengan memastikan bahawa anda mempunyai peralihan kod yang lancar dan hasil yang tenang (ish), anda memikirkan lebih banyak idea untuk membuat pindaan selanjutnya (Setiap Projek dimulakan dengan Cerita).

Langkah 5: Penggunaan dalam Dunia Konstruktif

BME280 mencapai prestasi tinggi dalam semua aplikasi yang memerlukan pengukuran kelembapan dan tekanan. Aplikasi yang muncul ini adalah Kesedaran Konteks, mis. Pengesanan Kulit, Pengesanan Perubahan Bilik, Pemantauan / Kesejahteraan Kesihatan, Amaran Mengenai Kekeringan atau Suhu Tinggi, Pengukuran Isipadu dan Aliran Udara, Kawalan Automasi Rumah, Pemanasan Kawalan, Pengudaraan, Penyaman Udara (HVAC), Internet of Things (IoT), Peningkatan GPS (mis. Peningkatan Masa ke Pertama-Perbaikan, Perhitungan Mati, Pengesanan Cerun), Navigasi Dalam Ruangan (Penggantian Lantai, Pengesanan Lif), Navigasi Luar, Aplikasi Riadah & Sukan, Ramalan Cuaca dan Petunjuk Kecepatan Vertikal (Naik / Tenggelam Kelajuan).

Langkah 6: Kesimpulannya

Seperti yang anda lihat, projek ini adalah demonstrasi hebat mengenai perkakasan dan perisian yang mampu dilakukan. Dalam masa yang singkat, seseorang dapat membina projek yang begitu mengagumkan! Sudah tentu, ini hanya permulaan. Membuat Stesen Cuaca Peribadi yang lebih canggih seperti Stesen Cuaca Peribadi Lapangan Terbang Automatik boleh melibatkan lebih banyak sensor seperti Anemometer (kelajuan angin), Transmissometer (jarak pandang), Pyranometer (sinaran suria) dan lain-lain. Kami mempunyai tutorial video di Youtube yang mempunyai fungsi asas Sensor I²C dengan Rasp Pi. Sangat mengagumkan apabila melihat hasil dan hasil komunikasi I²C. Periksa juga. Selamat membina dan belajar! Sila beritahu kami pendapat anda mengenai perkara ini. Kami ingin membuat beberapa penambahbaikan sekiranya perlu.

Disyorkan: