
Halo semuanya! Saya bekerja untuk perusahaan yang mengembangkan peralatan untuk memantau rig minyak, ladang pertambangan, generator diesel dan hal-hal membosankan lainnya. Tapi kali ini kami mengotomatiskan sesuatu yang lain. Jadi, temui: "Masak 3000" - alat untuk menerbitkan kue kepada karyawan terbaik.
Perangkat ini adalah konstruksi yang terbuat dari PVC dan beberapa bagian:
Spiral dengan drive (berfungsi untuk memasok barang), layar, akseptor koin, dan otak seluruh struktur - pengontrol Wiren Board 6.



Layar
Sebagai layar untuk
WB6, saya menggunakan modul layar Nextion (NEXTION ENHANCED NX4832K035).

Modul ini dilengkapi dengan prosesor AVR. Memiliki layar TFT 3,5 '' dengan resolusi 480 * 320, memori internal 32Mb, EEPROM 1024 byte, RAM 8192 byte.
Perangkat ini menyimpan dan menampilkan grafik, menjiwai elemen antarmuka, dan memproses klik. Hanya kode acara yang dikirimkan ke controller melalui UART, yang membuatnya mudah untuk mengkonfigurasi antarmuka dengan berbagai kompleksitas.
Untuk memuat pengaturan yang diperlukan dan grafik ke modul layar, editor visual dari antarmuka Editor Nextion disediakan. Anda dapat mengunduhnya di situs web resmi itead.

Saat membuat proyek baru, Anda harus menentukan model, posisi layar dan pengkodean karakter. Untuk tampilan alfabet Cyrillic yang benar, pilih iso-8859-5.

Di sebelah kiri adalah bilah alat. Di sini Anda dapat menemukan elemen yang paling diperlukan untuk membuat antarmuka.

Mari klik tombol. Tombol bersyarat akan muncul di kotak edit. Regangkan, edit teks dan judul. Untuk menampilkan teks, Anda harus menambahkan font. Kami akan menggunakan alat Pembuat Huruf di tab alat. Di bidang "Acara", Anda harus menulis kode yang akan diputar pada acara tersebut.
Misalnya, jika Anda menulis cetak “tombol ditekan \ r” di tab “Acara pers sentuh”, maka ketika Anda mengklik tombol itu, perangkat akan mengirim ke UART: tombol ditekan dan karakter umpan garis.

Deskripsi dan contoh kode dapat ditemukan dalam dokumentasi untuk layar. Untuk debugging, Anda dapat menggunakan fungsi Debug. Jendela ini memungkinkan Anda untuk menguji semua fungsi firmware sebelum mengisi layar itu sendiri.

Jika semuanya beres, maka Anda dapat menghubungkan display ke komputer melalui adaptor USB / UART dan mengisi firmware dengan mengklik tombol “Unggah”.

Tapi bagaimana kita sekarang berteman dengan WB6?
Anda dapat menghubungkan layar baik melalui adaptor USB \ UART yang sama ke salah satu port USB pada pengontrol, atau langsung ke salah satu slot ekspansi pada papan pengontrol.
Kami tertarik pada pin TX, RX, 5V dan GND.

