
Poin-poin penting atau tentang artikel ini
Karena minat orang berbeda, dan orang punya sedikit waktu, maka secara singkat tentang isi artikel.
Artikel ini adalah tinjauan umum proyek pengontrol dengan harga minimum dan kemungkinan pemrograman visual melalui browser WEB.
Karena ini adalah artikel ulasan yang ditujukan untuk menunjukkan "apa yang dapat diperas dari pengontrol sen," Anda tidak harus mencari kebenaran yang mendalam dan algoritma terperinci di dalamnya.
Motivasi, ide dan hasil membangun pengontrol berbasis pada chip WiFI ESP8266 dipertimbangkan.
Peringatan
Saya tidak ingin menulis artikel ini. Saya bukan penggemar menulis artikel sama sekali. Perlu untuk berpikir dan terlebih lagi - banyak. Memikirkan cara menulis sehingga jumlah yang disalahpahami diminimalkan. Berpikir bagaimana untuk tidak terlalu ekstrem. Dan banyak lagi yang harus dipikirkan.
Tetapi teman-teman mengatakan bahwa karena upaya saya di bidang IoT dan otomatisasi kecil lainnya menarik bagi mereka, maka mereka dapat menarik bagi orang lain kepada masyarakat umum. Nah, kemana perginya audiens yang tertarik dengan ini? Tentu saja, pada habr. Dan inilah saya. Pembaca lama dan penulis baru.
Untuk kesalahan, ketidakakuratan, kesalahan ketik, gaya presentasi non-modern, dll. Yang mungkin tidak disukai pembaca, saya tidak bertanggung jawab. Baca dengan risiko Anda sendiri.
Saya juga segera memperingatkan bahwa saya tidak akan menjelaskan apa MQTT, WiFi dan multicast UDP dan hal-hal lain yang tidak terkait langsung dengan topik. Beberapa tautan ada di akhir artikel.
Kelahiran ide atau lirik
Yah, hidup bukanlah hal yang sederhana, dan Kesempatan Mulia memainkan peran penting di dalamnya. Jadi saya ingin berbagi bagaimana peristiwa acak, dikalikan dengan kemalasan biasa, menghasilkan desain pengontrol yang agak menarik berdasarkan ESP8266.
Semuanya dimulai dengan santai: Saya ingin membangun sistem kontrol untuk sistem pasokan air dan menyirami taman di desa.
Tetapi tentang, karena saya dapat sepenuhnya terlibat dalam crane pipa-pipa hanya pada liburan, sebelum bahkan ada lebih dari enam bulan - semuanya terbatas pada diskusi di tempat kerja dengan rekan dan kawan-kawan dalam suasana informal.
Topik "otomatisasi kecil" atau, seperti biasa dikatakan dalam "ini anak sekolah-peretas-peretas Anda" - topik IoT - Internet hal - telah lama menarik bagi saya. Jauh sebelum munculnya Internet seperti itu digunakan secara luas.
Bahkan di masa kanak-kanak, saya ingin hal-hal melakukan sesuatu "sendiri." Dan diharapkan bahwa saya dapat mengendalikan mereka entah bagaimana dari kejauhan. Tetapi pada waktu itu (tahun 80-an, awal tahun 90-an dari milenium terakhir) ini sulit. Internet tidak tersedia secara luas di mana pun di dunia, karena tidak ada tempat dan telepon seluler, tablet, dan bahkan layar LCD dan USB-flash drive. Jadi saya harus membatasi diri pada "sakelar lampu pada tepukan" dan kendali jarak jauh radio yang paling sederhana. Tetapi untuk saat itu dan usia itu, itu bagus dan menarik.
Tapi ini masa lalu. Nonche di halaman abad XXI Dan setiap orang memiliki smartphone di saku mereka, Internet hampir di mana-mana di mana diperlukan dan tidak perlu, dan database komponen elektronik yang tersedia sekarang sedemikian rupa sehingga 15 tahun yang lalu penghuni biasa planet Bumi bahkan tidak memimpikannya.
Karena itu, setelah memutuskan untuk membuat pengontrol untuk urusan air di negara ini, saya mengalihkan pandangan ke chip ESP8266.
Pertama, chip ini murah. Dan jika satu kontroler tidak cukup - Anda dapat menempatkan dua, tiga atau lima. Kedua, ada WiFi di dalamnya. Artinya, Anda dapat menonton apa yang terjadi melalui Internet dan bahkan mengontrol proses dari smartphone apa pun. Tentu saja, Anda memerlukan titik akses dengan akses Internet, tetapi ini bukan masalah. Lagi pula, hampir di mana-mana, atau akan, termasuk - dan di rumah negara saya.
Setelah terjun ke dunia indah proyek untuk ESP8266, saya terkejut menemukan bahwa, terlepas dari kemampuan luar biasa dari chip ini, proyek di atasnya, dengan pengecualian langka, dibagi menjadi dua jenis: ini adalah program yang sangat primitif seperti "klik pada gulungan dari smartphone dan lihat keadaan." sensor suhu melalui Internet ”; atau penerjemah yang baik dan solid dari JavaScript atau Lua, tetapi sayangnya, mereka menghabiskan hampir semua memori dan tidak memungkinkan Anda untuk melakukan sesuatu yang serius.
Gagasan pertama saya adalah sesederhana pancake - untuk menulis program kontrol pompa sederhana berdasarkan status sensor dan itu saja. Tapi, seperti kalach abon dalam hal melompat di penggaruk memperkenalkan sistem yang berbeda, saya menyadari bahwa saya pasti tidak akan dapat melihat semua tikungan dari algoritma yang saya ingin atau perlu diluruskan selama pembangunan sistem irigasi pasokan air.
D mengerjakan program di negara ini, di gudang gelap - sangat tidak nyaman. Dan kamu harus.
Apa jalan keluarnya? Tentu saja, hal pertama yang muncul di benak saya adalah membuat algoritme yang dapat disesuaikan. Salah satu kolega saya memberikan banyak saran - apa yang harus dikonfigurasi dan bagaimana caranya. Dengan ini, dia memotong ide pertamaku sejak awal. Terima kasih padanya. Jika dia tidak menyebarkan sejumlah parameter yang perlu saya konfigurasi di depan mata saya, saya mungkin tidak akan menolak opsi ini: buat halaman pengaturan algoritma.
Tetapi gambaran yang menakutkan tentang jumlah parameter penyetelan, dan bahkan saling memengaruhi - membuat saya sadar. Sekali lagi, saya menyadari bahwa tidak ada yang bisa diramalkan ...
Saya akan segera memesan: Saya malas. Sangat malas! Terus terang saya malas menulis ulang program setiap saat. Oleh karena itu, tugas muncul - bagaimana cara mengatur algoritma dengan cepat dan mudah, lebih disukai tanpa pemrograman? Selain itu, algoritma ini akan sangat rumit; akan memiliki banyak parameter; Ini akan bersifat individual untuk kasus saya dan tidak cocok untuk orang lain. Dan saya benar-benar ingin membuat perangkat ini lebih atau kurang universal ...
Karena masih ada sekitar enam bulan sebelum liburan dan semua pekerjaan pipa, saya memutuskan untuk meluangkan waktu untuk berpikir: bagaimana cara membuatnya nyaman dan indah? Bagaimana cara memprogram tanpa pemrograman? Bagaimana melakukannya tanpa satu triliun parameter yang dapat diubah saat pengaturan?
Seperti biasa, semuanya sudah dipikirkan di depan kita: Saya menyadari bahwa saya ingin menggambar sebuah algoritma dalam bentuk kuadrat aksi dan menghubungkannya dengan jalur komunikasi yang menunjukkan dari mana dan dari mana data itu terbang. Nah, menyodok dalam kotak, saya ingin dapat mengkonfigurasi beberapa parameter individualnya.
Dan tindakan pengaturan algoritma, menggambar dengan kuadrat bukanlah hal baru. Sistem seperti itu kembali di tahun 80-an; ada sistem NodeRed yang sangat populer yang terkenal bagi mereka yang telah bergabung dengan dunia otomatisasi kecil / IoT.
Tapi ini nasib buruk: sistem seperti itu dirancang untuk "PC besar". Paling buruk, pada Raspberry PI. Tetapi tidak sama sekali pada ESP8266, yang hanya memiliki beberapa puluh kilobyte RAM dan tidak ada OS!
Bagaimana menjadi? Dan hanya ada dua jalan keluar: untuk menulis-menggambar sebuah program pada "PC besar" atau laptop, dan kemudian mentransfernya dalam beberapa bentuk ke ESP8266 atau mencoba untuk "menjejalkan yang tidak diinginkan" ke dalam pengontrol ESP8266 itu sendiri.
Oleh karena itu, program maksimum yang saya miliki adalah ini: untuk memprogram pengontrol Anda, seharusnya tidak perlu apa pun kecuali laptop dengan browser WEB! Yaitu, laptop dengan browser WEB dan pengontrol saya - ini harus cukup untuk sepenuhnya mengkonfigurasi dan menulis program kontrol menggambar.
Dan , ternyata, sangat mungkin untuk menyadari ini!
Saya tidak akan membuat Anda bosan dengan semua detail pengembangan proyek. Saya hanya dapat mengatakan bahwa berdasarkan kata-kata yang muncul di benak dan bahasa saya selama proses pengembangan, akan mungkin untuk menyusun " Kamus Senonoh Kata-kata Pengganti Pekerja Elektronik " yang terpisah. Tapi semuanya ada di belakang. Lebih tepatnya, tidak semua, tetapi tahap pertama, yang paling sulit, ketika tidak jelas - apakah ide Anda adalah untuk hidup atau itu hanya omong kosong kebiri pada malam yang diterangi cahaya bulan.
Saya akan membagikan hasil dari apa yang keluar dan disebut "ShIoTiny Controller" .
Dan apa yang terjadi?
Perangkat keras pengontrol ShIoTiny standar dan sederhana: tiga input dirancang untuk sensor kontak kering (tombol, sakelar buluh, mereka juga sensor level air dalam tangki), satu input ADC, satu input untuk menghubungkan sensor suhu dan kelembaban seperti DHT22 atau serupa . Dan akhirnya, tiga output dalam bentuk relay switching untuk 220V, 1 Amp. Relay mengatakan 10A, tetapi saya adalah seorang realis dan saya tidak akan membiarkan mereka melalui papan amp 10A. Dan untuk mengontrol starter pompa dan 1 Amp sudah cukup. Semua ini ditenagai dari sumber listrik dengan tegangan 5 hingga 9 volt.
Tentu saja, saya menambahkan sensor suhu seperti "Schaub was", tetapi pada ADC ada harapan untuk mengukur tegangan listrik. Apakah itu tidak cukup?
Tentu saja, semua input, kecuali input untuk menghubungkan DHT22, memiliki perlindungan dari resistor dan dioda: Saya tidak punya keinginan untuk membakar ESP8266, dan dioda dan resistor harganya hanya beberapa sen.
Foto produk jadi dapat dilihat di awal artikel. Saya memesan beberapa papan ini - bagaimana jika saya membakarnya atau haruskah saya memotong jalan dan kaki?
Tapi, untungnya - tidak harus.
Produk ini tentu saja keindahan dan kebesaran. Tetapi untuk kenyamanan, berikut ini adalah diagram gambar koneksi ke papan simulator sensor dan aktuator.

