Pemeriksa Polusi Kelas BPK: 10 Langkah
Pemeriksa Polusi Kelas BPK: 10 Langkah
Anonim
Pemeriksa Polusi Kelas BPK
Pemeriksa Polusi Kelas BPK
Pemeriksa Polusi Kelas BPK
Pemeriksa Polusi Kelas BPK
Pemeriksa Polusi Kelas BPK
Pemeriksa Polusi Kelas BPK

Hai, saya seorang mahasiswa dari Belgia dan ini adalah proyek besar pertama saya untuk gelar sarjana saya! Instruksi ini adalah tentang cara membuat pengukur polusi udara untuk ruang tertutup, terutama ruang kelas!

Saya mendengar Anda berpikir mengapa proyek ini? Yah, semuanya dimulai ketika saya pergi ke sekolah menengah. Di sore hari setelah makan siang yang baik dan istirahat, pelajaran dimulai lagi. Tapi ada masalah, guru lupa membuka jendela saat kita makan siang jadi panas, berkeringat dan tidak bisa konsentrasi karena ketiduran. Itu karena ada banyak CO2 di udara.

Proyek saya akan menyelesaikan ini dan membuat semua siswa lebih berkonsentrasi saat dalam pelajaran mereka.

Perlengkapan

1 xRaspberry Pi 4 (€55)

1 x motor steppen dengan driver (€5)

Baterai 2 x 12v 6800 mAh (2x €20)

2 x modul stepdown (2x €5)

1 x 16x2 LCD (€1,5)

Sensor: 1x MQ8, 1x MQ4, 1x MQ7, 1x MQ135, 1x HNT11, 1x TMP36 (1 x €23)

IC: 1x MCP3008, 2x 74hc595AG (1x €2,30, 2x €0,40)

LED: 2x hijau, 2x merah, 3x kuning (ditemukan di beberapa perangkat keras lama, biasanya masing-masing €0,01)

Konektor untuk baterai (2 x €0,35)

40 kabel konektor f-to-f (€1,80)

40 kabel konektor f-to-m (€1,80)

Kabel konektor 20 m-ke-m (€1,80)

2 x PCB untuk disolder (2x €0,70)

Peralatan:

Besi solder (lebih disukai 60 Watt)

Timah untuk disolder

Lembaran aluminium 50x 20

Casing (saya menggunakan casing komputer mini lama)

Ini bisa dengan mudah menjadi beberapa MDF atau ide sendiri.

Langkah 1: Menyiapkan RPi

Menyiapkan RPi Anda
Menyiapkan RPi Anda

Jadi hati kita otak kita dan jiwa kita ada di produk ini. Ancam dengan baik, karena itu bisa menyakiti Anda dengan cara tertentu. Saya menggunakan RPi 4B 4gb, model lain seharusnya baik-baik saja. Anda bisa mengharapkan lebih banyak lag pada model lama.

Kami mendapatkan OS dari sekolah kami dengan beberapa perangkat lunak yang sudah diinstal sebelumnya seperti phpMyAdmin.

Pertama-tama pastikan Anda dapat terhubung ke Raspberry Pi Anda melalui ssh, kami akan membutuhkannya banyak waktu.

Jadi pertama-tama kita harus mengaktifkan bus SPI, pin GPIO dan menonaktifkan bus lain, kita tidak akan membutuhkannya.

Anda dapat melakukan ini di menu raspi-config. Arahkan ke Antarmuka dan aktifkan GPIO dan SPI secara normal. Saat Anda di sini, perluas penyimpanan Anda dengan masuk ke tingkat lanjut lalu tekan enter pada perluas penyimpanan.

Sekarang reboot. Kami akan membutuhkan beberapa ekstensi untuk menggunakan VS Code di pi kami, untuk menjalankan server dan database kami.

Proses instalasi untuk Ekstensi Kode VS dapat ditemukan di sini.

Sekarang kita akan menginstal ekstensi untuk server dan database kita. Gunakan terminal dan ketik 'python install flask, flask-cors, mysql-python-connector, eventlet' tunggu sampai selesai.