Setelah menghubungkan layar ke pengontrol, kami akan menerima data acara langsung ke port Serial.
Untuk menanggapi acara-acara ini, mari kita tuliskan skrip kecil yang akan mengirim semua data tentang acara tersebut ke topik MQTT. Pertama, buat file di folder root controller dan beri nama serial.sh
Jika Anda melakukan semuanya dengan benar, maka setelah menjalankan skrip ketika Anda mengklik tombol, di antarmuka web controller Anda akan melihat topik dengan data yang dikirim oleh modul layar.
Pada pengontrol Dewan Wiren, sistem aturan disediakan -
aturan-wb . Aturan dibuat melalui antarmuka web dan ditulis dalam bahasa seperti Javascript sederhana.
Di antarmuka web WB6, buka tab Skrip dan buat skrip baru dengan mengeklik tombol "Baru ...", beri nama "screen_button.js" atau yang lainnya. Selanjutnya, kita akan menulis aturan: Saat mengganti layar / topik mentah (adalah kepadanya kami mengirim data dari layar), tindakan tertentu akan terjadi. Dalam hal ini, ketika Anda mengklik layar, kita akan melihat pesan "Tombol ditekan" di jendela debug antarmuka web:
screen_button.js defineVirtualDevice("screen", {
Bagus Untuk memproses klik pada layar, kami menemukan jawabannya. Sekarang mari kita bicara tentang bagaimana kita mengontrol layar dengan WB6. Misalnya, ubah teks tombol. Layar menerima perintah UART. Daftar dan deskripsi perintah dapat ditemukan di dokumentasi untuk layar.
Untuk menentukan akhir perintah, layar menunggu tiga karakter khusus (\ xff \ xff \ xff). Untuk menyederhanakan tugas di masa depan: buat skrip di folder root bash. Sebut saja text.sh:
Sekarang, untuk mengubah teks tombol, kita hanya perlu memanggil skrip dengan argumen:
bash /mnt/data/root/text.sh -a b0 -b 'Some Text'
Di mana b0 adalah nama tombol di layar, dan Some Text adalah teks yang diinginkan.
Contoh menggunakan mesin aturan WB6:
var txt1 = "some text"; runShellCommand("bash /mnt/data/root/text.sh -a b0 -b '" + txt1+ "'");
Demikian pula, Anda dapat mengubah halaman yang saat ini ditampilkan di layar, teks pada berbagai elemen, variabel, dan parameter lainnya. Saya tidak akan melukis di sini semua fungsi modul layar. Informasi yang sudah ditulis di atas cukup memadai untuk proyek kami.
Akseptor koin
Sebagai akseptor koin, saya menggunakan versi China, yang ditemukan di hamparan Aliexpress seharga 400 rubel.
Dengan koneksi, semuanya sederhana. + 12v dan output pulsa dihubungkan ke modul ekstensi Kontak Kering
WBE2-DI-DR-3 . Selanjutnya, untuk menentukan koin, kita hanya perlu menghitung impuls. Untuk melakukan ini, buat skrip baru di mesin aturan:
money.js var timeout_ms = 1 * 200; var timer_id = null; var timerTime = Date.now(); var timerLast = 0; var countMoney = 0; defineRule("money", { whenChanged: "wb-gpio/MOD1_IN2", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now() if ((timerLast - timerTime) >= 500) {
Aturan yang cukup sederhana. Mungkin bukan yang paling akurat.
Bitrix24
Sekarang, mungkin yang paling menarik. Mari kita coba mencari cara menerjemahkan kalimat "Bagus sekali. Ambil kue dari rak. " Perusahaan kami menggunakan sistem Bitrix24 sebagai CRM. Idenya adalah bahwa untuk setiap tugas yang diselesaikan (Tugas) dalam bitrix, karyawan menerima beberapa poin elektronik. Poin yang sama ini dapat digunakan sebagai mata uang untuk perangkat kami. Mari kita cari tahu bagaimana cara terhubung ke Bitrix24 dan memantau kesuksesan karyawan.

Kami akan menggunakan bitrix24-python-sdk sebagai dasarnya.
Instal SDK pada pengontrol dengan perintah
pip install bitrix24-python-sdk
Selanjutnya, buat skrip python di folder root, sebut saja bitrix.py:
Skrip ini meminta semua tugas yang diselesaikan dari daftar pengguna tertentu, mempertimbangkannya dan mengirimkan nomor ke topik di mqtt. Selanjutnya, kita hanya bisa membandingkan jumlah yang diperoleh dengan nilai sebelumnya dan jika data baru lebih banyak, maka tambahkan poin ke karyawan untuk pekerjaan yang dilakukan.
Bluetooth
Untuk memindai perangkat BLE saya menggunakan Bluez. Program sudah diinstal pada controller. Untuk memindai perangkat baru, cukup masukkan beberapa perintah ke konsol:
hciconfig hci0 up hcitool lescan
Namun, ini tidak cukup bagi kami. Dianjurkan untuk melihat level sinyal. Untuk melakukan ini, instal utilitas hcidump tambahan:
apt-get install bluez-hcidump
Dan melengkapi tim kami:
hciconfig hci0 up hcitool lescan --duplicates | hcidump -a | grep -E 'bdaddr|RSSI'
Pada output kami mendapatkan alamat MAC dan perangkat RSSI bluetooth (ble) terdekat.

Dua baris ini dapat dibungkus dengan indah dalam skrip bash, dan hasilnya dikirim ke MQTT.
Cara kedua
adalah skrip
aioblescanIni membutuhkan Python 3 untuk bekerja, lebih disukai 3.5. Keuntungan dari skrip ini adalah Anda dapat memonitor alamat MAC tertentu, dan tidak semua jam tangan pintar dan ponsel pintar melewati jendela. Keluaran skrip juga dialihkan ke MQTT, untuk kenyamanan bekerja dengan mesin aturan.

Sekarang kita tahu bagaimana berinteraksi dengan WB6 menggunakan modul layar, kita dapat menghitung koin, memantau keberhasilan karyawan dalam Bitrix, memindai perangkat dan level sinyal mereka. Masih mengumpulkan ini dalam satu tumpukan dan meresepkan semacam logika. Saya tidak akan melukis semua skrip untuk proyek ini. Semuanya akan tersedia di tautan di domain publik. Mungkin salah satu dari Anda akan menemukan aplikasi yang lebih berguna dan pintar untuk ini.
Perumahan
Tubuh terbuat dari 10mm berbusa PVC. Plastik tersebut dijual dalam lembaran. Cukup lunak. Anda dapat memotong dengan gergaji besi, atau dengan pisau klerikal biasa pada penggaris.

Sebagai pengikat, set anak-anak bagian logam "Konstruktor" dan sekrup self-tapping pendek digunakan. Dalam kit ini, hampir semuanya dibutuhkan untuk merakit case.

Berkendara
Spiral dan drive dibeli di aplikasi B \ U toko online. suku cadang untuk mesin penjual otomatis. Didukung oleh catu daya 24v. Terhubung melalui relay dari modul ekspansi
WBE2-DO-R6C-1 .

Fungsional
Secara fungsional mirip dengan mesin penjual otomatis. Memberikan kue untuk uang dan tidak hanya.

Saat perangkat dinyalakan, layar menampilkan splash screen dengan logo, lalu beralih ke layar utama, tempat kami ditawari untuk membeli cookie atau bermain game.
Gim untuk pengguna gratis, tetapi Anda dapat menetapkan harga kecil untuk motivasi. Aturannya sederhana. Pemain ditawari untuk memecahkan tiga masalah sederhana. Jika dia memberikan tiga jawaban yang benar, dia menerima hadiah dalam bentuk cookie. Mungkin ini yang perlu Anda ketahui tentang item ini. Mari kita kembali ke menu utama dan klik "Beli Cookie".
Selanjutnya, sistem akan meminta Anda untuk memilih metode pembayaran. Saat memilih metode pembayaran "Untuk Uang", sebuah jendela muncul di layar dengan harga dan jumlah yang dibayarkan, yang meningkat ketika Anda menyetor uang ke dalam akseptor koin.
Segera setelah jumlahnya cukup untuk melakukan pembelian, perangkat akan secara otomatis menutup jendela ini dan membagikan barang.
Tetapi, seperti yang saya katakan sebelumnya, mata uang lain juga disediakan - ini adalah poin yang diterima untuk keberhasilan karyawan dalam sistem Bitrix24. Jika seorang karyawan menutup tugas yang diberikan kepadanya, poin diberikan kepadanya. Juga, poin dapat diberikan kepada bos untuk hasil yang sangat baik.




Untuk melunasi poin, karyawan harus memilih item "Beli untuk poin." Kemudian perangkat akan mencoba menentukan siapa yang berdiri di depannya. Untuk melakukan ini, ia memindai perangkat Bluetooth di sekitarnya dan jika ia melihat alamat MAC perangkat milik karyawan dan masuk ke dalam basis data, serta tingkat sinyal cukup kuat untuk menganggap bahwa ia berdiri di dekatnya, data pada status akun karyawan akan muncul di layar, itu nama dan penawaran untuk membayar cookie dengan poin.
Jika sistem tidak dapat menentukan satu perangkat yang dikenal, maka ia akan mengeluarkan peringatan dan menawarkan untuk memilih nama Anda dari daftar dan kemudian memasukkan kode PIN Anda.
Dalam hal entri yang benar, jendela yang sama terbuka dengan data tentang status akun pengguna dan biaya produk. Ketika pembelian dikonfirmasi, jumlah poin yang diperlukan didebet dari akun pengguna dan perangkat mengeluarkan barang.
Itu saja. Proyek ini dibuat khusus untuk tujuan pendidikan, dan untuk menunjukkan bahwa aplikasi pengontrol Dewan Wiren hanya dibatasi oleh imajinasi. Semua file dan skrip dapat ditemukan di
tautan .