Daftar Isi:

TinyLiDAR di Garasi Anda!: 10 Langkah
TinyLiDAR di Garasi Anda!: 10 Langkah

Video: TinyLiDAR di Garasi Anda!: 10 Langkah

Video: TinyLiDAR di Garasi Anda!: 10 Langkah
Video: 10 Бурных Экспедиционных Автомобилей и Внедорожников 2024, November
Anonim
TinyLiDAR di Garasi Anda!
TinyLiDAR di Garasi Anda!

Proyek Pembuka Pintu Garasi WiFi DIY

Dunia IoT baru saja mulai meledak - setiap perusahaan teknologi di seluruh dunia mencoba mencari tahu bagaimana mereka akan cocok dengan dunia baru ini. Ini hanya kesempatan yang besar! Jadi untuk instruksi ini, sesuai dengan tema IoT ini, kami akan membahas bagaimana Anda dapat membuat demonstrator IoT Anda sendiri yang sebenarnya berguna;)

TL; DR ringkasan

  • siapkan alur kerja yang andal untuk mengkodekan modul WiFi ESP32
  • flash itu
  • merakitnya di papan tempat memotong roti Anda
  • unduh kode aplikasi kami dan unzip
  • tambahkan kredensial WiFi & IP statis Anda
  • sambungkan ke jaringan WiFi Anda
  • edit ambang batas dan pasang di garasi Anda
  • sambungkan ke kontak pembuka pintu garasi Anda
  • dan klik!
  • TIDAK DIPERLUKAN SOLDER (kecuali untuk pin ke papan breakout jika diperlukan)

Bagian yang Diperlukan

  • tinyLiDAR modul sensor jarak penerbangan
  • Wipy3.0 atau papan WiFi berbasis ESP32 serupa
  • Relai solid state yang diisolasi secara optik (Omron G3VM-201AY1) untuk mengontrol pembuka pintu garasi
  • Resistor 470ohm (5% 1/8watt atau lebih besar tidak apa-apa)
  • Sakelar tombol tekan sesaat untuk pin BOOT (GPIO0) untuk meningkatkan firmware pada papan ESP32
  • USB to Serial dongle untuk mengupload kode dan berinteraksi dengan REPL pada ESP32 (gunakan versi 3.3v I/O)
  • Papan tempat memotong roti + kabel
  • Catu daya: 3.3V hingga 5V pada 500mA atau lebih besar. Anda dapat menggunakan pengisi daya ponsel microUSB untuk catu daya & papan breakout microUSB untuk dicolokkan ke papan tempat memotong roti Anda.

Langkah 1: IoT Apa?

IoT Apa?
IoT Apa?

Tidak diragukan lagi Anda pernah mendengar istilah IoT di semua media, tapi apa artinya?

Secara longgar itu berarti menghubungkan semua jenis sensor dan hal-hal yang dapat dikontrol ke Internet. Hari-hari ini, Internet identik dengan nirkabel dan dengan demikian kita memiliki segala sesuatu yang elektronik tiba-tiba menjadi nirkabel terhubung melalui semacam link nirkabel seperti WiFi/BT/LoRa/SigFox dll. Setelah terhubung ke Internet, kita dapat merasakan dan/atau mengontrol hal-hal ini dari pengontrol seluler favorit kami seperti ponsel kami atau mengotomatiskannya melalui beberapa aplikasi yang berjalan di server di suatu tempat (yaitu cloud).

Meskipun perusahaan besar telah memasarkan lebih banyak kontrol suara, AI, dan konektivitas cloud belakangan ini; dasar-dasar membuat ini semua terjadi masih sama. Anda perlu menghubungkan "benda" Anda ke tautan nirkabel sebelum salah satu dari konsep ini dimungkinkan. Jadi mari kita mulai dengan dasar-dasarnya dan mempelajari cara menghubungkan sensor jarak terbang waktu tinyLiDAR ke modul WiFi berbiaya rendah dan kemudian menunjukkan cara mengirim data bolak-balik di seluruh jaringan. Pada akhir instruksi ini, Anda akan memiliki remote control pintu garasi berkemampuan WiFi yang berfungsi dengan monitor waktu nyata untuk memeriksa apakah pintu terbuka atau tertutup.