Sekarang kita bisa mulai dengan pembuatan proyek.

Langkah 2: MCP3008 + TMP36

MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36

Jadi kami memiliki 6 sensor: 4 gas, 1 kelembaban + suhu dan 1 sensor suhu. Ini adalah tugas nyata untuk membuat mereka bekerja. Semua sensor adalah sensor analog sehingga kita perlu mengubah sinyal analog menjadi sinyal digital. Itu karena RPi (Rasberry Pi) hanya bisa "memahami" sinyal digital. Untuk info lebih lanjut klik di sini.

Untuk menyelesaikan tugas itu, Anda memerlukan MCP3008, ini akan melakukan pekerjaan dengan baik!

Ini memiliki 16 port, dihitung dari atas (gelembung kecil) kiri, bawah, sisi lain dan atas. Pin1-8 adalah input untuk sinyal analog dari sensor kami. Pin 9 di sisi lain adalah GND, ini perlu dihubungkan ke GND dari rangkaian lengkap jika tidak, ini tidak akan berfungsi. Pin 10-13 perlu dihubungkan lebih hati-hati ini akan mengirimkan data ke dan dari RPi. Pin 14 adalah GND lain dan pin 15 dan 16 adalah VCC yang harus dihubungkan ke sisi positif rangkaian.

Ini adalah tata letak untuk pengkabelan:

  • MCP3008 VDD ke 3.3V eksternal MCP3008 VREF ke 3.3V eksternal
  • MCP3008 AGND ke GND eksternal
  • MCP3008 DGND ke eksternalGND
  • MCP3008 CLK ke Raspberry Pi pin 18
  • MCP3008 DOUT ke Raspberry Pi pin 23
  • MCP3008 DIN ke Raspberry Pi pin 24
  • MCP3008 CS/SHDN ke Raspberry Pi pin 25

Ini juga saat yang tepat untuk menghubungkan GND dari RPI ke GND eksternal. Ini akan membuat aliran listrik dari RPi.

Berikut cara menghubungkannya dengan benar.

Pastikan untuk menghubungkan dengan cara yang benar, jika tidak, Anda dapat melakukan hubungan arus pendek semuanya!

Potongan kode pertama masuk ke tempatnya di sini.

Anda dapat menyalin kode saya dari github proyek saya di bawah model. Analog_Digital.

Di bagian bawah halaman Anda akan menemukan kode sumber untuk membuatnya berfungsi.

Tapi kami membutuhkan sensor pertama kami, jadi kami bisa mengujinya.

Kami perlu menguji sensor kami jika berfungsi. Hubungkan catu daya 3.3V atau 5V ke sisi positif TMP36. Jangan lupa untuk menghubungkannya ke GND juga, ini mungkin sesuatu yang bodoh terjadi tapi percayalah. Itu kenyataan;). Anda dapat menguji dengan multimeter Anda output dari sensor ini adalah pin tengah. Dengan persamaan sederhana ini Anda dapat memeriksa suhu dalam °C. ((milivolt* tegangan input)-500)/10 dan voila donne! Selamat tinggal! Yah tidak hahah kita butuh MCP3008. Hubungkan pin analog untuk TMP36 Anda ke pin input pertama MCP3008. Ini adalah pin 0.

Anda dapat menggunakan kode contoh di bagian bawah untuk kelas MCP ini. Atau sesuatu yang Anda temukan di internet akan bekerja dengan baik.

Langkah 3: Basis Data

Jadi sekarang kita bisa membaca di sensor pertama kita, kita perlu mencatatnya ke database. Ini adalah memori otak kita. Saya merancang database ini agar dapat diperluas dan mudah dimodifikasi untuk perubahan di masa mendatang.

Jadi pertama-tama kita perlu memikirkan apa yang akan kita dapatkan sebagai input dan jika kita perlu mencatat hal-hal tertentu seperti status objek tertentu.

Jawaban saya adalah: input dari 6 sensor jadi kita perlu membuat tabel sensor, dengan sensor ini kita akan membuat nilai. Apa yang terkait dengan nilai? Bagi saya itu adalah status jendela, apakah terbuka atau tertutup saat sensor mengukur nilainya. Tetapi lokasi juga merupakan faktor untuk nilai saya jadi kami akan menambahkannya. Waktu dan tanggal untuk suatu nilai juga penting jadi saya akan menambahkannya.

Untuk ekspansi di masa mendatang, saya menambahkan tabel pengguna.

Jadi apa ide saya untuk tabel: nilai tabel, alamat tabel (ditautkan ke ruangan), ruang tabel (ditautkan ke nilai), jendela tabel (ditautkan ke nilai), sensor tabel (ditautkan ke nilai) dan tabel di alam liar untuk pengguna.

Adapun menghubungkan tabel bersama-sama. Setiap nilai membutuhkan satu sensor, satu jendela, nilai untuk sensor, id sehingga kita dapat membuat nilai unik, cap waktu ketika nilai dibuat dan yang terakhir kita tidak memerlukan ruangan sehingga itu opsional tetapi bisa ditambahkan.

Jadi begini tampilannya sekarang. Inilah yang saya gunakan untuk sisa proyek saya.

Langkah 4: HNT11, untuk Anak Laki-Laki Sejati

Jadi karena kami tidak diizinkan menggunakan perpustakaan apa pun. Kita harus memprogram semuanya sendiri.

HNT11 adalah sistem satu kabel jadi ini berarti Anda memiliki GND dan VCC seperti perangkat elektronik lainnya tetapi pin 3 adalah pin masuk dan keluar. Jadi agak aneh tapi saya belajar banyak darinya.

Hubungkan VCC ke 3.3V eksternal dan GND ke GND eksternal.

Lembar data DHT11 berisi segalanya untuk menggunakan sensor ini.

Kita dapat menentukan bahwa bit tinggi mengandung bit rendah dan tinggi. Tetapi durasi bagian yang tinggi menentukan bit yang sebenarnya. Jika bagian tinggi dipancarkan lebih lama dari 100µs (normalnya 127s) bitnya tinggi. Apakah bit lebih pendek dari 100µs (biasanya sekitar 78s) bitnya rendah.

Ketika HNT11 diaktifkan, ia akan mulai memancarkan sinyal. Ini selalu 41 bit. Ini dimulai dengan sedikit awal ini tidak berarti apa-apa sehingga kita bisa melewatkan yang satu ini. 16 bit/2byte pertama adalah bagian integer dan float untuk kelembapan. Ini sama untuk 2 byte terakhir tetapi sekarang untuk suhu.

Jadi kita hanya perlu menghitung durasi setiap bit dan selesai.

Dalam kode sumber di bawah DHT11 Anda akan menemukan metode saya dalam memecahkan masalah ini.

Langkah 5: Sensor Gas (Legenda Saja)

Sensor Gas (Legenda Saja)
Sensor Gas (Legenda Saja)
Sensor Gas (Legenda Saja)
Sensor Gas (Legenda Saja)

Jadi saya pikir pada awal proyek bahwa itu akan menjadi ide bagus untuk menggunakan banyak sensor. Pikirkan sebelum Anda bertindak dan membeli secara lokal ini akan menghemat banyak jam tidur Anda! Karena Anda dapat memulai lebih awal dan ini akan membuat Anda lebih rela untuk melakukannya.

Jadi saya punya 4 sensor gas. MQ135, MQ8, MQ4 dan MQ7 semua sensor ini memiliki gas spesifik yang paling baik diukur. Tetapi ini semua berbeda dalam konfigurasinya.

Jadi pertama saya menggunakan lembar data, ini tidak membuat saya berharap. Kemudian saya mencari contoh kode. Apa yang saya temukan adalah satu perpustakaan dari Adafruit. Saya mencoba untuk menirunya sebaik mungkin. Ini bekerja dengan salah satu dari empat sensor.

Saya membiarkannya istirahat beberapa saat dan kembali ke sana.

Apa yang saya lakukan untuk membuatnya berfungsi untuk satu sensor itu adalah:

- Saya menggunakan lembar data untuk menandai titik-titik gas yang ingin saya ukur. Jadi 1 putaran hingga 400ppm, 1,2 hingga 600ppm …

- Lalu saya taruh semua poin itu di excel dan ekstrak rumus untuk kurvanya. Saya menyimpan ini di database saya.

- Dari datasheet saya juga membaca hambatan normal dan hambatan udara bersih. Nilai-nilai ini di mana juga disimpan dalam database.

Saya menuangkan ini semua ke beberapa kode, Anda dapat menemukan ini sebagai tiga fungsi terakhir di kelas MCP3008. Tapi ini belum selesai, sayangnya saya tidak punya cukup waktu.

Langkah 6: Shiftregister, 74HC595AG

Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG

Jadi ini IC. Dan itu melakukan sesuatu yang istimewa, dengan perangkat ini dimungkinkan untuk menggunakan lebih sedikit output GPIO untuk sinyal output yang sama. Saya menggunakan ini untuk LCD (Liquid Crystal Display) dan led saya. Saya akan menunjukkan alamat ip pada LCD sehingga semua orang dapat menjelajahi situs tersebut.

LED dipilih dengan bijak 2 merah, 3 kuning dan 2 hijau. Ini akan menunjukkan setiap saat kualitas udara di dalam ruangan.

Shiftregister adalah perangkat output paralel sehingga tidak mungkin untuk mengeluarkan sinyal yang berbeda dalam jangka waktu tertentu. Ini akan mungkin jika diprogram dari luar tetapi tidak didukung secara asli.

Bagaimana cara menggunakan ICnya? Nah Anda memiliki 5 input dan 9 output. 8 output logis untuk 8 pin dan kemudian pin ke-9 untuk mengirim data yang tersisa ke shiftregister lain.

Jadi kita sambungkan pin 16 ke VCC eksternal, pin berikutnya adalah output pertama jadi untuk LCD kita akan membutuhkannya.. Pin 14 adalah jalur data, di sini kita akan mengirim data. Pin ke-13 adalah sakelar hidup, sinyal rendah memungkinkan IC, sinyal tinggi diperlukan untuk mematikannya. Pin 12 adalah pin di mana kita dapat menentukan kapan bit dikirim, ketika Anda menarik pin ini ke bawah sehingga dari tinggi ke rendah membaca status sinyal pin 13 dan menyimpannya di memori 8bit. Pin 11 serupa ketika pin ini disetel tinggi lalu rendah, pin ini mengeluarkan 8 bit ke portnya. Dan pin terakhir, pin 10 adalah master reset, pin ini harus tetap tinggi atau tidak akan berfungsi. Sambungan terakhir adalah GND pin 8 kita perlu menghubungkan yang ini ke GND eksternal.

Jadi sekarang hubungkan pin sesuka Anda ke raspberry pi. Cara saya melakukannya adalah menghubungkan mereka sedekat mungkin satu sama lain untuk memastikan saya tahu di mana mereka berada.

Ketika Anda mendapatkan output yang tepat. Anda dapat menyolder ini ke PCB dengan LED. dan resistor 220 Ohm. Solder output IC ke led yang sesuai. Anda sekarang harus memiliki sesuatu seperti ini.

Anda dapat menemukan kode pengujian saya di sini di bawah Shiftregister. Saat Anda bekerja dengan 74HC595N, Anda tidak memerlukan MR sehingga Anda dapat membiarkannya tidak terhubung.

LCDnya hampir sama. Cukup mudah untuk menggunakannya dengan shiftregister karena input untuk LCD sama persis dengan input untuk shiftregister.

Untuk LCD ada beberapa kode lain untuk membuatnya bekerja tetapi hampir sama hanya dengan shifregister. Anda dapat menemukan kode tes di sini di bawah LCD.

Langkah 7: Tampilan Depan, Pelajaran Berharga

Jadi di sini saya akan mengembara, ini bagian tentang bagaimana Anda harus melakukannya. Ini adalah sesuatu yang sangat sangat berharga yang dipelajari.

Buat frontend sebelum backend!!!!

Saya melakukannya sebaliknya. Saya membuat panggilan yang tidak berguna untuk database saya, saya menghabiskan banyak waktu untuk ini.

Di halaman arahan saya membutuhkan suhu dan kelembaban saat ini dan nilai semua sensor gas dalam grafik yang bagus. Saya juga perlu menunjukkan alamat ip RPi.

Pada halaman sensor saya membutuhkan pemilihan satu sensor dan pemilihan waktu. Saya memilih untuk pemilihan satu hari dan kemudian periode dari hari itu. Ini membuatnya jauh lebih mudah bagi saya karena, saya bisa lebih mengontrolnya.

Pada halaman terakhir, halaman pengaturan memungkinkan untuk mengelola nilai-nilai tertentu seperti tingkat suhu dan gas berbahaya atau berbahaya yang sehat. Anda juga dapat membuat RPi reboot jika Anda merasa perlu melakukannya.

Jadi pertama-tama saya membuat desain agar saya dapat dengan mudah mulai mengerjakan bagian pengkodean. Saya secara bertahap membuat kemajuan satu per satu. Tugasnya mobile dulu jadi saya akan fokus dulu. Lalu saya akan pergi ke layar yang lebih besar.

Anda dapat menemukan halaman saya, css dan js di Github saya.

Langkah 8: Bagian Belakang

Bagian ini adalah bagian yang saya campur dengan frontend. Ketika saya membuat sesuatu untuk frontend, saya membuatnya bekerja di backend. Jadi tidak perlu direvisi nanti. Ini adalah sesuatu yang tidak saya lakukan sejak awal dan karena ini saya kehilangan waktu selama 2 minggu. Bodohnya aku! Tapi pelajaran yang saya ambil dengan senang hati untuk proyek lain.

Jadi ketika Anda membuat backend, buatlah sesuatu yang akan Anda gunakan. Tetapi buatlah itu menjadi bukti di masa depan dengan membuatnya dapat digunakan kembali dan tidak dikodekan secara keras. Jadi ketika saya membutuhkan 50 nilai terakhir DHT11 saya, saya akan memeriksa apakah ada nilai yang dibuat? Ya, bagaimana cara memasukkannya ke dalam database. Bagaimana cara mengeluarkannya dari database. Bagaimana saya menunjukkannya? Bagan, grafik, atau hanya data biasa? Kemudian saya membuat rute baru dengan parameter dan properti yang berbeda seperti tanggal, nama sensor tertentu atau apa yang akan saya panggil. Maksud saya, apakah saya memanggil semua nilai dari sensor MQ atau apakah saya memanggil semua sensor dengan MQ dalam namanya. Kemudian saya memasukkan beberapa penanganan kesalahan. Ketika permintaan dari panggilan adalah metode yang tepat saja, maka ia dapat melanjutkan jika tidak, ia mendapat kesalahan yang bagus.

Juga di sini adalah utasnya, ini adalah perangkat lunak yang memungkinkan Anda menjalankan kode paralel. Anda dapat menjalankan panggilan situs web, fungsi penciptaan nilai, dan led+shiftregister. Fungsi-fungsi ini berjalan sepenuhnya independen satu sama lain.

Jadi untuk lednya. Saya membuat nilai terendah/sehat untuk CO2. Nilai ini berasal dari berbagai sumber pemerintah. Nilai sehat untuk ruang kelas adalah di bawah 600 ppm CO2 per meter kubik. Nilai tidak sehat adalah segala sesuatu di atas 2000 ppm. Jadi LED membuat jembatan. Jika nilai dari sensor MQ4 adalah 1400 maka otomatis akan dihitung tingkat bahayanya. 2000 - 600 = 1400 jadi total rangenya adalah 1400/7 = 200. Jadi ketika nilainya mencapai 550 maka akan muncul led berwarna hijau. 750 menunjukkan 2 led hijau, 950 1 kuning 2 led hijau. Dan seterusnya.

Ketika nilainya berada di atas tengah, jendela terbuka. Saya menggunakan motor steppen karena torsi dan presisi yang tinggi. Dan ketika nilainya melebihi 2000, alarm kecil berbunyi. Ini untuk memperingatkan orang-orang di dalam ruangan.

Kita juga bisa mendeteksi gas asap sehingga saat terjadi kebakaran. Ini juga mencatat ini. Ketika melebihi nilai tertentu, alarm menyala dan LED berkedip.

LCD terutama ada untuk menunjukkan alamat IP sehingga Anda dapat menjelajahi situs tersebut.

Anda dapat menemukan semuanya + kode di dalam Githubin saya di app.py

Langkah 9: Membuat Kasus

Membuat Kasus
Membuat Kasus
Membuat Kasus
Membuat Kasus
Membuat Kasus
Membuat Kasus

Saya menemukan kasus komputer kecil untuk semua komponen saya.

Saya memotong lembaran aluminium sesuai ukuran. Dan mengebor beberapa lubang di mana lembaran itu akan beristirahat. Ini sesuai dengan lubang motherboard.

Kemudian saya melihat bagaimana semuanya akan muat di dalam kasing. Saya meletakkan semuanya dan mulai bergerak.

Ketika saya puas dengan cara kerjanya, saya mulai menandai lubang yang saya butuhkan untuk sensor, RPi, PCB, modul daya, dan modul steppenmotor. Lubang-lubang itu untuk standoff PCB, ini akan membuat beberapa ruang sehingga bagian logam tidak bersentuhan dengan lembaran aluminium. Ini juga memberikan tampilan yang bagus.

Saya mengambil kabel dari masing-masing IC atau perangkat lain dan mengikatnya lebih erat. Ini karena saya bisa melihat kabel apa untuk apa. Saya menempatkan setiap semuanya dengan baik pada beberapa kebuntuan dan menggunakan beberapa mur dan sekrup untuk menahan semuanya dengan baik di tempatnya.

Untuk menyalakan ini semua saya menggunakan 2 baterai. Ini memberikan banyak daya tetapi ini masih baterai sehingga ini akan habis dalam waktu. Saya memasang ini dengan beberapa velcro. Saya menggunakan velcro karena saya dapat dengan mudah mengganti atau membuang baterai.

Steppenmotor, LCD dan LED akan keluar dari bagian atas casing. Jadi saya dengan hati-hati meletakkan penutup kasing di atas dan menandai lubangnya dan mengebornya dengan bor. Jadi kita bisa dengan mudah melihat semuanya.

Saat kasing selesai, kami perlu menyambungkan semuanya, di sini Anda dapat menemukan skema pengkabelan.

Langkah 10: Evaluasi dan Kesimpulan

Evaluasi dan Kesimpulan
Evaluasi dan Kesimpulan

Jadi ini adalah/adalah proyek pertama saya.

Sepertinya baik-baik saja kurasa.

Saya belajar banyak hal baru, mempelajari sisi baik dan buruk dari manajemen proyek. Itu benar-benar pelajaran yang sangat berharga. Saya bersandar bahwa Anda tidak bisa menunggu Anda benar-benar harus terus memberi. Anda perlu mendokumentasikan setiap gerakan (hampir sangat bergerak), dan Anda perlu melakukannya ketika Anda baru saja melakukannya.

Fokus pada 1 hal pada satu waktu. Anda ingin suhu di layar Anda? Lakukan ini, ini dan itu. Jangan menunggu atau mencoba membiarkannya berlalu. Ini tidak akan membantu. Dan itu akan kehilangan waktu yang begitu berharga.

Juga 4 minggu tampaknya banyak waktu. Tapi kurang benar. Ini tidak benar. Anda hanya memiliki 4 minggu. 2 minggu pertama tidak terlalu banyak tekanan. 3 minggu selesai dan 4 minggu malam tanpa tidur. Ini adalah bagaimana Anda tidak harus melakukannya.

Saya mungkin sedikit ambisius: Saya kasing super kecil, tidak ada sensor yang mudah digunakan, baterai … Buatlah jauh lebih sederhana dan kemudian buat secara bertahap semakin keras, baru kemudian Anda akan mendapatkan prototipe/ produk yang bagus.

Direkomendasikan: