MIRO adalah platform robot terbuka dalam ruangan. Bagian 3 - Komponen Perangkat Lunak: ESP8266

gambar

Kami mulai membongkar komponen perangkat lunak platform MIRO. Mari kita lihat cara "memasak" ARDUINO UNO menggunakan ESP8266 untuk firmware dan komunikasi nirkabel.

Daftar Isi: Bagian 1 , Bagian 2 , Bagian 3 , Bagian 4 , Bagian 5 .

Saya tidak ingin kita mengembangkan apa pun untuk ESP8266. Saya yakin bahwa untuk waktu yang lama ada solusi turnkey dengan fungsi yang saya butuhkan. Dan untuk MIRO, fungsi ini cukup sederhana:

  1. Perangkat lunak harus memiliki antarmuka web untuk konfigurasi jaringan;
  2. Perangkat lunak harus mengimplementasikan firmware nirkabel ATMEGA328;
  3. Perangkat lunak harus memiliki fungsi jembatan WiFi-UART untuk debugging dan manajemen nirkabel.

gambar Mungkin, untuk sebagian besar fungsi ini, ada ESP-LINK yang terkenal . Dan dia sangat kuat. Kami menggunakannya di beberapa proyek lain sebagai jembatan antara berbagai antarmuka - sangat nyaman. Tetapi beberapa bulan yang lalu, ketika kami duduk untuk menangani masalah ini dengan seksama, ternyata ia tidak menginstal ARDUINO UNO. Di mana-mana mereka menulis bahwa mereka berkedip, tetapi dia tidak berkedip. Dan pada saat itu saya bahkan tidak terlalu memahami mengapa dan apa prosedur standarnya. Kawan-kawan saya dan saya cukup mengkonfigurasi port COM virtual pada host di alamat IP ESP tertentu, menunjukkan baris reset di ESP-LINK itu sendiri dan mencoba untuk mem-flashnya. ATMEGA328 berhasil diatur ulang, tetapi firmware tidak mengalami banjir. Selain itu, jaringan memiliki banyak pelajaran tentang mengatur firmware tersebut dengan ESP-LINK. Tetapi jika Anda membaca masalah mereka, maka mereka selalu memiliki sesuatu di sana yang seseorang tidak flash.

Kecewa, ia mulai mencari alternatif. Dan saya menemukannya sebagai garpu dari WiFi Arduino asli di GitHub dari pengembang dengan julukan jandrassy.
Kembali pada bulan Februari tahun itu, ada instruksi mengerikan di README untuk mengkonfigurasi segala sesuatu dari firmware ke lingkungan pengembangan, tetapi sekarang telah sangat disederhanakan. Meskipun demikian, masih perlu sedikit usaha untuk mengatur lingkungan. Namun, firmware ARDUINO sempurna. Itu diperiksa baik dari Windows maupun dari Linux (pada MacOS kami sepertinya belum pernah menguji apa pun - tidak ada orang di lingkungan langsung proyek yang memilikinya).

Urutan penyiapan lingkungan ada sebagai berikut:

  1. Unduh dan instal perpustakaan dfu dari sini ;
  2. Secara default, di perpustakaan ini (dalam file esp8266-serial-arduinouno-hacked.cpp) dinyatakan bahwa garis Reset chip ATMEGA328 terhubung ke jalur GPIO5 ESP8266. Untuk MIRO, Anda perlu melakukan perubahan di sini - ubah ke GPIO2.

Apa yang harus diubah?
Itu:

esp8266_serial_arduinouno_hacked_target_reset(struct dfu_interface *iface) { pinMode(5, OUTPUT); digitalWrite(5, 0); delay(1); digitalWrite(5, 1); delay(200); return 0; } 

Itu menjadi:

 esp8266_serial_arduinouno_hacked_target_reset(struct dfu_interface *iface) { pinMode(2, OUTPUT); digitalWrite(2, 0); delay(1); digitalWrite(2, 1); delay(200); return 0; } 


Penulis jandrassy, ​​menunjukkan bahwa implementasinya hanya berfungsi dengan konfigurasi chip target dan bootloader ini (ATMEGA328P dengan Optiboot).

Saya yakin masih ada solusi dan bahkan mungkin lebih baik. Jika seseorang tahu pasti opsi yang berfungsi, beri tahu saya. Karena, terlepas dari sejumlah besar kode siap pakai, selain ESP-LINK, kami juga menguji 2 atau 3 proyek - mereka tidak berfungsi. Dalam beberapa kasus, firmware melewati sekali, dalam beberapa kasus tidak bekerja sama sekali.

Mungkin salah satu keunggulan utama dari solusi yang ditemukan adalah basis kode yang relatif kecil dari proyek dan fakta bahwa firmware untuk Arduino Core dikembangkan.

Apa yang tidak ada dalam proyek jandrassy adalah jembatan nirkabel WiFi-UART. Sudah ada dalam firmware WiFi Link Arduino.org yang asli, sebuah halaman dengan jendela terminal terpotong, memungkinkan melalui browser untuk bekerja dengan chip UART ATMEGA328. Sama seperti ini dapat dilakukan di ESP-LINK. Dan jika kita beralih ke publikasi pertama tentang Arduino UNO WiFi (misalnya, ini dia), jelas bahwa dalam versi pertama firmware baik jendela dan item menu yang sesuai ("WiFi Console") adalah. Dan bahkan dalam rilis 1.0.0 di arsip, file console.js (hanya diimplementasikan halaman ini) terletak, tetapi sebenarnya tidak terlibat dalam server dengan cara apa pun (kami memeriksa). Mengapa dan mengapa mereka melihat itu tidak jelas.

Saya harus menyelesaikan sesuatu. Sekarang ada server lain dalam firmware - TELNET pada port 23 yang jelas, yang mana banyak program terminal bekerja tanpa masalah.

Namun, pada saat ini, agar semuanya berfungsi, saya harus menghapus dari kode jandrassy bagian yang bertanggung jawab atas firmware nirkabel ESP itu sendiri. Pada persyaratan awal, saya tidak memiliki fungsi ini, jadi oke. Namun, jika pembaca dalam komentar dapat dengan tegas memberi tahu saya apakah mungkin dalam satu firmware untuk mengimplementasikan kemungkinan firmware nirkabel baik ESP8266 itu sendiri dan MCU "eksternal" (dalam hal ini, ATMEGA328), maka saya akan berpikir untuk mengembalikan fitur ini ke firmware ESP. Sudah dalam persiapan artikel, secara tidak langsung, saya melihat konfirmasi ini dalam draft Kanada ini. Tetapi tidak memeriksa.

Sementara itu, ESP dipasang secara eksklusif melalui kabel, tetapi ARDUINO memiliki kemampuan untuk firmware nirkabel dan komunikasi TELNET melalui jembatan WiFi-UART. Dan itu sangat nyaman! Tujuan saya tercapai.

Nah, dalam proyek ini, seperti dalam yang asli, ada antarmuka WEB untuk pengaturan (gambar dapat diklik).





Kami mengubah file CSS dari gaya antarmuka-WEB untuk proyek kami dan memperkenalkan "kruk" kecil - sekarang ESP selalu dalam mode AP + STA. Kruk ini dibuat untuk mengecualikan kemungkinan beralih ESP ke mode "hanya STA", di mana ketika mentransfer robot ke subnet yang berbeda, pengguna kehilangan kemampuan untuk mengkonfigurasi robot di jaringan baru - robot tidak dapat terhubung ke jaringan baru, tetapi tidak ada akses eksternal juga - Saya harus reflash ESP. Dalam mode AP + STA, pengguna selalu dapat terhubung ke titik akses robot dan mengkonfigurasi koneksi ke jaringan WiFi baru.

Tentang cara mem-flash ESP8266 dengan "monster" ini. Secara umum, untuk modul arbitrer pada chip ESP8266, urutannya adalah sebagai berikut:

  1. Nyalakan papan (terhubung ke usb);
  2. Atur parameter papan seperti pada gambar;

    gambar

    Sangat penting untuk memilih "v1.4 Bandwidth Lebih Tinggi" - jika Anda memilih "v2", maka setelah firmware tidak memungkinkan untuk terhubung ke papan melalui WiFi (titik akses terlihat, tetapi prosedur koneksi tidak berfungsi - siapa tahu apa yang terhubung dengan ini - tulis di komentar).
  3. Pilih port (dalam contoh di tangkapan layar - COM3).
  4. Jalankan firmware. Selama prosedur untuk memuat papan, memori mikrokontroler dihapus pertama, dan kemudian firmware terhapus.
  5. Setelah menyelesaikan prosedur firmware, Anda perlu mengatur ulang papan menggunakan tombol reset.
  6. Pilih Arduino IDE ESP8266 Unggah Data Sketsa dari menu dan unduh SPIFFS.
  7. Setel ulang papan.

Untuk konfigurasi dengan "papan modifikasi" UNO + WiFi kami (lihat bagian pertama ), semuanya sedikit lebih rumit karena fitur perangkat keras papan, yang sulit untuk dipelajari dengan nyaman karena banyaknya kesalahan dalam dokumen dengan diagram sirkuit. Kami menulis instruksi yang lebih terperinci dalam file “manual unggah manual MIRO ESP Firmware” dari repositori - jika Anda benar-benar bertindak keras, firmware mengeluarkan 100 dari 100.

Kami sampai pada bagian yang sangat menarik - komponen perangkat lunak MIRO yang ditugaskan ke ATMEGA328. Ada lebih banyak pekerjaan dan ruang untuk diskusi tentang berbagai solusi juga.

Terima kasih semuanya!

Source: https://habr.com/ru/post/id473368/


All Articles