Di tempat sensor level - tombol Input1..3, alih-alih starter - LED terhubung ke relai Relay1..3. Nah, resistor variabel pada ADC untuk mensimulasikan tegangan input.
Saat relai mati, LED merah menyala. Dan ketika dihidupkan - hijau. Jadi saya debugged di atas meja.
Selain semua ini, ada konektor daya di sebelah kiri papan dan dua tombol layanan di sebelah kanan: Reset dan AP. Nah, saklar DIP yang menempatkan perangkat ke mode pemrograman. Konektor pemrograman ESP8266 melalui adaptor USB-UART juga tersedia.
Beberapa penjelasan untuk tombolnya. Apa itu Reset - dan jadi jelas. Tetapi tombol AP diperlukan untuk memasukkan ShIoTiny ke mode titik akses terbuka (mode konfigurasi atau Mode Konfigurasi). Mengapa ini dibutuhkan? Yah, misalnya, Anda mengacaukan pengaturan jaringan dan ingin mengubahnya. Tekan tombol AP selama beberapa detik (sampai LED biru yang indah menyala). Kemudian, ambil ponsel cerdas atau laptop Anda, nyalakan WiFi dan lihat ada titik akses terbuka dengan nama esp_8266_xxxx dan sambungkan ke sana. Lalu buka browser ponsel cerdas atau laptop Anda dan ketikkan bilah alamat: 192.168.4.1. Jika semuanya beres, maka Anda akan dibawa ke halaman pengontrol ShIoTiny dan Anda dapat mengkonfigurasinya dengan cara yang baru.
Seperti yang kita lihat, perangkat keras bukanlah hal yang rumit. Karena itu, tentang bagian perangkat lunak .
Dalam semua implementasi hop, saya akan jelaskan, tapi kemudian. Suatu hari nanti. Dan hari ini saya akan menganggap perangkat lunak hanya "di luar", yaitu, dari sudut pandang pengguna - saya sendiri atau orang lain yang berani menggunakan kerajinan saya (ada stuntmen semacam itu).
Dari sudut pandang pengguna, perangkat adalah server HTTP yang dapat diakses melalui WiFi. Semua pengaturan, pemrograman, dan sebagainya - dilakukan menggunakan browser WEB.
Jadi, kami pergi ke halaman controller. Apa yang kita lihat Dan kita melihat tab "Kontrol dan status", yang menunjukkan status saat ini dari perangkat yang digunakan: input, output, ADC, DHT22. Selain itu, parameter koneksi ke titik akses ditampilkan (jika kita bekerja dalam mode stasiun WiFi); pengaturan titik akses (jika kita bekerja dalam mode titik akses WiFi) atau keduanya. Selain itu, parameter koneksi dengan broker MQTT ditampilkan jika protokol MQTT digunakan.

Untuk melihat, tidak ada yang istimewa dan menarik. Tidak ada yang ditekan! Meskipun ... Ada dua tab lagi! Mengkonfigurasi pengaturan jaringan Jaringan dan skema diagram editor ElDraw .
Anda dapat menebaknya, Jaringan membuat jaringan, tetapi tidak hanya itu. Ini memiliki beberapa parameter yang lebih menarik. "Poke" pada tab Networking dan lihat di sana kira-kira apa yang ditunjukkan pada gambar.
Mengkonfigurasi nama titik akses dan kata sandi untuk masing-masing mode - Stasiun WiFi dan titik akses WiFi. Segalanya tampak jelas. Serta tujuan dari tombol Pindai WiFi, itu sepenuhnya transparan.
Tetapi daftar drop-down "mode ShIoTiny" memerlukan klarifikasi. Faktanya adalah saya tidak bisa memutuskan mode apa yang lebih nyaman bagi saya untuk bekerja. Dan karena itu, disediakan untuk 5 mode operasi perangkat.

Kami mencantumkan secara singkat mode operasi ini.
Mode konfigurasi - mode konfigurasi. Ini adalah mode titik akses terbuka dengan alamat tetap 192.168.4.1 dan nama esp_8266_xxxx.
Mode stasiun - mode stasiun WiFi yang terhubung ke titik akses Anda.
Mode AP - mode titik akses tertutup. Anda mengatur sendiri nama dan kata sandi.
Mode AP + Station adalah penyertaan simultan mode AP + mode Stasiun.
Mode tunggal - berfungsi tanpa menghubungkan ke jaringan sama sekali. Pengontrol tunggal yang membawa ...
Dalam mode apa pun, kecuali untuk "mode Konfigurasi" , Anda dapat memblokir halaman WEB dengan mencentang kotak centang "Kunci Web dalam mode Stasiun" . Ini adalah tipe untuk alasan keamanan.
Pengaturannya jelas-MQTT: server, port, kata sandi, koneksi terbuka atau SSL . Saya tidak akan tinggal di sini secara detail.
Selain yang lainnya, pengontrol ShIoTiny dapat mengirim dan menerima paket dalam format khusus untuk multicast. Pengaturannya juga jelas: alamat grup dan porta.
Tentu saja, jika Anda menggambarkan semua nuansa pengaturan, Anda mendapatkan artikel terpisah, tetapi ini tidak termasuk dalam rencana saya.
Jadi, dengan tab Networking , semuanya lebih atau kurang jelas. Mari kita beralih ke fitur utama controller - editor program ElDraw .
Dengan mengetuk tab ElDraw, kita melihat sesuatu seperti berikut ini. Tentu saja, jika perangkat tidak memiliki sirkuit yang dimuat, maka bidang sirkuit akan kosong.