Secara teknis, seperti yang ditunjukkan pada diagram blok di atas, proyek ini mengimplementasikan server web micropython yang berjalan pada modul WiFi ESP32 menggunakan protokol komunikasi 'websockets' untuk meneruskan data dari browser web seluler apa pun. Selain itu, kami memiliki sensor waktu terbang tinyLiDAR yang melakukan pengukuran sesuai permintaan sehingga Anda dapat memeriksa apakah pintu garasi dibiarkan terbuka.

Langkah 2: Cobalah - Tidak Sungguh, Cobalah Sekarang

Cobalah - Tidak Sungguh, Cobalah Sekarang
Cobalah - Tidak Sungguh, Cobalah Sekarang

Ini semua adalah bidang yang relatif baru dalam elektronik sehingga akan ada banyak eksperimen yang diperlukan untuk membuat segala sesuatunya bekerja dengan benar. Harapan kami adalah Anda dapat membangun basis kode ini dan membuat beberapa proyek IoT Anda sendiri yang lebih menarik.

Semua kode yang digunakan dalam artikel ini bekerja dengan baik pada saat penulisan ini. Namun, karena tingkat inovasi di ruang IoT meningkat, banyak hal mungkin telah berubah pada saat Anda membaca ini. Bagaimanapun, mengatasi masalah dan mengadaptasinya untuk penggunaan Anda sendiri setidaknya akan membawa kepala Anda ke ruang baru yang menarik ini dan mulai berpikir seperti Insinyur IoT!

Siap? Mari kita mulai dengan langkah pertama menyiapkan lingkungan pengembangan stabil Anda sendiri.

Langkah 3: Micropython & ESP32

Mikropython & ESP32
Mikropython & ESP32

Modul WiFi ESP32 dibuat oleh Espressif dan telah meningkat pesat sejak modul ESP8266 generasi pertama hanya beberapa tahun yang lalu. Versi baru ini memiliki lebih banyak memori, prosesor yang lebih kuat, dan lebih banyak fitur daripada modul asli dan masih berbiaya rendah. Diagram di atas memberi Anda gambaran seberapa banyak mereka dapat mengemas ke dalam chip ESP32 kecil ini. IC ESP32 sendiri merupakan mikrokontroler dual core dengan radio WiFi 802.11b/g/n dan juga radio Bluetooth 4.2 yang terintegrasi. Modul berbasis ESP32 biasanya akan menambahkan antena, memori FLASH ekstra, dan pengatur daya.

Perhatikan bahwa ketika kami mengatakan modul ESP32 dalam instruksi ini, kami mengacu pada papan Pycom Wipy3.0 yang didasarkan pada chip/modul ESP32. Dalam pengalaman kami, papan Pycom tampaknya memiliki kualitas pembuatan yang lebih tinggi daripada modul ESP32 berbiaya rendah yang tersedia. Saat mengembangkan, selalu membantu untuk mengurangi variabel sebanyak mungkin, jadi kami memilih papan Pycom daripada obat generik berbiaya rendah.

Untuk aplikasi OEM, pengkodean ESP32 biasanya dilakukan dalam bahasa C tetapi untungnya ada juga banyak opsi untuk kami pilih sehingga Anda tidak perlu turun ke level rendah ini jika Anda tidak mau. Kami memilih untuk menggunakan micropython untuk semua pengkodean kami dalam instruksi ini.

Micropython seperti yang Anda duga adalah bagian dari bahasa pemrograman Python lengkap yang mendukung beberapa mesin pencari dan situs web yang kurang dikenal seperti Google, YouTube, dan Instagram;)

Micropython-logo
Micropython-logo

Micropython dimulai sebagai proyek kickstarter awalnya untuk prosesor STM32 tetapi telah menjadi sangat populer untuk banyak mikrokontroler yang berbeda sekarang. Kami menggunakan port micropython Pycom ESP32 resmi terbaru di sini.

Langkah 4: Cara Lebih Cepat

Cara yang Lebih Cepat
Cara yang Lebih Cepat

Kode micropython memiliki GUI ujung depan sederhana yang disebut REPL yang merupakan singkatan dari "Read–Eval–Print Loop". REPL ESP32 biasanya berjalan pada 115.2Kbaud sejak diakses melalui port serial. Gambar di atas menunjukkan prompt REPL ini ditandai dengan tiga panahnya menunggu perintah langsung. Ini adalah cara mudah untuk mencoba perintah sederhana kami dan sebagian besar pembuat kode menggunakannya untuk mengembangkan perangkat lunak mereka, tetapi kami menemukan itu cara yang sangat lambat untuk dilakukan. Oleh karena itu kami memutuskan untuk melakukannya dengan cara yang berbeda untuk instruksi ini…

Karena modul ESP32 memiliki konektivitas WiFi yang cepat, kita hanya perlu mengakses modul melalui WiFi melalui server FTP yang sudah tertanam di dalam kode micropython standar. Ini kemudian akan memungkinkan kita untuk menggunakan klien FTP seperti FileZilla untuk hanya drag dan drop kode kita ke ESP32.

Jadi untuk melakukan ini, kita perlu memasukkan modul ESP32 ke jaringan WiFi Anda terlebih dahulu. Modul Wipy3.0 menjalankan titik akses kecil secara default saat dihidupkan sehingga Anda dapat menghubungkannya langsung dari laptop di 192.168.4.1. Lihat detail lebih lanjut di sini jika Anda menyukai metode ini.

Kami bekerja di desktop di lab kami, jadi kami ingin modul ESP32 terhubung ke jaringan kami. Untuk melakukan ini, kita hanya perlu memberikan modul alamat IP statis dan informasi kata sandi kita untuk masuk ke jaringan WiFi kita.

Langkah 5: Unduh Sekarang

Unduh sekarang
Unduh sekarang
Unduh sekarang
Unduh sekarang
Unduh sekarang
Unduh sekarang
Unduh sekarang
Unduh sekarang

Unduh kode aplikasi sekarang dan unzip file ke folder sementara di komputer Anda. Kemudian mulailah mengedit file skrip mywifi.txt dan boot.py dengan kredensial jaringan WiFi Anda sendiri.

Btw - editor teks favorit kami masih SublimeText. Itu dapat diunduh di sini.

Anda juga harus mengunduh perangkat lunak terminal TeraTerm dan perangkat lunak FileZilla FTP sekarang jika Anda belum memilikinya di komputer Anda.

Anda harus mengatur FileZilla seperti yang ditunjukkan pada gambar di atas. Juga di pengelola situs Anda perlu "menambahkan situs baru" untuk login ESP32 menggunakan alamat IP statis yang Anda pilih seperti yang ditunjukkan di atas. Pengguna adalah "mikro" dan Kata Sandi adalah "python". Penting untuk menggunakan FTP pasif dan membatasinya hanya untuk koneksi tunggal. Kami menemukan bahwa membatasi kecepatan unggah juga membantu untuk mencegah unggahan macet. Meskipun tidak ditampilkan dalam gambar, akan sangat membantu untuk mengaitkan program SublimeText untuk jenis file sehingga Anda dapat mengedit kode dengan mengklik dua kali di sisi kiri layar FTP. Untuk melakukan ini, cukup buka menu Pengaturan dan di Asosiasi pengeditan file/Jenis file masukkan lokasi file exe SublimeText Anda untuk setiap asosiasi. Misalnya milik kita adalah:

js "C:\Sublime Text Build 3065 x64\sublime_text.exe"

. "C:\Sublime Text Build 3065 x64\sublime_text.exe" htm "C:\Sublime Text Build 3065 x64\sublime_text.exe" html "C:\Sublime Text Build 3065 x64\sublime_text.exe" py "C:\Sublime Teks Build 3065 x64\sublime_text.exe" css "C:\Sublime Text Build 3065 x64\sublime_text.exe"

Salin file aplikasi yang diekstrak untuk instruksi ini ke folder baru bernama "FTP" di komputer Anda seperti yang kami lakukan. Akan lebih mudah untuk menyeret dari sini ke dalam FileZilla nanti.

Biasanya merupakan ide bagus untuk menjalankan firmware terbaru pada ESP32. Memutakhirkan modul Pycom untuk menggunakan micropython terbaru sangat sederhana dan dapat dilakukan dalam waktu sekitar 3 menit dengan alat pembaruan firmware mereka.

Pastikan untuk mengatur port COM untuk USB Anda ke dongle Serial dan batalkan pilihan mode kecepatan tinggi seperti yang ditunjukkan pada gambar "Komunikasi" di atas. Kami adalah port COM 2. Perhatikan bahwa untuk memasukkan modul ESP32 ke mode peningkatan ini, Anda harus menekan tombol GPIO0/Boot (pada pin P2) sambil menekan dan melepaskan tombol Reset.

Langkah 6: Waktu Perangkat Keras

Waktu Perangkat Keras
Waktu Perangkat Keras
Waktu Perangkat Keras
Waktu Perangkat Keras

Sekarang akan menjadi saat yang tepat untuk memasang perangkat keras pada papan tempat memotong roti seperti yang ditunjukkan pada diagram skema bergambar di atas.

Setelah ini semua selesai. Jalankan perangkat lunak terminal dengan port COM yang sesuai untuk dongle USB to Serial Anda, atur ke 115.2Kbaud.

Saat dinyalakan, modul akan menampilkan prompt REPL yang sudah dikenal yang memberikan tiga panah ">>>".

Sekarang buka file mywifi.txt yang telah diedit dan salin semua konten (CTRL+C). Kemudian pergi ke layar terminal REPL dan tekan CTRL+E untuk masuk ke mode cut and paste. Anda kemudian klik kanan untuk menempelkan konten ke layar REPL dan kemudian tekan tombol CTRL + D untuk menjalankan apa yang Anda tempel.

Ini harus segera memulai hitungan mundur untuk mengatakan itu mencoba terhubung ke jaringan WiFi Anda. Tangkapan layar di atas menunjukkan pesan koneksi yang berhasil.

Setelah terhubung, Anda dapat menggunakan FileZilla untuk terhubung ke server FTP dalam modul di alamat IP statis yang telah Anda pilih di file mywifi.txt dan boot.py Anda.

Langkah 7: Masih Bersama Kami?

Masih Bersama Kami?
Masih Bersama Kami?
Masih Bersama Kami?
Masih Bersama Kami?

Jika berhasil sejauh ini maka bagus untuk Anda! Kerja keras sudah selesai:) Sekarang akan lancar - hanya banyak potong dan tempel dan Anda akan berdiri dan berjalan sehingga Anda dapat memasangnya di garasi Anda.

Untuk mengedit salah satu kode, Anda dapat mengklik dua kali di sisi kiri jendela FTP di FileZilla dan itu akan meluncurkan SublimeText. Simpan perubahan Anda dan kemudian seret ke sisi kanan yang merupakan jendela ESP32.

Untuk saat ini, cukup seret file dari sisi kiri ke sisi kanan FileZilla untuk mengunggah setiap file secara terpisah ke modul ESP32. Ini hanya membutuhkan beberapa detik, bukan menit seperti metode REPL normal. Harap dicatat bahwa semua file harus berada di bawah direktori root yang disebut "flash" di dalam papan Pycom. Anda dapat membuat bookmark di FileZilla untuk memudahkan Anda kembali ke sini untuk waktu berikutnya.

Jika Anda pernah mendapatkan masalah di mana FileZilla hang dan time out untuk upload, Anda akan melihat file di sisi ESP32 yang memiliki 0 byte. Mencoba untuk menuliskannya dapat membuat Anda gila karena tidak pernah selesai tidak peduli apa yang Anda coba! Ini adalah keadaan yang sangat aneh dan sangat jarang terjadi. Solusi terbaik untuk ini adalah menghapus file 0 byte dan menjalankan siklus daya modul. Kemudian dapatkan salinan FRESH dari file sumber untuk diunggah lagi ke modul ESP32. Perhatikan bahwa salinan baru adalah kuncinya di sini. Entah bagaimana file sumber tidak akan diunggah dengan benar jika hang seperti ini bahkan sekali saja.

Kami merasa terbantu dengan menyeret setiap file satu per satu ke modul ESP32 yang dimulai dengan boot.py. File pertama ini bertanggung jawab untuk memasukkan modul Anda ke jaringan sehingga Anda tidak perlu lagi melakukan cut and paste di REPL. Namun Anda dapat mengambil folder www dan menyeretnya dalam satu kesempatan. Ini selalu berhasil bagi kami dalam pengembangan kami. Semua file ini disimpan di penyimpanan flash non-volatil on-board di modul ESP32 sehingga akan ada di sana setelah daya dimatikan. Hanya fyi - main.py akan dieksekusi setelah boot.py setiap kali modul dinyalakan.

Langkah 8: Tips Meretas

Tip Peretasan
Tip Peretasan

Lihat semua kode dan coba ke Google untuk kata kunci yang tidak Anda kenal. Setelah semuanya aktif dan berjalan, Anda dapat mencoba mengubah apa pun yang Anda inginkan untuk melihat apa yang dilakukannya.

Jika terjadi kesalahan, Anda selalu dapat menghapus kode dan/atau mem-flash ulang modul dalam waktu sekitar 3 menit seperti yang telah Anda lakukan sebelumnya.

Untuk memformat ulang flash dan menghapus semua kode Anda dalam satu kesempatan, Anda dapat mengetik berikut ini di REPL:

impor os

os.mkfs('/flash')

Kemudian lakukan siklus daya atau tekan tombol reset pada papan Wipy.

Perhatikan juga ada cara lain untuk melewati boot.py & main.py jika ada yang mengganggu Anda. Sambungkan sementara pin P12 ke pin output 3.3V dan tekan tombol Reset seperti gambar di atas. Ini akan melewati semua kode Anda dan langsung menuju REPL satu kali sehingga Anda dapat mengetahuinya tanpa menghapus semua kode Anda dari flash.

Setelah selesai mengunggah semua file, cukup tekan tombol Reset pada modul ESP32 untuk mem-boot ulang.

Anda akan melihat hitungan mundur yang sudah dikenal di layar terminal REPL saat masuk ke jaringan WiFi Anda lagi. Perbedaannya adalah kode ini sekarang dijalankan dari file boot.py kali ini.

Langkah 9: Halaman web

Halaman web
Halaman web
Halaman web
Halaman web
Halaman web
Halaman web
Halaman web
Halaman web

Server web mikro harus aktif dan berjalan sekarang di ESP32 jadi cobalah menggunakan browser desktop atau perangkat seluler Anda.

Cukup buka alamat IP statis Anda dan Anda akan melihat layar yang mirip dengan yang di atas.

Ada dua halaman web yang disajikan dari server web mikro kami yang berjalan di ESP32.

Yang pertama adalah halaman index.html default yang memberi Anda tombol OPEN/CLOSE sederhana untuk mensimulasikan jenis clicker pembuka pintu garasi yang Anda miliki. Saat Anda menekannya di browser web Anda, Anda akan melihat ikon roda gigi biru besar muncul. Ini adalah konfirmasi bahwa koneksi websocket berhasil dibuat dan Anda telah menerima pengakuan dari server bahwa perintah "tekan" Anda diterima dengan benar. Anda juga akan melihat lampu LED hijau terang menyala di papan Pycom saat Anda menekan tombol ini. Koneksi soket web mentransmisikan status tombol dengan mengirimkan pesan teks sederhana "tekan" saat Anda menekannya dan "tekan" saat Anda melepaskannya. Sebagai pengakuan, server web mikro mengirim kembali teks ini tetapi menambahkan "_OK" untuk mengatakan bahwa ia menerimanya dengan benar.

Setelah Anda menghubungkan terminal relai keadaan padat (SSR) yang diisolasi secara optik ke pembuka pintu garasi Anda (lihat diagram skema bergambar), maka menekan tombol juga akan membuka/menutup pintu secara fisik.

