Iklan
Wi-Fi adalah paket penting untuk setiap proyek Internet of Things (IoT) DIY, tetapi Arduino favorit kami tidak datang dengan Wi-Fi, dan menambahkan perisai Wi-Fi dapat membawa total biaya sekitar $ 40. Bagaimana jika saya memberi tahu Anda bahwa ada papan dev yang kompatibel dengan Arduino dengan Wi-Fi bawaan kurang dari $ 10? Ya ada.
Temui Pembunuh Arduino: ESP8266. Hanya masalah waktu sebelum mahkota dicuri dari kepala papan pengembangan Arduino kita yang mengkilap. Apakah mungkin jatuh cinta dengan papan sirkuit?
Selain nama-nama yang menarik, ESP8266 (juga dikenal sebagai NodeMCU) awalnya dipasarkan sebagai add-on Wi-Fi berbiaya rendah untuk papan Arduino, sampai komunitas peretas menyadari Anda dapat memotong Arduino dari persamaan sepenuhnya.
Dalam waktu kurang dari setahun, ESP8266 telah meroket dalam popularitas, dan sekarang didukung dan dikembangkan dengan sangat baik sehingga jika Anda saat ini menggunakan Arduino, Anda harus berdiri dan mencatat. Beli satu sekarang, kemudian ikuti bersama dengan panduan ini untuk memulai pemrograman ESP8266 Anda - semuanya dari dalam IDE Arduino yang Anda kenal.
Anda tidak terbatas untuk menggunakan IDE Arduino tentu saja - mereka juga kompatibel dengan Lua (yang terlihat seperti Python yang diperkecil menurut saya mata pemula), tetapi karena kita menangani ini dari perspektif mereka yang telah kita pelajari di Arduino, itulah yang akan kita bahas secara eksklusif hari ini.
Ada beberapa model ESP8266 di sekitar sekarang, tetapi saya akan melanjutkan dan merekomendasikan yang ini: ESP-12E (juga dikenal sebagai NodeMCU 1.0, atau saudara kandungnya yang terbaru NodeMCU 2.0).
Ini sedikit lebih mahal daripada yang lain ($ 6,50 dibandingkan dengan $ 4!), Tetapi termasuk driver serial yang diperlukan untuk memprogram chip, dan memiliki regulator daya built-in, serta banyak pin IO. Ini didukung secara luas dan benar-benar tidak memerlukan apa pun selain koneksi USB untuk pemrograman atau daya, jadi ini yang termudah untuk bekerja dengannya. Jika Anda membeli jenis papan ESP8266 lainnya, Anda mungkin memerlukan pengatur daya 3.3v terpisah, dan koneksi FTDI yang sesuai untuk pemrograman.
Memulai dengan ESP8266-12E dan Arduino
Pertama, instal driver serial untuk papan ini. Anda mungkin perlu nonaktifkan penandatanganan KEXT jika Anda menjalankan El Capitan karena sistem keamanan baru.
Selanjutnya, kita perlu mengaktifkan dukungan untuk ESP8266 dari manajer dewan Arduino IDE. Buka Preferensi, dan masukkan URL berikut ini di mana dikatakan URL Dewan Manajer tambahan:
Tekan Ok, lalu buka Manajer Dewan dari Alat -> Papan menu, cari esp8266 dan instal platform. Anda sekarang harus melihat pilihan untuk NodeMCU 1.0.
Biarkan CPU dan kecepatan unggah apa adanya, dan pilih port serial yang baru Anda instal. Di Mac, ini muncul sebagai cu. SLAB_USBtoUART.
Sebagai program pertama, saya sarankan pemindai Wi-Fi sederhana - temukan dari File -> Contoh -> ESP8266WiFi -> WifiScan. Perhatikan bahwa mengunggah cukup lambat, tetapi pada akhirnya ia akan mengatakan "selesai mengunggah" dan pada saat itu (bukan sebelumnya, atau Anda akan menghentikan proses pengunggahan), Anda dapat membuka monitor Serial. Anda harus melihat sesuatu yang mirip dengan ini:
Keberhasilan! Sekarang, mari kita coba sambungkan ke satu.
Ini kode barebones yang sangat sederhana untuk menghubungkan ke jaringan Wi-Fi. Itu tidak melakukan apa pun selain hanya terhubung, tetapi itu adalah sesuatu yang dapat Anda tambahkan nanti. Ingatlah untuk mengubah YOUR_SSID dan YOUR_PASSWORD ke detail Wi-Fi Anda. Unggah, buka konsol Serial dan Anda akan melihatnya terhubung.
#include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ("Menghubungkan ke"); Serial.println (ssid); WiFi.begin (ssid, password); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi terhubung"); Serial.println ("alamat IP:"); Serial.println (WiFi.localIP ()); } void loop () {}
Bukankah hebat betapa sederhananya itu?
Sebelum kita melanjutkan, inilah diagram pinout - mungkin berguna nanti. Perhatikan bahwa nomor pin yang disebut dalam kode adalah angka GPIO, bukan D0-16 yang mungkin tertulis di papan PCB Anda. Jika Anda benar-benar, pasti tidak tahu mengapa sensor tidak berfungsi, Anda mungkin mencampur nomor pin.
Sensor Rumah Pintar Cepat dengan MQTT dan DHT11
Ini adalah contoh praktis yang dapat Anda gunakan langsung untuk memantau rumah Anda. Kami akan menambahkan sensor suhu dan kelembaban DHT11, lalu melaporkan nilai menggunakan protokol MQTT melalui jaringan Wi-Fi, dalam kasus saya ke sistem otomatisasi rumah OpenHAB DIY (jika tidak, Anda mungkin ingin membaca kami panduan pemula untuk mendapatkan OpenHAB dan menjalankan Raspberry Pi Memulai dengan OpenHAB Home Automation di Raspberry PiOpenHAB adalah platform otomatisasi rumah sumber terbuka yang matang yang berjalan pada berbagai perangkat keras dan sedang protokol agnostik, artinya dapat terhubung ke hampir semua perangkat keras otomasi rumah di pasaran hari ini. Baca lebih banyak , dan bagian 2, yang membahas secara khusus menginstal server MQTT Panduan Pemula OpenHAB Bagian 2: ZWave, MQTT, Rules and ChartingOpenHAB, perangkat lunak otomatisasi rumah open source, jauh melebihi kemampuan sistem otomasi rumah lainnya di pasaran - tetapi tidak mudah untuk diatur. Bahkan, itu bisa membuat frustasi. Baca lebih banyak ).
Di sisi kabel, sambungkan sensor DHT ke GND, 3.3v, dan ~ D4 (atau GPIO 2). Hanya itu yang kami butuhkan untuk saat ini.
Unduh perpustakaan MQTT dan DHT ini. Bahkan jika Anda sudah memilikinya, tetap unduh yang ini, buat cadangan apa yang Anda miliki, dan timpa dengan ini. Perpustakaan DHT11 terbaru dari Adafruit menggunakan algoritma otomatis untuk menentukan kecepatan data dibaca dari sensor, tetapi bermasalah pada ESP8266 dan 90% hasilnya gagal bacaan
Dengan versi lama 1.0 perpustakaan yang saya sertakan dalam unduhan, Anda dapat mengubah waktunya secara manual: 11 berfungsi terbaik untuk papan ESP2866 ini. Saya juga melihat banyak salinan perpustakaan MQTT berusaha menemukan yang baik panggilan balik fungsi, akhirnya mendarat pada satu termasuk. Anda harus memulai ulang IDE Arduino setelah mengganti ini.
Ini dia kode lengkap untuk proyek. Di atas adalah semua variabel yang perlu Anda ubah, termasuk detail Wi-Fi, server MQTT (URL dapat digunakan alih-alih jika menggunakan server cloud, meskipun tidak ada otentikasi di tempat), dan saluran untuk menerbitkan data.
Inilah cara kerjanya dan beberapa catatan:
- Pertama kita terhubung ke Wi-Fi, lalu ke server MQTT, kemudian mulai main loop ().
- Dalam loop, kami melakukan polling sensor DHT setiap 60 detik dan mempublikasikan bacaan ke saluran MQTT yang relevan. Sekali lagi, jika Anda menemukan sebagian besar bacaan menghasilkan pesan kegagalan, Anda memiliki versi yang salah dari pustaka DHT - downgrade ke v1.0.
- client.loop () melewati kontrol ke perpustakaan MQTT, memungkinkannya bereaksi terhadap pesan yang masuk.
- Ada pesan diterima() berfungsi di mana kami menangani pesan masuk - lakukan saja pernyataan sederhana jika untuk membandingkan muatan dengan pesan yang Anda harapkan. Anda bisa menggunakan ini untuk mengaktifkan relay, misalnya.
- Setelah menjalankan ini selama beberapa hari, saya menemukan mereka akan berhenti bekerja secara acak - saya berasumsi ini semacam kebocoran memori, tetapi mengingat Saya tidak memiliki keterampilan pengkodean untuk menghadapinya dan mungkin dengan perpustakaan inti, saya telah memilih untuk soft reset sederhana setiap hari. Tepat satu hari setelah node sensor diaktifkan pertama kali, mereka akan me-restart sendiri.
- Ketika memberi daya pada modul-modul DHT11 murah ini dari 3.3v, nilai kelembabannya jauh lebih rendah dari yang seharusnya. Saya sudah menyelesaikan ini dengan perkalian sederhana, dan dikalibrasi terhadap sensor komersial. Saya akan menyarankan Anda untuk mengonfirmasi terhadap sumber Anda sendiri yang diketahui, sebelum mengandalkan bacaan. Atau, berikan daya pada mereka dengan 5V - tetapi Anda harus menempatkan shifter level logika 5v-3.3v antara pin data dan ESP8266, atau Anda akan merusaknya.
Jika semuanya berjalan dengan baik, Anda sekarang harus menerima pembacaan sensor di broker MQTT Anda, dan dapat melanjutkan dengan menghubungkan ini ke OpenHAB seperti yang dijelaskan dalam bagian 2 dari panduan pemula kami Panduan Pemula OpenHAB Bagian 2: ZWave, MQTT, Rules and ChartingOpenHAB, perangkat lunak otomatisasi rumah open source, jauh melebihi kemampuan sistem otomasi rumah lainnya di pasaran - tetapi tidak mudah untuk diatur. Bahkan, itu bisa membuat frustasi. Baca lebih banyak , di mana saya juga menunjukkan kepada Anda cara membuat grafik data.
Perpisahan Arduino, kami sangat mencintaimu. Just kidding: tidak di mana-mana di rumah saya bahkan bisa mendapatkan Wi-Fi, jadi untuk tempat-tempat itu saya masih membutuhkan jaringan mesh dengan Arduino dan penerima RF.
Untuk proyek yang menyenangkan, lihat cara membuat tombol Wi-Fi dengan ESP8266 Cara Membuat Tombol Terhubung Wi-Fi Anda Sendiri Dengan ESP8266Dalam tutorial ini, Anda akan belajar cara membuat tombol yang mendukung Wi-Fi menggunakan NodeMCU dan IFTTT. Baca lebih banyak .
Tapi apa yang akan Anda buat dengan ESP8266? Adakah proyek yang menggunakan ESP8266 yang ingin Anda lihat ditulis di MakeUseOf? Beri tahu kami di komentar!
James memiliki gelar BSc dalam Artificial Intelligence, dan bersertifikat CompTIA A + dan Network +. Dia adalah pengembang utama MakeUseOf, dan menghabiskan waktu luangnya bermain VR paintball dan boardgames. Dia telah membangun PC sejak dia masih kecil.