Di sebelah kiri adalah palet elemen atau node (node).
Di sebelah kanan, bidang diagram atau sekadar "diagram".
Dari tombol atas untuk memuat dan membongkar ke disk dan ke perangkat, serta tombol untuk mengedit.
Bagi mereka yang telah bekerja dengan editor, manajemen pada umumnya jelas. Kita perlu menambahkan elemen ke diagram - bawa dengan mouse dan seret dari palet ke diagram. Penting untuk menghapus elemen atau tautan dari diagram - colek di atasnya atau di atasnya dengan mouse dan tekan tombol DEL . Kita perlu menghubungkan elemen - kita mengambil input dari satu elemen dan menghubungkannya ke output yang lain.
Masih ada penskalaan (SHIFT + roda mouse). Sayangnya, tidak ada cara untuk menyalin elemen dan grup elemen. Tapi ini tidak terlalu mengganggu.
Selain itu, untuk alasan logika, input dari sebuah node hanya dapat dihubungkan ke satu output dari node lain. Tetapi output node adalah dengan beberapa input dari node lain. Input selalu di sebelah kiri node. Output selalu di sebelah kanan.
Kemampuan apa yang kita miliki untuk mengimplementasikan algoritma?
Dalam peluang - cukup luas. Palet berisi node yang mewakili semua perangkat keras pengontrol ShIoTiny : input, relay, ADC, DHT11 / 22.
Ada node logis dan aritmatika untuk pemrosesan data.
Agar kami dapat bekerja dengan perangkat melalui Internet, ada simpul untuk berlangganan dan menerbitkan parameter ke broker MQTT.
Jika kami ingin beberapa pengontrol ShIoTiny saling bertukar informasi - Anda dapat menggunakan node untuk mengirim dan menerima parameter menggunakan protokol multicast UDP.
Untuk rum ini, ada node timer; node kontrol manajemen acara.
Saya akan memberikan beberapa contoh. Misalnya, apakah Anda ingin data suhu dan kelembaban dipublikasikan setiap 30 menit pada server MQTT? Tidak ada yang lebih mudah. Gambarlah seperti itu.

Nah tombol meme "Unggah". Itu saja!
Jika Anda telah mengkonfigurasi koneksi dengan broker MQTT dengan benar pada tab Networking, itu saja!
Setiap setengah jam, suhu akan dipublikasikan pada broker di bawah topik / T, dan kelembaban - di bawah topik / H. Atau, jika Anda bertanya nama topik Anda, maka di bawahnya.
Pertanyaan: Mengapa 18.000 30 menit? Karena semua waktu diukur dalam sepersepuluh detik.
Sekarang Anda ingin menambahkan ke rangkaian ini kemampuan untuk mengaktifkan Relay1 melalui Internet, dan bahkan untuk waktu tertentu? Tidak masalah Buat seperti itu.

Sekitar lima, klik tombol "Unggah". Itu saja! Sekarang, selain fakta bahwa setiap setengah jam, suhu dan kelembaban akan dipublikasikan di broker MQTT, akan dimungkinkan untuk menghidupkan relay Relay1. Ya, tidak hanya menyalakannya, tetapi tepat 10 menit. Anda dapat mengaktifkan relai dengan menerbitkan topik / r1cmd, setel ke 1. Dan status relai yang sebenarnya akan dipublikasikan dalam topik / r1status.
Dalam apakah saya ingin tidak hanya menyalakan, tetapi juga mematikan relay sebelumnya? Ya, seperti yang Anda katakan. Gambar di bawah ini menunjukkan cara melakukannya!

Apakah prinsipnya jelas? Anda cukup menggambar algoritme dengan mouse! Dan tulis sedikit pengaturan: waktu, nama topik dan semua. Ini jauh lebih jelas daripada menulis banyak kode.
Omong-omong , menyoroti tautan dalam berbagai warna bukanlah "photoshop" - ini adalah salah satu fungsi editor. Anda dapat mewarnai tautan yang diinginkan, agar tidak bingung di dalamnya.
Tapi oh, dan itu belum semuanya! Untuk men-debug algoritma, ada tombol "Monitor start". Aneh seperti yang terlihat, ternyata pada mode "monitor". Dalam mode ini, keadaan semua output dari semua node secara berkala dibaca dari pengontrol ShIoTiny dan ditampilkan di sirkuit. Kira-kira seperti pada gambar di bawah ini.

Yaitu, kita dapat melihat “hampir waktu nyata” apa yang kita miliki pada input dan output dari setiap node. Ini sangat membantu ketika ada sesuatu yang tidak jelas.
Masih ada banyak "keripik dan fitur" yang ingin saya gambarkan, dan hati nurani saya tidak akan mengizinkan Anda untuk menghabiskan waktu Anda menggunakannya dalam satu artikel. Gagasan terwujud utama sudah jelas: minimum parameter yang dapat dikonfigurasi - maksimum visibilitas.
Terbang di salep
Tentu saja, saya ingin tidak ada lalat di salep, tetapi dunia tidak sempurna. Editor dan pengontrol saya tidak sempurna. Saya menemukan dua fitur utama yang belum dapat saya hilangkan.
Pertama, kadang-kadang gangguan terjadi selama pergerakan elemen kelompok. Tapi ini tidak terlalu mengganggu pekerjaan. Lebih mungkin fitur daripada bug.
Dan kedua, dalam kondisi tertentu, setelah memuat rangkaian ke perangkat menggunakan tombol "Unggah", restart. Ini tidak mengganggu kehidupan, tetapi halaman editor perlu diperbarui.
Kesimpulan
Saya harap Anda menyukai ide menggambar algoritma daripada menulis program. Ini adalah bagaimana pemikiran acak, ide, dan argumen kadang-kadang menimbulkan perkembangan yang layak untuk diri mereka sendiri.
Tetapi tentang, menurut pendapat saya, volume artikel telah melampaui semua batasan yang masuk akal. Jadi saya selesai hari ini.
, « ».
— : shiotiny@yandex.ru
, , , .
, .
,
ShIoTiny
ESP8266
WiFi
MQTT
UDP Multicast
().
https://github.com/shiotiny/ShIoTinyBin
: https://github.com/shiotiny/ShIoTinyBin/blob/master/bin/esp-07-shiotiny.bin
: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/esp-07-shiotiny.png
: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-01_obzor.pdf
" " .