Berikan beberapa detik dan coba lagi jika Anda tidak melihat ikon roda gigi biru muncul karena mungkin sedang reboot atau semacamnya. Perhatikan bahwa soket web akan menutup secara otomatis dalam waktu sekitar 20 detik jika Anda tidak menggunakannya untuk mencegah penguncian. Perhatikan juga bahwa soket web berorientasi pada koneksi, jadi Anda harus menghentikan soket web untuk mengubah halaman atau Anda mungkin tidak dapat menyambungkan kembali hingga Anda menekan reset pada modul ESP32. Untuk kode contoh kami, kami memiliki beberapa cara untuk menghentikan soket web: ketuk teks status, titik berputar, atau hyperlink untuk membuka halaman berikutnya.

Halaman web kedua adalah untuk membaca pengukuran jarak dari waktu tinyLiDAR dari sensor jarak penerbangan. Cukup tekan tombol sekali dan itu akan mulai mengalirkan pembacaan jarak ke perangkat seluler Anda selama sekitar 20 detik. Saat Anda menekan ke bawah, itu akan menyalakan LED merah di papan Pycom sehingga Anda dapat mengetahui bahwa ia menerima perintah tekan tombol dari halaman ini.

Kedua halaman memberikan indikasi pintu terbuka atau tertutup dengan membaca jarak dari tinyLiDAR. Variabel doorThreshold perlu diatur di kedua file html di bagian skrip seperti yang ditunjukkan di sini:

//--------------------------

//**** Sesuaikan sesuai kebutuhan **** var doorThreshold = 100; // jarak dalam cm var ws_timeout = 20000; // waktu maksimum dalam ms untuk memungkinkan pintu membuka/menutup default adalah 20 detik //-------------------------- //--- -----------------------

Anda harus mengedit ambang batas ini untuk pengaturan garasi Anda sehingga dapat mendeteksi ketika pintu garasi digulung dan oleh karena itu BUKA atau turun dan karena itu TUTUP. Setelah Anda melakukan pengeditan untuk ambang batas Anda di kedua file html, unggah file html ini lagi dan reboot untuk memverifikasi semuanya masih berfungsi dengan baik.

Jika semuanya baik-baik saja, Anda sekarang dapat melanjutkan dan memasang papan terbalik di garasi Anda seperti yang ditunjukkan pada gambar di atas. Pasang pin 3 dan 4 SSR ke pembuka pintu garasi Anda juga. Polaritas tidak penting karena kami menggunakan versi MOSFET dari SSR - hanya perlu mempersingkat kontak untuk mensimulasikan klik tombol pada unit dasar pintu garasi Anda.

Langkah 10: Dan Itu Saja

Dan Itu Saja!
Dan Itu Saja!

Selamat! Membuka pintu garasi Anda sekarang semudah mengetuk ponsel Anda dan Anda dapat memeriksa apakah itu dibiarkan terbuka atau tidak dengan melakukan pengukuran waktu nyata dengan tinyLiDAR:)

Anda juga sekarang dapat menggunakan ESP32 dengan soket web melalui WiFi untuk apa saja yang Anda inginkan. Baca lebih lanjut tentang "websocket" jika Anda tidak terbiasa dengannya - mereka sangat cepat dan mudah digunakan.

Menerapkan tinyLiDAR dengan ESP32 juga sangat mudah meskipun sensor awalnya dirancang untuk berjalan di Arduino UNO. Kami memiliki rilis beta yang lebih rumit dari Terminal GUI yang menjalankan sebagian besar perintah tinyLiDAR di micropython pada ESP32 - lihat gambar di atas. Ini tersedia di bagian unduhan kami bersama dengan manual ref, dll.

Lihat semua kode kami untuk memahami bagaimana semuanya bersatu dan coba ubah banyak hal sehingga Anda dapat membangunnya untuk melakukan apa pun yang Anda inginkan.

Harap diingat bahwa tidak disebutkan keamanan di sini. Keamanan adalah area besar di IoT dan harus ditanggapi dengan serius. Jika Anda ingin menggunakan proyek ini di garasi Anda, Anda harus menjaga kata sandi jaringan WiFi Anda kuat dan aman. Ada banyak informasi di web tentang keamanan jadi pastikan untuk membaca yang terbaru dan tetap mengetahuinya.

Terima kasih telah membaca dan selamat meretas! Bersulang.

Direkomendasikan: