
Poin-poin penting atau tentang artikel ini
Artikel lain tentang ShIoTiny - pengontrol yang dapat diprogram secara visual berdasarkan chip ESP8266 . Artikel ini menjelaskan fitur menghubungkan sensor dari berbagai jenis ke input biner dari pengontrol ShIoTiny . Selain itu, ada jawaban atas sejumlah pertanyaan populer dari pembaca artikel sebelumnya dalam seri ini.
Artikel Seri Sebelumnya
ShIoTiny: otomatisasi kecil, Internet, atau "enam bulan sebelum liburan"
ShIoTiny: node, tautan, dan acara atau fitur program menggambar
ShIoTiny: ventilasi kamar basah (contoh proyek)
Situs proyek
Firmware biner, sirkuit pengontrol, dan dokumentasi
Pendahuluan atau jawaban atas pertanyaan
Semua artikel saya tentang ShIoTiny , kecuali yang pertama, lahir dari pertanyaan dari pembaca yang berisiko mencoba firmware saya.
Faktanya adalah bahwa untuk menjawab secara detail dan sekaligus - saya tidak punya kesempatan. Hobi adalah hobi dan jarang ada orang yang menghabiskan waktu sebanyak itu untuk pekerjaan, pekerjaan rumah tangga, atau anak-anak. Saya juga tidak bisa. Dan pertanyaan-pertanyaan dari surat-surat pada dasarnya dapat dikurangi menjadi beberapa. Oleh karena itu, lebih mudah untuk menulis artikel yang mencakup beberapa masalah secara rinci daripada menulis selusin surat.
Banyak pertanyaan terkait bagaimana menghubungkan sensor dari berbagai jenis dan bagaimana cara bekerja dengannya. Ini tidak mengejutkan: bekerja dengan relay output cukup sederhana. Dan apa yang mereka tidak ingin terhubung ke input! Ada banyak pilihan. Artikel ini didedikasikan untuk artikel ini dan kemungkinan besar akan dikhususkan untuk yang berikut: topik yang sangat luas - koneksi sensor.
Tetapi, sebelum beralih ke biografi dunia sensor yang indah, saya akan membiarkan diri saya menggunakan Habr sebagai media untuk menjawab pertanyaan paling populer yang mereka tanyakan dalam surat.
Jawaban untuk pertanyaan pembaca paling populer
Mungkin pertanyaan paling populer adalah " mengapa Anda tidak mendukung PWM / DS1821 / RTC ... dan seterusnya? ". Saya jawab. Karena ketika saya merancang ShIoTiny, saya tidak membutuhkannya. Adapun PWM, tidak ada tempat untuk meletakkannya di papan ShIoTiny . Tidak ada kaki yang tersisa untuk menghubungkan RTC . Dan sebagainya. Tetapi jika proyek ini berkembang dengan cukup sukses - saya akan membuat perangkat lain dengan ideologi pemrograman yang sama, tetapi dengan perangkat peripheral yang berbeda. Tentu saja, saya akan mendukung beberapa chip tambahan di ShIoTiny, karena saya mendukung, misalnya, baru kemarin sensor suhu DS1820 / 22 . Tapi Anda tidak bisa merangkul besarnya dan mendorong yang belum diedit. Memori pengontrol, seperti waktu saya, tidak terbatas.
Pertanyaan paling populer berikutnya adalah: β Apakah Anda berencana untuk memproduksi ShIoTiny secara massal? ". Saya akan menjawab secara detail. Saat ini saya memiliki beberapa papan lagi dan jika ada yang tertarik - tulis, saya akan kirim. Jika mereka tetap pada saat itu, tentu saja. Serial (artinya 50-100 lembar), sekali lagi, saat ini saya tidak berencana untuk merilisnya. Tidak ada permintaan seperti itu, dan mengatakan 50 papan tidak begitu mudah untuk hobi dan akan menghabiskan banyak biaya. Akan ada banyak orang yang ingin mendapatkan bayaran siap - situasinya dapat berubah. Jadi kalau tidak semuanya, maka banyak tergantung pada pendapat dan keinginan masyarakat.
Pertanyaan lain yang sering diajukan: βdari mana mendapatkan sumbernya? ". Saya jawab. Tidak ada tempat lain. Untuk beberapa alasan, saya belum dapat mempostingnya dan saya tidak tahu apakah saya bisa melakukannya di masa mendatang.
Dan akhirnya, pertanyaan tentang multicast MQTT dan UDP . Saya berharap dapat membuat artikel terpisah tentang masalah ini, karena ada banyak fitur. Sesuatu tentang MQTT ada di artikel sebelumnya tentang sistem ventilasi, tetapi semuanya dijelaskan di sana secara umum. Namun - baca instruksi. Ada banyak jawaban, meskipun ini masih konsep.
Ini diakhiri dengan pertanyaan-pertanyaan populer dan akhirnya membahas untuk apa artikel ini ditulis - dunia sensor yang menakjubkan, indah, menakutkan dan misterius.
Sensor - apa itu dan mengapa itu?
Setiap prasasti dalam bahasa yang tidak dikenal hanyalah pola kompleks untuk seseorang yang belum pernah melihat huruf atau hieroglif. Tidak ada gambar untuk orang buta. Untuk tuna rungu, musik. Kenapa saya? Dan fakta bahwa informasi adalah tampilan bersyarat dari suatu objek atau fenomena pada beberapa media material. Informasi tanpa media materi tidak ada. Serta informasi tidak ada tanpa seseorang yang mampu memahaminya.
Karenanya, jika kita ingin ShIoTiny kita tidak menjadi "buta", "tuli" dan "buta huruf" - kita harus mengajarinya untuk " memahami " dan " memahami " informasi tentang dunia di sekitarnya dan atas dasar ini untuk membuat keputusan tertentu untuk mengelola apa yang dibutuhkan peralatan kami.
Informasi tentang dunia ada dalam beragam representasi dan berbagai pembawa material: getaran udara - bunyi dan fluks foton; konsentrasi uap air di udara dan suhu bumi; ada atau tidak adanya massa dan besarnya. Dan sebagainya. Semua ini dapat membawa bagi kami informasi yang diperlukan untuk pengambilan keputusan.
Tetapi mikrokontroler ESP8266 kami - dasar dari ShIoTiny - hanya memahami dua jenis informasi - sinyal biner digital 0V - 3V dan sinyal analog dalam kisaran dari 0V hingga 1V .
Oleh karena itu, kita memerlukan " penerjemah " dari bahasa fenomena fisik tertentu atau kuantitas fisik ke bahasa sinyal listrik yang dapat dimengerti oleh mikrokontroler ESP8266 . " Penerjemah " semacam itu disebut sensor .
Sebenarnya, dalam kasus kami, sensor adalah alat teknis yang mengubah informasi tentang dunia sekitarnya menjadi sinyal listrik yang dapat dipahami oleh komponen elektronik dari pengontrol ShIoTiny .
Sensor berbeda. Ada ribuan dan kegelapan. Tetapi jika Anda mulai mengerti, maka semuanya tidak begitu menakutkan. Pertama , kami hanya tertarik pada sensor yang menghasilkan sinyal listrik pada output. Kedua , kita akan membatasi diri hanya untuk jenis sensor yang populer. Dan ketiga , dalam praktiknya tidak begitu banyak jenis sinyal yang dihasilkan oleh sensor.
Dari "pertama" - semuanya jelas. Secara fisik tidak mungkin untuk menghubungkan sensor secara langsung ke ShIoTiny yang menyediakan informasi dalam bentuk mekanik, hidrolik, atau pneumatik.
Dengan "kedua" - semuanya juga jelas. Sangat tidak mungkin bahwa siapa pun akan menghubungkan detektor partikel cepat spesifik atau pH meter dalam lithium radioaktif cair ke ShIoTiny . Nah, jika ada yang melakukannya, saya pikir kualifikasinya jauh lebih tinggi dari saya dan dia kemungkinan besar tidak akan membutuhkan artikel ini. Tetapi suhu air atau udara, tekanan udara atau air, kelembaban, cahaya, tingkat cairan atau kondisi pintu (buka-tutup) - semua ini dapat diukur dengan sangat baik oleh pengontrol ShIoTiny dalam sistem kontrol rumah tangga.
Kami akan berurusan dengan "ketiga". Sinyal listrik apa yang biasanya keluaran dari jenis sensor yang umum? Tiga jenis sinyal utama pada output sensor dapat dibedakan:
Sinyal biner Artinya, sinyal yang hanya memiliki dua level - logis 0 atau logis 1. Parameter listrik tidak penting - mereka selalu dapat dikonversi ke level yang diinginkan.
Sinyal analog . Yaitu, arus atau tegangan, bervariasi tergantung pada parameter yang diukur dalam rentang nilai yang diberikan.
Sinyal digital . Ini adalah sensor yang berkomunikasi dengan mikrokontroler menggunakan protokol tertentu.
Di sini, mungkin, semua opsi yang dapat dihubungkan ke ShIoTiny . Tentu saja, ada juga sensor dengan output frekuensi, output fase, dan sensor dengan segala macam sinyal output yang eksotis. Tetapi karena tidak mungkin untuk menghubungkan mereka secara langsung ke ShIoTiny, kami tidak akan membicarakannya sekarang.
Input biner ShIoTiny
Mari kita mulai dengan yang paling sederhana - dengan input biner ShIoTiny . Mereka ditunjukkan oleh Input1 , Input2 dan Input3 . Karena input ini benar-benar identik, kami akan mempertimbangkan input Input1 . Segala sesuatu yang dikatakan tentang input ini juga berlaku untuk dua input biner lainnya - Input2 dan Input3 .
Rangkaian input biner ShIoTiny ditunjukkan pada gambar. Segera melakukan reservasi, sirkuit dengan cacat kecil - itu perlu untuk menghubungkan resistor 10K ke resistor 1K . Tetapi ini tidak mempengaruhi operasi perangkat dan itu luar biasa. Jadi, mengapa ada begitu banyak elemen dalam rangkaian input biner? Pertanyaan seperti itu juga ditanyakan kepada saya. Saya akan mencoba menjawabnya.

Input biner di ShIoTiny bekerja pada kontak " kering " dan " basah ". Selain itu, rangkaian memberikan perlindungan tegangan lebih (misalnya, jika, misalnya, 5 Volts bukannya 3 Volts ke Input1 , misalnya).
Perlindungan input biner
Perlindungan tegangan lebih, yang dilakukan pada semua input biner ShIoTiny , tentu saja tidak akan menyelamatkan controller dari burnout, jika tegangan ~ 220V diterapkan pada inputnya. Tetapi dari mendapatkan input Input1,2,3 + 5V atau bahkan + 12V - perlindungan ini sepenuhnya menghemat.
Perlindungan seperti itu bekerja sangat sederhana dan dapat diterapkan tidak hanya dengan ESP8266 , tetapi juga dengan mikrokontroler lainnya.
Pertimbangkan dua opsi untuk perlindungan: saat menerapkan tegangan + 5V dan -5V ke kabel netral ( arde ) ke input Input1 .
Ketika tegangan pada input Input1 normal, dioda pelindung D1 dan D2 ditutup, karena dihidupkan pada arah yang berlawanan.
Segera setelah tegangan pada Input1 melebihi + 3V (misalnya, kami menyingkat Input1 ke + 5V ), dioda D1 terbuka dan menarik input pengendali GPIO ke + 3V , mencegah tegangan pada GPIO ESP8266 dari kenaikan di atas 3V . Sebenarnya, tegangannya akan sedikit lebih tinggi dari 3V (3.2V atau 3.3V) - tetapi ini tidak penting. Input dari mikrokontroler tidak akan terbakar dan ini penting.
Segera setelah tegangan pada Input1 menjadi negatif (misalnya, kami menyingkat input ke -5V ), maka dioda D2 terbuka dan menarik Input1 ke ground 0V , tidak membiarkan tegangan pada input GPIO ESP8266 turun di bawah 0V . Sebenarnya, tegangannya akan sedikit lebih rendah dari 0V (-0.2V atau -0.3V) - tetapi ini sekali lagi tidak penting. Input mikrokontroler tidak akan terbakar.
Resistor 1K adalah pembatas arus sehingga tidak ada hubungan pendek selama operasi perlindungan. Arus yang melaluinya kecil. Misalnya, dalam contoh kita, jika kita menerapkan Input1 + 5V ke input, maka arus melalui resistor 1K akan sekitar 2mA . Dengan tegangan negatif -5V pada input1 Input , arus melalui resistor 1K akan sekitar 5mA .
Jika seseorang tidak mengerti mengapa dioda membuka dan menutup, maka saya sarankan membaca buku "Electronics Step by Step" oleh R. A. Svorenya . Di Internet, misalnya, di sini . Saya terutama menyarankan pemula - bahasa buku ini sederhana dan ada banyak contoh.
Apa saja kontaknya
Jadi, dengan perlindungan beres. Mari kita beralih ke masalah mendasar lainnya - menghubungkan input biner ShIoTiny ke sensor biner.
Seperti yang telah kami katakan, sensor biner adalah sensor yang outputnya memiliki dua status - nol dan satu. Tapi ini logis. Dan secara fisik ada dua opsi untuk output sensor biner: " kontak kering " dan " kontak basah ". Pertimbangkan apa itu dan apa yang dimakannya.
" Kontak kering " adalah kontak yang tidak memiliki sumber tegangan sendiri. Artinya, sembarang dua konduktor logam yang dapat disingkat dan membukanya. Definisi ini mencakup massa sensor - tombol, sakelar, sensor apung untuk tingkat cairan, sakelar buluh (sensor medan magnet) dan sebagainya. Pada sirkuit listrik, β kontak kering β yang biasanya terbuka biasanya ditunjukkan seperti yang ditunjukkan pada gambar.

Biasanya terbuka - ini berarti terbuka ketika tidak ada pengaruh eksternal - tombol tidak ditekan, saklar tidak dihidupkan, saklar buluh tidak memiliki magnet di dekatnya ...
Ada juga " kontak kering " yang biasanya tertutup . Pada sirkuit listrik, mereka biasanya ditunjukkan seperti yang ditunjukkan pada gambar.

Berbeda dengan " kontak kering " yang biasanya terbuka, biasanya tertutup tanpa adanya pengaruh eksternal ditutup.
Baik itu dan " kontak kering " lainnya dapat dihubungkan dengan aman ke input Input1,2,3 controller ShIoTiny . Sensor dengan output tipe kontak kering terhubung ke input biner ShIoTiny seperti yang ditunjukkan pada gambar.

Jika " kontak kering " dari Input1 ditutup, maka tegangan kira-kira nol volt diterapkan pada input pengontrol (lebih tepatnya, 0,3 Volt karena kesalahan dalam rangkaian), karena " kontak kering " menutup input pengontrol ke ground melalui pembagi yang dibentuk oleh resistor 1K dan 10K . Dalam hal ini, simpul Input1 akan mengatur unit ke keluaran.
Sebaliknya, jika kontak kering Input1 terbuka, maka sekitar tiga volt dipasok ke input pengontrol, karena input pengontrol ditarik ke tegangan suplai melalui resistor 10K . Dalam hal ini, simpul Input1 akan menetapkan nol pada outputnya.
Semua deskripsi terperinci ini adalah untuk yang penasaran. Pada intinya, kita memiliki yang berikut: jika kita menghubungkan sensor dengan output dari tipe " kontak kering " ke input1 , maka ketika kontak terbuka, output dari simpul Input1 akan menjadi nol, dan ketika kontak ditutup, output dari simpul yang sama akan menjadi satu. Demikian pula untuk input dan node Input2 dan Input3 .
Mari kita beralih ke kontak basah .
" Kontak basah " adalah kontak yang memiliki sumber tegangan sendiri di setidaknya satu dari posisinya. Misalnya, output dari pengontrol atau sirkuit logika lain; saluran listrik bola lampu dan sebagainya. Mungkin ada banyak opsi di sini. Tetapi hampir semua dari mereka secara langsung atau dengan bantuan beberapa detail memungkinkan input biner yang sama Input1,2,3 dengan output perangkat - " kontak basah ".
Mari kita mulai dengan yang paling sederhana - mencocokkan input1 Input dengan output dari sensor atau tipe mikrosirkuit " kolektor terbuka " atau " tiriskan terbuka ".
Bahkan, dalam kasus kami , sirkuit ini sepenuhnya analog dengan menghubungkan sensor dengan output kontak kering . Hanya peran kontak yang dilakukan oleh transistor.
Skema koneksi seperti itu ditunjukkan pada gambar. Inti dari konsep " kolektor terbuka " atau " tiriskan terbuka " adalah bahwa emitor (atau sumber ) dari transistor keluaran terhubung ke " tanah " (sering tepat di dalam rangkaian mikro), dan kolektor (atau tiriskan ) terhubung ke "kaki" rangkaian mikro dan lebih banyak lagi untuk apa-apa.
Cara kerja skema ini dapat dipahami oleh pemula (bukan gas imajiner, tetapi seseorang!). Begitu transistor di dalam rangkaian mikro terbuka, ia menutup input1 Input ke ground dan kemudian semuanya bekerja dengan analogi dengan kontak " kering ".

Sayangnya, tidak semua microchip dan sensor memiliki output luar biasa dengan kolektor terbuka atau tiriskan. Banyak, jika tidak sebagian besar chip dan sensor memiliki output aktif. Ini berarti bahwa ketika kita memiliki unit logis pada output, output "ditarik" ke tegangan suplai, dan ketika nol logis, output "ditarik" ke tanah. Output dari chip tersebut ditunjukkan pada gambar di bawah ini. Tentu saja, semuanya disederhanakan.

Apa yang harus kita lakukan jika rangkaian mikro atau sensor yang ingin kita sambungkan ke Input1 memiliki keluaran aktif?
Ada dua opsi di sini dan mereka bergantung pada nilai tegangan suplai dari sensor mikro atau sensor Vcc .
Jika tegangan suplai chip atau sensor Vcc sama dengan ESP8266 (yaitu, 3 Volts), maka Anda cukup menghubungkan output ini ke input Input1 , yang sebenarnya ditunjukkan pada gambar sebelumnya.
Tetapi bagaimana jika catu daya sensor atau microcircuit adalah + 5V atau + 12V ? Dalam kasus kami, Anda dapat melakukan cukup sederhana dengan menyalakan dioda Schottky, seperti yang ditunjukkan pada gambar di bawah ini.

Dan satu lagi nuansa: semua sirkuit dengan kontak " basah " memberi kita sinyal terbalik . Yaitu, ketika unit logika berada pada output dari sensor atau sirkuit mikro, simpul Input1 akan mengatur output ke nol. Begitu juga sebaliknya. Tapi ini diperbaiki secara pemrograman - cukup masukkan simpul inverter ke dalam rangkaian. Semua ini ditunjukkan pada gambar.

Itu, pada kenyataannya, adalah semua hal dasar yang perlu Anda ketahui tentang menghubungkan sensor ke input biner Input1,2,3 .
Tentu saja, secara teoritis mungkin ada opsi lain, tetapi saya menunjukkan cara paling sederhana dan paling umum untuk menghubungkan sensor dengan output kontak kering dan output aktif tegangan rendah.
Sensasi kontak
Kontak bergetar. Bukan karena takut akan pencipta perangkat, tetapi dari fakta bahwa mereka tangguh. Saat Anda menekan tombol, kontak dapat membuka 5-7 kali sebelum ditutup dengan stabil. Fenomena yang sama terjadi ketika tombol dilepaskan. Dan fenomena ini disebut - " pantulan kontak ."
Bouncing kontak adalah kutukan dari semua sensor kontak mekanis - sakelar, tombol, sakelar buluh, dan sebagainya. Obrolan yang tidak menyenangkan adalah bahwa hal itu menyebabkan klik salah atau rilis tombol atau kontak salah.
Ada beberapa cara untuk menghadapi fenomena yang tidak menyenangkan ini. Mungkin cara tertua untuk bertarung adalah pemicu . Dengan metode ini, tombol dengan kontak switching dan pemicu RS normal digunakan, yang dihidupkan sesuai dengan skema, seperti yang ditunjukkan pada gambar.

Bagaimana cara kerjanya? Sangat sederhana. Pemicu memiliki dua status. Ketika tombol ditutup ke input R dari pemicu, output Q dari pemicu diatur ke nol.
Kami menekan tombol - sampai kontak tengah tombol menyentuh bagian bawah - tidak ada yang berubah, output dari pelatuk adalah nol. Segera setelah kontak tengah tombol menyentuh kontak bawah tombol yang sama dan menutup input pemicu S ke ground, seseorang akan muncul di output pemicu. Dan unit ini tetap ada sementara kontak "rattle". Memang, untuk mengganti output pemicu kembali ke nol, perlu bahwa input pemicu R disingkat menjadi ground! Skema ini bekerja dengan cara yang persis sama ketika Anda melepaskan tombol.
Bisakah kita membuat sirkuit seperti itu di ShIoTiny ? Ya, tidak masalah! Pada gambar ditampilkan.

Tetapi habiskan dua dari tiga input mereka pada satu sensor ?! Selain itu, tidak semua sensor memiliki kontak switching!
Tidak, kita akan pergi ke arah lain, seperti diwariskan, ke semua ahli teori V.I. Ulyanov!
Cara kedua, dan mungkin yang paling umum saat ini, berurusan dengan bouncing kontak adalah filter perangkat lunak .
Apa yang ada di balik kata-kata pintar ini? Dan lagi - tidak ada yang rumit. Bayangkan bahwa kita tidak akan menanggapi perubahan "pendek" dalam status kontak. Misalnya, jika kita membaca nol dari tombol, maka untuk singkat (katakanlah, durasi kurang dari 0,3 detik) unit meledak, kita kami akan palu berhenti bereaksi. Dan hanya ketika kami memiliki tombol selama 0,3 detik akan terus mengeluarkan unit - kami akan menanggapi ini. Hal yang sama ketika mengubah keadaan tombol dari satu ke nol.
β , . . RS-!
? ShIoTiny -, .

Delay0/1 , 0.4 .
, . , , .
Kesimpulan
Sebagai penutup, saya ingin meminta maaf kepada mereka yang artikel ini sepertinya terlalu terperinci - ingat bahwa ada banyak orang di hub yang tidak searif yang Anda alami.
Pada artikel selanjutnya, kita akan memeriksa koneksi sensor dengan sinyal output analog ke input ADC .
Seperti biasa, saran, keinginan, pertanyaan, kesalahan ketik, dll., Melalui email: shiotiny@yandex.ru