Pai raspberi

Memantau Suhu di Raspberry Pi

Memantau Suhu di Raspberry Pi


Memantau suhu mungkin menjadi keperluan dalam banyak projek Raspberry Pi anda. Ia agak mudah dilakukan di Raspberry Pi dan komponen yang diperlukan untuk projek ini tidak terlalu mahal.Artikel ini menunjukkan kepada anda cara menggunakan modul termometer digital DS18B20 untuk memantau suhu menggunakan Raspberry Pi. Artikel ini juga menunjukkan cara membuat aplikasi web untuk menunjukkan suhu.

Perkara yang Anda Perlu:

Untuk mencuba contoh dalam artikel ini, anda memerlukan perkara berikut:

  1. Komputer papan tunggal Raspberry Pi
  2. Penyesuai kuasa untuk peranti Raspberry Pi
  3. Kad microSD dengan Raspberry Pi OS dipasang
  4. Kesambungan rangkaian pada peranti Raspberry Pi
  5. Papan Roti
  6. 3 pcs wayar penyambung wanita-ke-wanita
  7. Beberapa wayar penyambung lelaki-ke-lelaki
  8. Perintang 10k
  9. Modul Digital Thermometer DS18B20

Pinout Termometer Digital DS18B20

Sekiranya anda memegang termometer digital DS18B20 seperti yang ditunjukkan dalam gambar di bawah, pin pertama akan dibumikan (GND), pin kedua akan DATA, dan pin ketiga akan VCC.

Rajah Litar

Gambarajah litar monitor suhu ditunjukkan dalam gambar di bawah.

Di sini, PIN2 / 5V peranti Raspberry Pi harus disambungkan ke PIN3 / VCC modul termometer digital.

The PIN7 / GPIO4 peranti Raspberry Pi harus disambungkan ke PIN2 / DATA modul termometer digital.

The PIN9 / GND peranti Raspberry Pi harus disambungkan ke PIN1 / GND modul termometer digital.

A Perintang 10kΩ harus dihubungkan antara PIN2 dan PIN3 modul termometer digital.

Anda harus memegang Raspberry Pi anda seperti yang ditunjukkan dalam gambar di bawah. Kemudian, pin kiri atas akan PIN1. Pin tepat di sebelah PIN1 akan jadi PIN2. Kemudian, jika anda bergerak ke depan satu baris, sebelah kiri akan berada PIN3 dan yang betul akan PIN4, dan sebagainya.

Setelah anda menyambungkan semua komponen ke peranti Raspberry Pi anda, ia akan kelihatan seperti ini:

Lihat lebih dekat bagaimana saya meletakkan komponen di papan roti.

Setelah anda menyambungkan semua komponen ke peranti Raspberry Pi anda, hidupkan peranti Raspberry Pi. Kemudian, sambungkan ke peranti Raspberry Pi anda melalui VNC atau SSH.

Membaca Data Suhu dari DS18B20 Digital Thermometer

Modul termometer DS18B20 menggunakan protokol komunikasi 1-wayar untuk menghantar data ke Raspberry Pi. Secara lalai, antara muka 1 wayar tidak diaktifkan. Anda boleh mengaktifkan antara muka dari alat konfigurasi Raspberry Pi dengan mudah.

Untuk mendayakan antara muka 1 wayar, jalankan raspi-config dengan arahan berikut:

$ sudo raspi-config

Pilih Pilihan Antaramuka dan tekan .

Pilih 1-Wayar dan tekan .

Pilih dan tekan .

Tekan .

Untuk keluar dari raspi-config utiliti, tekan .

Untuk perubahan berlaku, reboot Pi Raspberry anda seperti berikut:

but semula $ sudo

Untuk memeriksa sama ada w1_gpio dan w1_term modul kernel dimuat, jalankan arahan berikut:

$ sudo lsmod | grep w1

Sekiranya atas sebab tertentu, w1_term modul tidak dimuat, maka anda boleh memuatkannya secara manual dengan arahan berikut:

$ sudo modprobe w1_therm

Setelah anda mengaktifkan Komunikasi 1-wayar dan memuatkan w1_term modul, peranti baru (28-00000ba693e9, dalam kes saya) harus disenaraikan dalam / sys / bas / w1 / peranti direktori, seperti yang anda lihat dalam tangkapan skrin di bawah.

$ ls / sys / bas / w1 / peranti /

Arahkan ke direktori baru, seperti berikut:

$ cd / sys / bus / w1 / devices / 28-00000ba693e9

Anda harus mencari a suhu fail dalam direktori, seperti yang anda lihat dalam tangkapan skrin di bawah.

$ ls -lh

The suhu fail adalah fail teks biasa. Anda boleh membaca data suhu menggunakan kucing perintah, seperti berikut:

$ suhu kucing

Seperti yang anda lihat, data suhu dicetak pada konsol. Di sini, 30375 bermaksud 30.375 ° C.

Anda boleh menggunakan bahasa pengaturcaraan, seperti Python atau Node.js, untuk menguraikan data suhu ini dan menggunakannya pada aplikasi anda. Saya akan menunjukkan cara melakukannya di bahagian seterusnya dalam artikel ini.

Untuk menguraikan data suhu menggunakan bahasa pengaturcaraan, anda memerlukan jalan mutlak ke suhu fail. Anda boleh mendapatkannya dengan menggunakan pautan baca perintah, seperti berikut:

$ readlink -f suhu

Buat Aplikasi Web untuk Memaparkan Data Suhu:

Pada bahagian ini, anda akan belajar bagaimana menguraikan data suhu dari modul termometer DS18B20 dan memaparkannya di aplikasi web.

Dalam contoh ini, saya akan membuat API, yang akan menguraikan data suhu dari modul termometer DS18B20 yang dapat diakses dari API. Saya juga akan membuat aplikasi web yang akan mengambil data suhu dari API dan memaparkannya dengan baik. Saya akan menggunakan Node.bahasa pengaturcaraan js untuk melakukannya. Kod-kod tersebut dimuat naik di repositori GitHub saya shovon8 / ds18b20-raspberrypi-api. Anda mungkin ingin memeriksanya jika anda menghadapi masalah menyalin dan menampal kod dari artikel ini.

Node.js tidak dipasang pada OS Raspberry Pi secara lalai. Tetapi, ia boleh didapati di repositori pakej rasmi Raspberry Pi OS. Anda boleh memasang Node dengan mudah.js dari repositori pakej Raspberry Pi OS.

Pertama, kemas kini cache repositori pakej APT dengan arahan berikut:

$ sudo apt kemas kini

Seterusnya, pasang Node.js dan NPM dengan arahan berikut:

$ sudo apt memasang nodejs npm

Untuk mengesahkan pemasangan, tekan Y dan kemudian tekan .

Pengurus pakej APT akan memuat turun dan memasang semua pakej yang diperlukan. Mungkin diperlukan sedikit masa untuk diselesaikan.

Pada ketika ini, Node.js dan NPM harus dipasang.

Sekali Node.js dan NPM dipasang, periksa sama ada simpul dan npm arahan tersedia, seperti berikut:

$ node - penukaran
$ npm - penukaran

Tingkatkan NPM dengan arahan berikut:

$ sudo npm install --global npm

NPM harus ditingkatkan.

Seperti yang anda lihat, NPM telah dikemas kini dari versi 5.8.0 hingga versi 6.14.8.

$ node --versi $ npm --versi

Sekarang Node itu.js dan NPM dipasang, buat direktori projek baru ~ / ds18b20, seperti berikut:

$ mkdir -v ~ / ds18b20

Navigasi ke ~ / ds18b20 direktori, seperti berikut:

$ cd ~ / ds18b20

Buat yang kosong pakej.json fail dengan arahan berikut:

$ npm init --y

Pasang Menyatakan.js perpustakaan untuk projek dengan arahan berikut:

$ npm pasang - simpan ekspres

Ekspres.perpustakaan js kini harus dipasang.

Buat fail baru pelayan.js dalam direktori projek, seperti berikut:

pelayan $ nano.js

Masukkan baris kod berikut di pelayan.js fail.

let express = memerlukan ('express');
biarkan fs = memerlukan ('fs');
biarkan pelayan = ekspres ();
const PORT = 8080;
const WEBROOT = './ awam ';
pelayan.dapatkan ('/', ungkapkan.statik (WEBROOT));
pelayan.dapatkan ('/ suhu', (req, res) =>
biarkan tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / suhu';
biarkan suhu = fs.readFileSync (tempDataPath, encoding: 'utf8', flag: 'r') / 1000;
res.json (temperatur, rangeStart: -55, rangeEnd: 125);
);
pelayan.dengar (PORT, () =>
konsol.log ('pelayan berjalan di port $ PORT');
);

Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan pelayan.fail js.

Di sini, import baris 1 menyatakan, dan baris 2 mengimport fs modul.

Baris 4 memulakan ekspres.

Baris 6 dan 7 menentukan PELABUHAN dan WEBROOT pemboleh ubah malar, masing-masing. API dan pelayan web akan berjalan PELABUHAN (iaitu 8080, dalam artikel ini), dan pelayan laman web akan memberikan kandungan statik dari WEBROOT (yang mana satu awam / direktori di dalam direktori projek dalam artikel ini).

Baris 9 digunakan untuk mengkonfigurasi express untuk menyajikan kandungan statik dari WEBROOT.

Garis 11-15 menentukan titik akhir API / suhu, yang akan digunakan untuk mendapatkan data suhu ke dalam format JSON.

Pada baris 12, the tempDataPath pemboleh ubah memegang jalan mutlak ke suhu fail modul termometer digital DS18B20, yang ditunjukkan pada bahagian awal artikel ini.

Pada baris 13, data suhu dibaca dari suhu fail menggunakan Node.modul js fs, dan data suhu disimpan di suhu pemboleh ubah.

Pada baris 14, data suhu dicetak dalam format JSON. Modul termometer digital DS18B20 dapat mengukur antara suhu -55 ° C hingga 125 ° C. Saya telah menambahkan bahawa dalam output JSON menggunakan mulai dan jarakEnd harta benda.

Akhirnya, baris 17-19 menjalankan API dan pelayan web dihidupkan PELABUHAN (iaitu 8080, dalam artikel ini).

Buat a awam / direktori dalam direktori projek, seperti berikut:

$ mkdir -v awam

Jalankan pelayan.js atur cara dengan arahan berikut:

pelayan $ node.js

Pelayan harus berjalan di port 8080.

Anda dapat mengakses data suhu modul termometer DS18B20 dari / suhu titik akhir API.

Untuk menguji sama ada anda dapat memperoleh data suhu dari API, jalankan kerinting, seperti berikut:

$ curl -s http: // localhost: 8080 / suhu | json_pp

Seperti yang anda lihat, data suhu dicetak pada konsol dalam format JSON. Oleh itu, API berfungsi.

Tekan + C untuk menghentikan pelayan.

Sekarang, saya akan membuat laman web yang akan meminta pelayan API untuk data suhu dan memaparkannya dengan baik di halaman. Data suhu akan dikemas kini setiap 5 saat.

Buat yang baru indeks.html fail di awam / direktori projek, seperti berikut:

$ nano awam / indeks.html

Masukkan baris kod berikut di indeks.html fail.




Monitor Suhu







00.00 ° C


Kemas kini suhu dalam setiap 5 saat



Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan indeks.html fail.

Fail HTML indeks.html senang difahami. Ini adalah format di mana data suhu akan dipaparkan di aplikasi web.

Di sini, garis 53-55 digunakan untuk memaparkan bar kemajuan, dan garis 57-60 digunakan untuk memaparkan suhu.

Garis 5-49 digunakan untuk menghias aplikasi web dengan baik menggunakan CSS (Cascading Style Sheet).

Garis 62-109 digunakan untuk menjadikan aplikasi web berfungsi. Kod JavaScript digunakan untuk menghidupkan bar kemajuan, mengambil data suhu dari API, dan menampilkan informasi.

Baris 63 melancarkan utama berfungsi setelah aplikasi web dimuatkan dalam penyemak imbas.

The utama fungsi sangat lama. Ia merangkumi dari garis 65 hingga garis 108. Di dalam fungsi utama, kita mempunyai beberapa fungsi lain, seperti getTemperature, kemas kiniTemperature, kemas kiniProgress, aplikasi, dan mulakan.

The kemas kiniProgress fungsi, dalam baris 83-86, mengambil peratusan kemajuan sebagai input dan mengemas kini bar kemajuan.

The kemas kiniTemperature fungsi dalam baris 77-81 mengambil data suhu sebagai input dan mengemas kini aplikasi web dengan data suhu.

The getTemperature fungsi dalam baris 66-75 membuat permintaan ke / suhu titik akhir API dan mendapat data suhu. Setelah data diterima, ia memanggil kemas kiniTemperature berfungsi dengan data. The kemas kiniTemperature fungsi kemudian mengemas kini aplikasi web dengan data suhu baru.

The aplikasi fungsi, dalam baris 88-99, menghidupkan bar kemajuan dan meminta data suhu dari API setiap 5 saat.

The mulakan fungsi, di baris 101-104, memulakan aplikasi web.

Buka pakej.json failkan dengan penyunting teks nano seperti berikut:

pakej $ nano.json

Ubah utama ke pelayan.js dan tambah skrip baru hidang di dalam skrip seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah selesai, tekan + X diikuti oleh Y dan untuk menyelamatkan pakej.json fail.

Setelah semuanya siap, jalankan aplikasi web dan API dengan arahan berikut:

Servis run $ npm

Pelayan harus dijalankan pada port 8080.

Sekarang, buka penyemak imbas web pada peranti Raspberry Pi anda dan lawati http: // localhost: 8080. Data suhu dari modul termometer digital DS18B20 harus dipaparkan di penyemak imbas web anda, seperti yang anda lihat dalam tangkapan skrin di bawah.

Data suhu harus dikemas kini setiap 5 saat.

Seperti yang anda lihat, suhu berubah setiap 5 saat.

Sekiranya anda ingin mengakses aplikasi web dari komputer lain di rangkaian anda, anda perlu mengetahui alamat IP peranti Raspberry Pi anda.

Anda boleh mendapatkan alamat IP peranti Raspberry Pi anda dengan arahan berikut:

$ nama host -I

Seperti yang anda lihat, alamat IP peranti Raspberry Pi saya adalah 192.168.0.107. Ini akan berbeza bagi anda. Oleh itu, pastikan untuk mengganti alamat IP mulai sekarang.

Setelah anda mengetahui alamat IP peranti Raspberry Pi anda, anda seharusnya dapat mengakses aplikasi web dari mana-mana komputer di rangkaian anda menggunakan penyemak imbas web. Hanya lawati http: // 192.168.0.107: 8080, dan aplikasi web harus menunjukkan data suhu dari modul termometer digital DS18B20.

Kesimpulannya

Dalam artikel ini, anda belajar bagaimana menggunakan modul termometer digital DS18B20 di Raspberry Pi untuk mengukur suhu. Anda juga belajar bagaimana membuat Node.API js untuk menunjukkan data suhu dalam aplikasi web, yang mengakses data suhu dari API dan memaparkannya. Artikel ini akan membantu anda memulakan pemantauan suhu Raspberry Pi dengan modul termometer digital DS18B20 dan IoT dengan Raspberry Pi.

Pasang Dolphin Emulator terkini untuk Gamecube & Wii di Linux
Dolphin Emulator membolehkan anda memainkan permainan Gamecube & Wii pilihan anda di Komputer Peribadi Linux (PC). Menjadi emulator permainan sumber ...
Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...