Dengan modul Wi-Fi.
Arduino Uno WiFi menyediakan segala-galanya untuk kerja mudah dengan mikropengawal: 14 input/output digital (6 daripadanya boleh digunakan sebagai output PWM), 6 input analog, penyambung USB, penyambung kuasa, penyambung pengaturcaraan dalam litar (ICSP). ) dan butang set semula mikropengawal.
Kemuncak papan ialah modul WiFi ESP8266, yang membolehkan Arduino bertukar maklumat dengan modul lain melalui rangkaian wayarles 802.11 b/g/n.
ESP8266 membolehkan anda menyalakan papan Arduino tanpa menggunakan kabel USB dalam mod OTA (Firmware Over The Air).
Semakan video lembaga
Sambungan dan persediaan
Untuk bermula dengan papan WiFi Arduino Uno dalam sistem pengendalian Windows, muat turun dan pasang persekitaran pembangunan bersepadu Arduino - Arduino IDE - pada komputer anda.
Ada masalah?
Menyediakan modul WiFi
Perisian tegar Arduino melalui WiFi
Arduino Uno WiFi mempunyai satu lagi bonus bagus - keupayaan untuk memuat naik lakaran tanpa menggunakan kabel USB dalam mod OTA (Firmware Over The Air). Mari kita lihat lebih dekat bagaimana untuk melakukan ini.
![](https://i0.wp.com/wiki.amperka.ru/_media/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:arduino-uno-wifi:arduino_firmware_ota1.png)
Untuk melakukan ini, anda perlu memasukkan menu: Alatan Pelabuhan dan pilih port yang dikehendaki.
Memandangkan kami memancarkan Arduino melalui WiFi, papan akan dikenal pasti sebagai peranti jauh dengan alamat IP
Persekitaran dikonfigurasikan, papan disambungkan. Anda boleh meneruskan untuk memuat naik lakaran. Arduino IDE mengandungi senarai besar contoh sedia di mana anda boleh melihat penyelesaian kepada sebarang masalah. Mari kita pilih antara contoh LED berkelip - lakaran "Kelip". Kilat papan dengan mengklik pada ikon muat turun program.
Selepas but, LED akan mula berkelip sekali sesaat. Ini bermakna semuanya berjaya.
Sekarang anda boleh teruskan ke contoh penggunaan.
Contoh penggunaan
Pelayan web
Mari sediakan pelayan web mudah yang akan memaparkan halaman dengan nilai semasa input analog.
web-server.ino /* Contoh pelayan web ringkas yang berjalan pada Arduino Uno WiFi. Pelayan memaparkan nilai pada input analog dan mengemas kini maklumat setiap dua saat. Hubungi pelayan di http://Contoh nilai keluaran daripada pin analog
" ); client.print("- " ); untuk (int analogChannel = 0 ; analogChannel<
4
;
analogChannel++
)
{
int
sensorReading =
analogRead(analogChannel)
;
client.print
("
- pada input analog" ); client.print(analogChannel) ; client.print(": " ); client.print (sensorReading); client.print (""); ) client.println ( "
Elemen papan
Pengawal mikro ATmega328P
Inti bagi platform WiFi Arduino Uno ialah mikropengawal 8-bit keluarga AVR - ATmega328P.
Mikropengawal ATmega16U2
Mikropengawal ATmega16U2 menyediakan komunikasi antara mikropengawal ATmega328P dan port USB komputer. Apabila disambungkan ke PC, Arduino Uno WiFi dikesan sebagai port COM maya. Perisian tegar cip 16U2 menggunakan pemacu USB-COM standard, jadi tiada pemasangan pemacu luaran diperlukan.
Pin kuasa
VIN: Voltan daripada bekalan kuasa luaran (tidak berkaitan dengan 5V daripada USB atau voltan terkawal lain). Melalui pin ini anda boleh membekalkan kuasa luaran dan menggunakan arus jika penyesuai luaran disambungkan ke peranti.
5V: Pin menerima voltan 5 V daripada penstabil papan. Penstabil ini memberikan kuasa kepada mikropengawal ATmega328. Ia tidak disyorkan untuk menghidupkan peranti melalui pin 5V - dalam kes ini, penstabil voltan tidak digunakan, yang boleh menyebabkan kegagalan papan.
3.3V: 3.3 V daripada penstabil papan. Arus keluaran maksimum ialah 1 A.
GND: Kesimpulan bumi.
IOREF: Pin menyediakan papan pengembangan dengan maklumat tentang voltan pengendalian mikropengawal. Bergantung pada voltan, papan pengembangan boleh bertukar kepada bekalan kuasa yang sesuai atau menggunakan penukar aras, membolehkan ia berfungsi dengan kedua-dua peranti 5V dan 3.3V.
Port I/O
Input/output digital: pin 0 – 13
Tahap logik satu ialah 5 V, sifar ialah 0 V. Arus keluaran maksimum ialah 40 mA. Perintang tarik naik disambungkan kepada kenalan, yang dilumpuhkan secara lalai, tetapi boleh didayakan oleh perisian.
PWM: pin 3, 5, 6, 9, 10 dan 11
Membolehkan anda mengeluarkan nilai analog 8-bit sebagai isyarat PWM.
ADC: pin A0 – A5
6 input analog, setiap satunya boleh mewakili voltan analog sebagai nombor 10-bit (1024 nilai). Kapasiti ADC ialah 10 bit.
TWI/I²C: Pin SDA dan SCL
Untuk komunikasi dengan peranti menggunakan protokol segerak, melalui 2 wayar. Untuk bekerja, gunakan perpustakaan Wire.
SPI: pin 10(SS), 11(MOSI), 12(MISO), 13(SCK).
Komunikasi melalui antara muka SPI dijalankan melalui pin ini. Untuk bekerja, gunakan perpustakaan SPI.
UART: pin 0(RX) dan 1(TX)
Pin ini disambungkan ke pin yang sepadan mikropengawal ATmega16U2, yang bertindak sebagai penukar USB-UART. Digunakan untuk berkomunikasi antara papan Arduino dan komputer atau peranti lain melalui kelas Serial.
Petunjuk LED
Penyambung USB Jenis-B
Penyambung USB Type-B direka untuk menyalakan platform WiFi Arduino Uno menggunakan komputer.
Penyambung kuasa luaran
Penyambung untuk menyambung kuasa luaran dari 7 V ke 12 V.
Pengatur voltan 5V
Apabila papan disambungkan kepada sumber kuasa luaran, voltan melalui pengawal selia MPM3610. Output penstabil disambungkan ke pin 5V. Arus keluaran maksimum ialah 1A.
Pengatur voltan 3.3V
Penstabil MPM3810GQB-33 dengan output 3.3 volt. Membekalkan kuasa kepada modul WiFi ESP8266 dan dikeluarkan kepada pin 3.3V. Arus keluaran maksimum ialah 1A.
Penyambung ICSP untuk ATmega328P
Penyambung ICSP direka untuk pengaturcaraan dalam litar mikropengawal ATmega328P. Menggunakan perpustakaan SPI, pin ini boleh berkomunikasi dengan papan pengembangan melalui antara muka SPI. Talian SPI disalurkan ke penyambung 6-pin, dan juga diduplikasi pada pin digital 10(SS), 11(MOSI), 12(MISO) dan 13(SCK).
Penyambung ICSP untuk ATmega16U2
Penyambung ICSP direka untuk pengaturcaraan dalam litar mikropengawal ATmega16U2.
Ingin menghantar mesej teks daripada telefon pintar Android anda ke papan Arduino anda? Artikel ini memberitahu anda bagaimana untuk melakukannya!
Apa yang anda perlukan
- Telefon pintar Android dengan sokongan untuk mod hos USB (iaitu sokongan OTG) - kebanyakan peranti yang menjalankan Android 3.1 dan lebih tinggi menyokong mod ini. Uji telefon anda menggunakan Apl Diagnostik Hos USB daripada Gedung Play;
- Arduino - mana-mana versi. Saya akan menggunakan Uno R3;
- Kabel USB untuk Arduino;
- Kabel USB OTG - anda memerlukannya untuk menyambungkan kabel USB Arduino ke port mikro-USB telefon;
- Android Studio - anda perlu memasangnya. Ia agak mudah untuk dilakukan. Android Studio menjadikan pembangunan apl lebih mudah dengan andaian dan penjanaan kodnya. Ini adalah salah satu IDE terbaik. Anda juga boleh menggunakan artikel ini sebagai panduan untuk memasang Android IDE.
Komponen asas aplikasi Android
Terdapat tiga fail utama dalam aplikasi Android:
MainActivity.java Di sinilah terletaknya kod Java boleh laku yang mengawal cara aplikasi akan berfungsi. activity_main.xml Mengandungi reka letak aplikasi, iaitu komponen: butang, komponen paparan teks, dsb. AndroidManifest.xml Di sini anda mentakrifkan bila aplikasi harus dijalankan, kebenaran yang diperlukan dan perkakasan yang diperlukan untuk diakses.
Terdapat banyak lagi fail, tetapi semuanya bersambung antara satu sama lain menggunakan ketiga-tiga ini.
Sesuatu aktiviti boleh dicirikan sebagai skrin di mana pengguna berinteraksi dengan telefon. Aktiviti mengandungi widget seperti butang, medan teks, imej, dsb. yang membantu dalam menyampaikan maklumat. Tutorial ini hanya akan menggunakan satu aktiviti, MainActivity, yang akan menerima input pengguna untuk dihantar ke Arduino dan juga memaparkan teks yang diterima.
Susun atur
![](https://i1.wp.com/radioprog.ru/uploads/media/articles/0001/01/ba4fd729fdb62d1c7fe3881fe3cf01cec823d96c.png)
Kami akan menggunakan reka letak yang sama seperti Apl USB dan Apl Bluetooth. Ia mudah dan mengandungi widget minimum yang diperlukan untuk menguji sambungan antara peranti.
Seperti yang anda lihat, ia mengandungi widget EditText untuk menerima data daripada pengguna, butang untuk memulakan sambungan, memindahkan data, menamatkan sambungan dan mengosongkan TextView . Data yang diterima dipaparkan dalam TextView (ruang kosong di bawah butang).
Berikut ialah sebahagian daripada kod XML. Oleh kerana kod untuk butang adalah serupa, ia tidak ditunjukkan di sini. Kod penuh boleh dimuat turun dari pautan di penghujung artikel.
Saya telah menggunakan RelativeLayout di sini, yang bermaksud bahawa setiap widget diposisikan berbanding dengan widget di sekelilingnya. Reka letak boleh dibuat semula dengan mudah dalam Tab Reka Bentuk, di mana anda boleh menyeret dan melepaskan widget di mana sahaja anda mahu. Kita perlu menerangkan apa yang akan berlaku apabila butang ditekan. Kaedah onClick digunakan untuk ini. Nyatakan nama kaedah dalam kod XML untuk butang. Untuk melakukan ini, tambahkan baris:
Android:onClick="onClickMethod"
Sekarang tuding tetikus anda pada baris ini dan amaran yang serupa akan muncul di sebelah kiri:
![](https://i0.wp.com/radioprog.ru/uploads/media/articles/0001/01/1fa492d90a452879a7128af59aa0ab36ddc859ad.png)
Klik pada pilihan “Buat onClick...”. Ini secara automatik akan menambah kod kaedah onClick ke MainActivity.java. Anda perlu melakukan ini untuk setiap butang.
Perpustakaan Bersiri USB
Menyediakan sambungan bersiri dalam Android agak intensif buruh kerana ia memerlukan anda mengkonfigurasi banyak perkara secara manual, jadi saya menemui beberapa perpustakaan yang melakukan semuanya secara automatik. Saya menguji beberapa daripada mereka dan akhirnya menetap di perpustakaan UsbSerial daripada pengguna Github felHR85. Antara perpustakaan serupa yang saya temui, ia adalah satu-satunya perpustakaan yang masih dikemas kini. Ia agak mudah untuk disediakan dan digunakan. Untuk menambah pustaka pada projek anda, muat turun fail JAR terkini daripada Github. Letakkannya dalam subdirektori libs direktori projek anda. Kemudian, dalam peneroka fail dalam Android Studio, klik kanan pada fail JAR dan pilih "Tambah sebagai Pustaka". Itu sahaja!
Algoritma pelaksanaan program
![](https://i2.wp.com/radioprog.ru/uploads/media/articles/0001/01/c863581dfe792509722743f3d8cf3fb804cdb10e.png)
Ini adalah garis ringkas tentang cara kami akan meneruskan. Setiap aktiviti mempunyai kaedah onCreate(), yang berjalan apabila aktiviti dibuat. Apa sahaja kod yang anda ingin jalankan pada permulaan mesti diletakkan di dalam kaedah ini. Sila ambil perhatian bahawa membaca daripada peranti adalah tidak segerak, bermakna ia akan berfungsi di latar belakang. Ini dilakukan untuk memastikan data diterima secepat mungkin.
Membuka sambungan
Mula-mula, mari kita tentukan kaedah onClick untuk butang Mula. Apabila diklik, anda perlu mencari semua peranti yang disambungkan dan kemudian menyemak sama ada VendorID peranti yang disambungkan (vendor ID) adalah sama dengan VendorID Arduino. Jika padanan ditemui, pengguna mesti diminta kebenaran. Setiap peranti hamba USB mempunyai ID Penjual dan ID Produk, yang boleh digunakan untuk menentukan pemacu yang harus digunakan untuk peranti tersebut. ID Vendor untuk mana-mana papan Arduino ialah 0x2341 atau 9025.
Public void onClickStart(Lihat paparan) ( HashMap usbDevices = usbManager.getDeviceList(); if (!usbDevices.isEmpty()) ( boolean keep = true; for (Map.Entry entry: usbDevices.entrySet()) ( device = entry. getValue(); int deviceVID = device.getVendorId(); if (deviceVID == 0x2341) //Arduino Vendor ID ( PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); usbManager.requestPermission( peranti, pi); simpan = palsu; ) else ( sambungan = batal; peranti = batal; ) jika (!keep) putus ;
Sekarang mari kita takrifkan Penerima Siaran untuk menerima mesej siaran untuk meminta kebenaran pengguna dan untuk memulakan sambungan secara automatik apabila peranti disambungkan dan menutup sambungan apabila ia diputuskan.
// Siarkan penerima mesej untuk memulakan dan menutup sambungan bersiri secara automatik. private broadcastReceiver broadcastReceiver = new BroadcastReceiver() ( @Override public void onReceive(Context context, Intent intent) ( if (intent.getAction().equals(ACTION_USB_PERMISSION)) ( boolean granted = intent.getExtras().getBoolean(UsbManager. EXTRA_PERMISSION_GRANTED); jika (diberikan) ( sambungan = usbManager.openDevice(peranti); serialPort = UsbSerialDevice.createUsbSerialDevice(peranti, sambungan); jika (serialPort != null) ( jika (serialPort.open()) ( // Tetapkan parameter bersiri sambungan. setUiEnabled(true); //Aktifkan butang dalam UI.setDataBits(UsbSerialInterface.DATA_BITS_8); tvAppend(textView,"Sambungan Siri Dibuka!\n"); else ( Log.d("SERIAL", "PORT NOT BUKA"); ) ) else ( Log.d("SIRI", "PORT IS NULL"); ) ) else ( Log.d("SERIAL", "PERM NOT GRANTED"); ) ) else if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) ( onClickStart(startButton); ) else if (intent.getAction ().equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) ( onClickStop(stopButton); ) ); );
Jika syarat IF pertama dipenuhi dan jika pengguna telah memberikan kebenaran, mulakan menyambung ke peranti yang ID Vendornya sepadan dengan ID Vendor yang kami perlukan. Selain itu, jika mesej siaran diterima tentang menyambung atau memutuskan sambungan peranti, panggil kaedah onClick secara manual untuk butang Mula dan Berhenti. SerialPort ditakrifkan menggunakan peranti dan sambungan sebagai hujah. Jika berjaya, buka SerialPort dan tetapkan parameter yang sesuai. Nilai parameter untuk Arduino Uno ialah: 8 bit data, 1 bit hentian, tiada bit pariti, kawalan aliran dilumpuhkan. Kadar baud boleh menjadi 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 atau 115200 bps, tetapi kami akan menggunakan standard 9600 bps.
Menerima data daripada peranti
Dalam coretan kod di atas, perhatikan baris yang mengandungi serialPort.read(mCallback) . Di sini, fungsi baca diberikan rujukan kepada objek Panggilan Balik, yang akan menyala secara automatik apabila data masuk dikesan.
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() ( // Tentukan kaedah panggil balik yang dipanggil apabila data diterima. @Override public void onReceivedData(bait arg0) ( String data = null; try ( data = new String(arg0, " UTF-8"); data.concat("/n" );
Data yang diterima akan dalam bentuk bait mentah. Kami perlu mengekod semula mereka ke dalam format yang boleh dibaca, seperti UTF-8. Ia kemudiannya ditambahkan pada TextView menggunakan kaedah tvAppend() khas. Ini dilakukan dengan cara ini kerana sebarang perubahan pada UI hanya boleh dilakukan pada urutan UI. Memandangkan Panggilan Balik ini akan dijalankan sebagai utas latar belakang, ia tidak boleh menjejaskan antara muka pengguna secara langsung.
Private void tvAppend(TextView tv, CharSequence text) ( TextView akhir ftv = tv; akhir CharSequence ftext = teks; runOnUiThread(new Runnable() ( @Override public void run() ( ftv.append(ftext); ) )); )
Memindahkan data ke peranti
Memindahkan data agak mudah berbanding membaca data daripada peranti. Ini ialah panggilan fungsi mudah dengan bait data yang akan dihantar sebagai hujah. Ini akan dilaksanakan dalam kaedah onClick pada butang Hantar.
SerialPort.write(string.getBytes());
Menutup sambungan
Untuk menutup sambungan, hanya tutup port bersiri.
SerialPort.close();
Manifes permohonan
Manifes mengisytiharkan kebenaran tambahan yang mungkin diperlukan oleh aplikasi. Satu-satunya kebenaran yang kami perlukan ialah kebenaran untuk menjadikan telefon sebagai hos USB. Tambahkan baris berikut pada manifes anda:
Anda boleh memaksa aplikasi anda dimulakan secara automatik dengan menambahkan penapis niat pada aktiviti utama anda, MainActivity . Penapis niat ini akan dicetuskan apabila mana-mana peranti baharu disambungkan. Jenis peranti boleh ditentukan secara eksplisit menggunakan ID Vendor dan/atau ID Produk dalam fail XML.
Perhatikan baris " android:resource="@xml/device_filter ". Ini memberitahu pengkompil bahawa ia boleh mencari sifat peranti dalam fail yang dipanggil device_filter dalam direktori src/main/res/xml, jadi buat subdirektori " xml " dalam direktori src /main/res dan letakkan fail dengan kandungan berikut di dalamnya:
Ujian aplikasi
Bina aplikasi dan jalankan pada telefon pintar anda. Sekarang lancarkan Arduino IDE dan konfigurasikan Arduino untuk menggemakan apa sahaja yang akan diterima oleh papan melalui port bersiri. Berikut ialah beberapa kod yang sangat mudah untuk membantu anda melakukan ini:
Persediaan batal() ( Serial.begin(9600); ) gelung void() ( char c; if(Serial.available()) ( c = Serial.read(); Serial.print(c); ) )
Sekarang sambungkan Arduino ke port microUSB telefon anda menggunakan kabel OTG. Aplikasi harus dilancarkan secara automatik. Cuba hantar beberapa teks dan data yang sama akan dikembalikan!
![](https://i2.wp.com/radioprog.ru/uploads/media/articles/0001/01/b2feb577aab2da3a577b86d03c5e6e958a05b347.png)
Kesimpulan
Artikel ini menunjukkan cara Arduino boleh berkomunikasi dengan telefon pintar anda. Dan kemungkinan untuk menggunakannya tidak berkesudahan! Dalam kes apabila data diperlukan daripada mana-mana penderia yang bukan antara yang terbina dalam telefon pintar, anda boleh menggunakan mana-mana mikropengawal untuk membaca data daripada penderia ini dan memindahkannya ke telefon pintar. Artikel seterusnya akan menunjukkan kepada anda cara menyambung telefon pintar anda ke Arduino menggunakan modul bluetooth HC05 yang popular.
Artikel ini akan menerangkan secara terperinci penciptaan aplikasi kecil untuk sistem pengendalian mudah alih Android dan lakaran untuk Arduino. Arduino Uno akan mempunyai Perisai Tanpa Wayar dengan modul Bluetooth. Aplikasi akan menyambung ke modul Bluetooth dan menghantar arahan tertentu. Sebaliknya, lakaran akan menggunakan arahan ini untuk menyalakan atau mematikan salah satu LED yang disambungkan ke Arduino.
Kami akan perlukan
Mencipta Aplikasi Android
kosong
Pembangunan untuk OS Android dijalankan dalam persekitaran pembangunan ADT, Alat Pembangunan Android. Yang boleh dimuat turun dari portal pembangun Google. Selepas memuat turun dan memasang ADT, jangan ragu untuk melancarkannya. Walau bagaimanapun, masih terlalu awal untuk mula membangunkan aplikasi. Anda juga perlu memuat turun SDK Android versi yang diperlukan. Untuk melakukan ini, anda perlu membuka Pengurus SDK Android "Tetingkap → Pengurus SDK Android". Dalam senarai kami perlu memilih SDK yang kami perlukan, dalam kes kami Android 2.3.3 (API 10). Jika anda tidak mempunyai telefon, kemudian pilih 2.3.3 atau lebih tinggi; dan jika ada, versi yang sepadan dengan versi OS telefon. Kemudian klik pada butang "Pasang Pakej" untuk memulakan proses pemasangan.
Setelah muat turun dan pemasangan selesai, kami mula mencipta aplikasi. Pilih “Fail → Baharu → Projek Aplikasi Android”. Mari kita isi kandungan tetingkap seperti yang ditunjukkan dalam rajah.
Nama Aplikasi - nama aplikasi yang akan dipaparkan di Gedung Google Play. Tetapi kami tidak akan menerbitkan aplikasi itu, jadi nama itu tidak begitu penting kepada kami.
Nama Projek - nama projek dalam ADT.
Nama Pakej - pengecam aplikasi. Ia harus digubah seperti berikut: nama tapak anda ke belakang, serta beberapa nama aplikasi.
Dalam senarai lungsur turun "SDK Minimum Diperlukan", "SDK Sasaran", "Kompil Dengan", pilih versi yang kami muat turun sebelum ini. Versi baharu SDK menyokong tema grafik untuk aplikasi, tetapi versi lama tidak menyokong tema grafik. Oleh itu, dalam medan "Tema", pilih "Tiada". Klik “Seterusnya”.
Nyahtanda "Buat ikon pelancar tersuai": untuk tujuan artikel ini, kami tidak akan menumpukan pada mencipta ikon aplikasi. Klik “Seterusnya”.
Dalam tetingkap yang muncul, anda boleh memilih paparan "Aktiviti": paparan perkara yang akan dipaparkan pada skrin apabila aplikasi dilancarkan. Kami memilih "Aktiviti kosong", yang bermaksud bahawa kami mahu memulakan segala-galanya dari awal. Klik “Seterusnya”.
Hanya akan ada satu Aktiviti dalam aplikasi kami, jadi anda tidak perlu menukar apa-apa dalam tetingkap yang muncul. Jadi hanya klik pada "Selesai".
Itu sahaja, aplikasi kami dibuat.
Menyediakan emulator
Aplikasi Android dinyahpepijat pada peranti sebenar atau, jika tiada, kemudian pada emulator. Mari kita konfigurasikan kita.
Untuk melakukan ini, lancarkan "Tetingkap → Pengurus Peranti Maya Android". Dalam tetingkap yang muncul, klik "Baru". Isi ruangan borang yang terpapar. Ia bergantung kepada mereka berapa banyak dan sumber apa yang akan diberikan oleh emulator kepada "telefon". Pilih nilai yang munasabah dan klik OK.
Dalam tetingkap Pengurus Peranti Maya Android, klik butang "Mula". Ini akan melancarkan emulator. Permulaan mengambil masa beberapa minit. Jadi bersabarlah.
Akibatnya, anda akan melihat tetingkap emulator yang serupa dengan ini:
Aktiviti Pengisian
Aktiviti ialah apa yang dipaparkan pada skrin telefon selepas aplikasi dilancarkan. Di atasnya kita akan mempunyai dua butang "Nyalakan LED merah" dan "Nyalakan LED biru". Mari tambah mereka. Dalam panel "Package Explorer", buka res/layout/activity_main.xml. Penampilannya akan lebih kurang sama seperti dalam tangkapan skrin.
Seret 2 "ToggleButtons" ke borang skrin. Beralih kepada tab “activity_main.xml” dan lihat kod berikut:
activity_main_aiutogen.xmlIni tidak lebih daripada Aktiviti kami, yang tidak dipaparkan sebagai grafik, tetapi diterangkan dalam format XML.
Mari kita jadikan nama komponen lebih jelas. Mari tukar medan android:id seperti berikut.
Kami juga akan menambah tandatangan kepada mereka, menukar warna dan saiz teks mereka. Kod markup yang terhasil akan kelihatan seperti ini:
activity_main.xmlPerubahan yang sama boleh dibuat dalam mod grafik menggunakan tab "Kerangka/Properti".
Percubaan
Kita boleh menjalankan aplikasi yang baru dibuat pada emulator. Pergi ke tetapan pelancaran "Jalankan" → Jalankan Konfigurasi", di sebelah kiri klik pada "Aplikasi Android". Konfigurasi baharu "New_configuration" muncul. Di sebelah kanan tetingkap, pilih tab "Sasaran" dan pilih pilihan "Lancarkan pada semua peranti/AVD yang serasi".
Klik "Guna" dan kemudian "Jalankan". Aplikasi akan dilancarkan dalam emulator.
Anda boleh menekan butang. Tetapi tiada apa yang akan berlaku, kerana kami belum lagi menulis pengendali klik.
Untuk menjalankan aplikasi pada peranti sebenar, anda perlu mendayakan pilihan "USB Debugging" dalam tetapannya dan menyambungkannya ke komputer anda.
Pada peranti sebenar, aplikasi kelihatan sama.
Menulis Kod untuk Android
Mengedit manifesto
Setiap aplikasi Android mesti memberitahu sistem apa hak yang perlu diberikannya. Hak tersebut disenaraikan dalam apa yang dipanggil fail manifes AndroidManifest.xml. Di dalamnya kita mesti menunjukkan fakta bahawa kita ingin menggunakan Bluetooth dalam aplikasi kita. Untuk melakukan ini, tambahkan hanya beberapa baris:
AndroidManifest.xmlMenambah kod utama
Sudah tiba masanya untuk memberi nafas kehidupan ke dalam aplikasi kami. Buka fail MainActivity.java (src → ru.amperka.arduinobtled). Pada mulanya ia mengandungi kod berikut:
Pakej MainActivityAutogen.java ru.amperka.arduinobtled ; import android.os.Bundle ; import android.app.Activity ; import android.view.Menu ; kelas awam MainActivity memanjangkan Aktiviti ( @Override protected void onCreate(Bundle savedInstanceState) ( super .onCreate (savedInstanceState) ; setContentView(R.layout .activity_main ) ; ) @Override public boolean onCreateOptionsMenu( Menu menu) ( getMenuInflater() .inflate (R.menu .main , menu) ; return true ; ) )Mari tambah kod mengikut apa yang kita perlukan:
Kami akan menghidupkan Bluetooth jika ia dimatikan.
Kami akan memproses klik butang
Kami akan menghantar maklumat tentang butang mana yang ditekan.
Kami akan memindahkan satu bait dengan nombor dua digit ke Arduino. Digit pertama nombor ialah nombor pin yang mana LED ini atau itu disambungkan, yang kedua ialah keadaan LED: 1 - hidup, 0 - mati.
Nombor arahan dikira dengan sangat mudah: Jika butang merah ditekan, maka nombor 60 diambil (untuk LED merah kami memilih pin ke-6 Arduino) dan 1 atau 0 ditambah kepadanya, bergantung pada sama ada LED harus sekarang hidup atau tidak. Untuk butang hijau, semuanya serupa, hanya 60, 70 diambil (kerana LED hijau disambungkan ke pin 7). Akibatnya, dalam kes kami, 4 pasukan mungkin: 60, 61, 70, 71.
Mari tulis kod yang melaksanakan semua yang telah diperkatakan.
Pakej MainActivity.java ru.amperka.arduinobtled ; import java.io.IOException ; import java.io.OutputStream ; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method ; import android.app.Activity ; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.content.Intent ; import android.os.Bundle ; import android.util.Log ; import android.view.Menu ; import android.view.View ; import android.view.View.OnClickListener; import android.widget.Toast ; import android.widget.ToggleButton ; kelas awam MainActivity memanjangkan Activity implements Lihat.OnClickListener( //Instance kelas butang kami ToggleButton redButton; ToggleButton GreenButton; //Soket yang kami gunakan untuk menghantar data ke Arduino BluetoothSocket clientSocket; //Fungsi ini berjalan secara automatik apabila aplikasi dimulakan@Override protected void onCreate(Bundle savedInstanceState) ( super .onCreate(savedInstanceState) ; setContentView(R.layout .activity_main ) ; //"Sambungkan" paparan butang dalam tetingkap aplikasi dengan pelaksanaan redButton = (ToggleButton) findViewById(R.id .toggleRedLed ); greenButton = (ToggleButton) findViewById(R.id .toggleGreenLed ); //Tambah "pendengar klik" pada butang redButton.setOnClickListener(ini); greenButton.setOnClickListener(ini); //Hidupkan bluetooth. Jika ia sudah didayakan, maka tiada apa yang akan berlaku Tali enableBT = BluetoothAdapter.ACTION_REQUEST_ENABLE ; startActivityForResult(new Intent(enableBT) , 0 ) ; //Kami mahu menggunakan penyesuai bluetooth lalai BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); //Cuba melakukan tindakan ini cuba ( //Peranti dengan alamat ini ialah Bluetooth Bee kami //Alamat ditentukan seperti berikut: wujudkan sambungan //antara PC dan modul (pin: 1234), dan kemudian lihat dalam tetapan //alamat modul sambungan. Kemungkinan besar ia akan serupa. Peranti BluetoothDevice = bluetooth.getRemoteDevice("00:13:02:01:00:09" ); //Mulakan sambungan dengan peranti Kaedah m = device.getClass().getMethod("createRfcommSocket", Kelas baharu(int.class)); clientSocket = (BluetoothSocket) m.invoke(peranti, 1); clientSocket.connect(); //Jika sebarang ralat berlaku, keluarkan mesej ke log) tangkap ( IOException SecurityException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) tangkap ( NoSuchMethodException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) tangkap ( IllegalArgumentException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) tangkap ( IllegalAccessException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) tangkap ( InvocationTargetException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) //Paparkan mesej tentang sambungan yang berjaya Toast.makeText(getApplicationContext(), "CONNECTED", Toast.LENGTH_LONG).show(); ) @Override boolean awam onCreateOptionsMenu( Menu menu) ( // Kembangkan menu; ini menambah item pada bar tindakan jika ia ada. getMenuInflater() .inflate (R.menu .main , menu) ; kembali benar; ) //Ini betul-betul fungsi yang akan dipanggil@Override public void onClick( Lihat v) ( //Cuba menghantar data cuba ( //Dapatkan aliran keluaran untuk pemindahan data Aliran Output outStream = clientSocket.getOutputStream(); nilai int = 0; //Bergantung pada butang yang ditekan, //tukar data untuk dihantar if (v == redButton) ( value = (redButton.isChecked () ? 1 : 0 ) + 60 ; ) else if (v == greenButton) ( value = (greenButton.isChecked () ? 1 : 0 ) + 70 ; ) //Tulis data ke aliran keluaran outStream.write(nilai); ) tangkap ( IOException e) ( //Jika terdapat ralat, keluarkannya ke log Log.d ("BLUETOOTH" , e.getMessage (, OUTPUT) ; pinMode(7 , OUTPUT) ; ) void loop() ( //Jika data telah sampai jika (Serial.available() > 0) ( //Baca bait masuk byte incomingByte = Serial.read(); //Dapatkan nombor pin dengan integer membahagikan nilai bait yang diterima dengan 10 //dan tindakan yang kita perlukan dengan mendapatkan baki pembahagian sebanyak 2: //(1 - menyala, 0 - matikan) digitalWrite(incomingByte / 10 , incomingByte % 2 ) ; ) )Ciri-ciri pengisian lakaran
Untuk berkomunikasi Bluetooth-Bee dengan pengawal, pin yang sama (0 dan 1) digunakan seperti untuk perisian tegar. Oleh itu, apabila memprogramkan pengawal, suis "PILIH SIRI" pada "Perisai Tanpa Wayar" mesti ditetapkan kepada kedudukan "USB", dan selepas berkelip ia mesti dikembalikan ke kedudukan "MICRO".
Hasilnya
Kesimpulan
Dalam artikel ini, kami mempelajari cara membuat aplikasi untuk sistem pengendalian Android dan memindahkan data melalui Bluetooth. Kini, apabila anda menekan butang pada skrin telefon berdasarkan sistem pengendalian Android, keadaan LED pada papan akan berubah.
Anda boleh membangunkan idea anda dan membuat antara muka yang lebih mesra pengguna pada Android, mengawal peranti yang jauh lebih kompleks dengannya, menerbitkan aplikasi hebat dalam Pasaran Android dan banyak lagi perkara yang menarik!
Cip ESP8266 ialah salah satu alat paling popular untuk mengatur komunikasi tanpa wayar dalam projek rumah pintar. Menggunakan pengawal wayarles, anda boleh mengatur komunikasi melalui antara muka WiFi, menyediakan projek Arduino dengan akses Internet dan keupayaan untuk mengawal dan mengumpul data dari jauh. Papan popular seperti WeMos dan NodeMcu, serta sejumlah besar projek buatan sendiri, telah dibuat berdasarkan ESP8266. Dalam artikel ini, kita akan mengetahui apakah ESP82266 itu, jenisnya, dan cara bekerja dengan ESP8266 dalam IDE Arduino.
ESP8266 ialah mikropengawal dengan antara muka WiFi yang mempunyai keupayaan untuk melaksanakan program daripada memori kilat. Peranti ini dikeluarkan pada tahun 2014 oleh syarikat China Espressif dan hampir serta-merta menjadi popular.
Pengawal adalah murah, mempunyai sebilangan kecil elemen luaran dan mempunyai parameter teknikal berikut:
- Menyokong protokol Wi-Fi 802.11 b/g/n dengan WEP, WPA, WPA2;
- Mempunyai 14 port input dan output, SPI, I2C, UART, 10-bit ADC;
- Menyokong memori luaran sehingga 16 MB;
- Bekalan kuasa yang diperlukan adalah dari 2.2 hingga 3.6 V, penggunaan semasa adalah sehingga 300 mA, bergantung pada mod yang dipilih.
Ciri penting ialah ketiadaan memori tidak meruap pengguna pada cip. Program ini dilaksanakan daripada ROM SPI luaran menggunakan pemuatan dinamik elemen program yang diperlukan. Akses kepada peranti dalaman boleh diperolehi bukan daripada dokumentasi, tetapi daripada API set perpustakaan. Pengilang menunjukkan jumlah anggaran RAM - 50 kB.
Ciri-ciri papan ESP8266:
- Sambungan mudah ke komputer - melalui kabel USB, dikuasakan olehnya;
- Ketersediaan penukar voltan 3.3V terbina dalam;
- Ketersediaan memori kilat 4 MB;
- Butang terbina dalam untuk but semula dan berkelip;
- Semua port disalurkan ke papan menggunakan dua sikat dengan pic 2.5 mm.
Bidang penggunaan modul ESP8266
- Automasi;
- Pelbagai sistem untuk rumah pintar: Kawalan wayarles, soket wayarles, kawalan suhu, tambahan kepada sistem penggera;
- elektronik mudah alih;
- ID Tag;
- Mainan kanak-kanak;
- Rangkaian mesh.
esp8266 pinout
Terdapat sejumlah besar jenis modul ESP8266. Rajah menunjukkan sebahagian daripadanya. Pilihan yang paling popular ialah ESP 01.
Pelaksanaan program mesti ditentukan oleh keadaan port GPIO0, GPIO2 dan GPIO15 apabila bekalan kuasa tamat. Dua mod penting boleh dibezakan - apabila kod dilaksanakan daripada UART (GPIO0 = 0, GPIO2 = 1 dan GPIO15 = 0) untuk menyalakan kad kilat dan apabila ia dilaksanakan daripada ROM luaran (GPIO0 = 1, GPIO2 = 1 dan GPIO15 = 0) dalam mod standard.
Pinout untuk ESP01 ditunjukkan dalam gambar.
Perihalan hubungan:
- 1 - tanah, 8 - kuasa. Menurut dokumentasi, voltan dibekalkan sehingga 3.6 V - ini penting untuk diambil kira apabila bekerja dengan Arduino, yang biasanya dibekalkan dengan 5 V.
- 6 – RST, diperlukan untuk but semula mikropengawal apabila tahap logik rendah digunakan padanya.
- 4 – CP_PD, juga digunakan untuk meletakkan peranti ke dalam mod penjimatan tenaga.
- 7 dan 0 – RXD0 dan TXD0, ini adalah UART perkakasan yang diperlukan untuk memancarkan modul.
- 2 – TXD0, LED disambungkan ke pin ini, yang menyala apabila tahap logik pada GPIO1 rendah dan apabila data dihantar melalui UART.
- 5 – GPIO0, port input dan output, juga membolehkan anda meletakkan peranti ke dalam mod pengaturcaraan (apabila port disambungkan ke tahap logik rendah dan voltan digunakan).
- 3 – GPIO2, port input dan output.
Pinout ESP-12
Perbezaan utama antara Arduino dan ESP8266
- ESP8266 mempunyai jumlah memori denyar yang lebih besar, manakala ESP8266 tidak mempunyai ingatan tidak meruap;
- Pemproses ESP8266 lebih pantas daripada Arduino;
- ESP8266 mempunyai Wi-Fi;
- ESP8266 menggunakan lebih banyak arus daripada Arduino;
Pengaturcaraan ESP8266 dalam Arduino IDE
Kit pembangunan esp8266 termasuk:
- Penyusun daripada Koleksi Penyusun GNU.
- Perpustakaan, WiFi, susunan protokol TCP/IP.
- Satu cara untuk memuatkan maklumat ke dalam program pengawal.
- Pengendalian IDE.
Pada mulanya, modul ESP8266 dibekalkan dengan perisian tegar daripada pengilang. Dengan bantuannya, anda boleh mengawal modul daripada mikropengawal luaran dan bekerja dengan Wi-Fi sebagai modem. Terdapat juga banyak firmware siap sedia lain. Sebahagian daripada mereka membenarkan anda untuk mengkonfigurasi operasi modul menggunakan antara muka WEB.
Boleh diprogramkan daripada Arduino IDE. Dengan bantuannya, anda boleh dengan mudah menulis lakaran dan memuat naiknya ke ESP8266, kilat ESP8266, dan tidak memerlukan papan Arduino itu sendiri. Arduino IDE menyokong semua jenis modul ESP8266.
Pada masa ini, fungsi berikut boleh dilaksanakan untuk ESP8266:
- Fungsi asas bahasa Pendawaian. Anda boleh mengawal port GPIO dengan cara yang sama seperti pin pada papan Arduino: pinMode, digitalRead, digitalWrite, analogWrite. Perintah analogRead(A0) membolehkan anda membaca nilai ADC. Menggunakan perintah analogWrite (pin, nilai), anda boleh menyambungkan PWM ke output GPIO yang dikehendaki. Apabila nilai=0, PWM dinyahdayakan, nilai maksimum mencapai pemalar bersamaan dengan 1023. Menggunakan fungsi attachInterrupt dan detachInterrupt, anda boleh mengganggu pada mana-mana port GPIO kecuali 16.
- Masa dan kelewatan. Menggunakan perintah millis dan micros anda boleh mengembalikan ms dan μs yang telah berlalu sejak mula. Kelewatan membolehkan anda menjeda pelaksanaan program untuk masa yang dikehendaki. Selain itu, fungsi kelewatan(…) membolehkan anda mengekalkan operasi Wi-Fi biasa jika lakaran mengandungi elemen besar yang mengambil masa lebih daripada 50 ms untuk dilaksanakan. Hasil() ialah analog fungsi kelewatan(0).
- Bersiri dan Bersiri1 (UART0 dan UART1). Kerja bersiri pada ESP8266 adalah serupa dengan kerja pada Arduino. Menulis dan membaca data menyekat pelaksanaan kod jika FIFO 128-bait dan penimbal perisian 256-bait penuh. Objek Serial menggunakan perkakasan UART0, anda boleh menetapkan pin GPIO15 (TX) dan GPIO13 (RX) untuknya dan bukannya GPIO1(TX) dan GPIO3(RX). Untuk melakukan ini, selepas Serial.begin(); anda perlu memanggil Serial.swap();. Begitu juga, Serial1 menggunakan UART1, yang berfungsi untuk penghantaran. Pin yang diperlukan untuk ini ialah GPIO2.
- PROGMEM Makro. Operasinya serupa dengan Arduino. Membolehkan anda mengalihkan data baca sahaja dan pemalar rentetan ke dalam memori denyar. Pada masa yang sama, ESP8266 tidak menyimpan pemalar yang sama, yang membawa kepada pembaziran tambahan memori kilat.
- I2C. Sebelum bekerja dengan bas I2C, bas dipilih menggunakan fungsi Wire.pins(int sda, int scl).
- SPI, OneWire – disokong sepenuhnya.
Menggunakan esp8266 untuk berkomunikasi dengan Arduino melalui WiFi
Sebelum menyambung ke Arduino, adalah penting untuk diingat bahawa voltan bekalan ESP8266 tidak boleh lebih tinggi daripada 3.6, manakala pada Arduino voltan ialah 5 V. Anda perlu menyambungkan 2 mikropengawal menggunakan pembahagi rintangan. Sebelum menyambungkan modul, anda perlu membiasakan diri dengan pinout ESP8266 yang dipilih. Gambar rajah sambungan untuk ESP8266-01 ditunjukkan dalam rajah.
3.3 V dari Arduino ke Vcc&CH_PD pada modul ESP8266, Ground dari Arduino ke ground dari ESP8266, 0 – TX, 1 – RX.
Untuk mengekalkan operasi yang stabil, ESP8266 memerlukan sumber voltan malar 3.3V dan arus maksimum 250mA. Jika kuasa datang daripada penukar USB-TTL, pincang tugas dan pincang tugas mungkin berlaku.
Bekerja dengan perpustakaan Wi-Fi untuk ESP8266 adalah serupa dengan perpustakaan untuk perisai biasa. Terdapat beberapa ciri:
- mod(m) – untuk memilih satu daripada tiga mod: klien, pusat akses, atau kedua-dua mod pada masa yang sama.
- softAP(ssid) – diperlukan untuk mencipta titik akses terbuka.
- softAP(ssid, kata laluan) – mencipta titik akses dengan kata laluan, yang mesti mengandungi sekurang-kurangnya 8 aksara.
- WiFi.macAddress(mac) dan WiFi.softAPmacAddress(mac) – mentakrifkan alamat MAC.
- WiFi.localIP() dan WiFi.softAPIP() – menentukan alamat IP.
- printDiag(Siri); – akan membolehkan anda mengetahui data diagnostik.
- WiFiUDP – sokongan untuk menghantar dan menerima paket multicast dalam mod klien.
Kerja dilakukan mengikut algoritma berikut:
- Menyambungkan USB-TTL ke USB dan ke ESP.
- Melancarkan Arduino IDE.
- Pilih port, papan, kekerapan dan saiz memori kilat yang diperlukan dalam menu alatan.
- Fail - Contoh - ESP8266WiFi - WiFiWebServer.
- Tulis SSID dan kata laluan rangkaian Wi-Fi dalam lakaran.
- Mula menyusun dan memuat naik kod.
- Tunggu proses perisian tegar selesai, putuskan sambungan GPIO0 dari tanah.
- Tetapkan kelajuan kepada 115200.
- Sambungan akan berlaku dan alamat IP akan direkodkan.
- Buka penyemak imbas, masukkan nombor IP/gpio/1 dalam bar alamat
- Lihat monitor port; jika LED disambungkan ke output GPIO2, ia akan menyala.
NodeMCU berdasarkan esp8266
NodeMCU ialah platform berdasarkan modul esp8266. Digunakan untuk mengawal litar dari jauh menggunakan Internet melalui Wi-Fi. Papan ini bersaiz kecil, padat, murah dan mempunyai penyambung USB di bahagian hadapan. Berdekatan adalah butang untuk nyahpepijat dan but semula mikropengawal. Cip ESP8266 juga dipasang. Voltan bekalan adalah dari 5 hingga 12 V, adalah dinasihatkan untuk membekalkan lebih daripada 10 V.
Kelebihan besar papan adalah penggunaan kuasa yang rendah. Ia sering digunakan dalam litar berkuasa sendiri. Terdapat hanya 11 port tujuan umum pada papan, beberapa daripadanya mempunyai fungsi khas:
- D1 dan D2 – untuk antara muka I2C/ TWI;
- D5-D8 - untuk antara muka SPI;
- D9, D10 – untuk UART;
- D1-D10 – boleh berfungsi sebagai PWM.
Platform ini mempunyai API moden untuk input dan output perkakasan. Ini membolehkan anda mengurangkan bilangan langkah semasa bekerja dengan peralatan dan semasa menyediakannya. Dengan bantuan perisian tegar NodeMCU, anda boleh menggunakan potensi operasi penuh untuk pembangunan peranti pantas.
WeMos berdasarkan esp8266
WeMos ialah satu lagi jenis platform berdasarkan mikropengawal esp8266. Sehubungan itu, terdapat modul Wi-Fi, Arduino IDE disokong, dan terdapat penyambung untuk antena luaran. Papan mempunyai 11 input/output digital, yang (kecuali D0) menyokong gangguan/pwm/I2C/satu wayar. Voltan bekalan maksimum mencapai 3.3 V. Terdapat juga penyambung USB pada platform. Input analog 1 dengan voltan maksimum 3.2V.
Untuk bekerja dengan modul, anda perlu memasang pemacu CH340 dan mengkonfigurasi Arduino IDE untuk ESP8266. Untuk melakukan ini, anda perlu menambah alamat http://arduino.esp8266.com/stable/package_esp8266com_index.json dalam menu tetapan dalam baris "pautan tambahan untuk pengurus papan".
Selepas ini, anda perlu mencari pakej esp8266 by ESP8266 dan memasangnya. Kemudian anda perlu memilih mikropengawal Wemos D1 R2 dari menu alat dan tuliskan lakaran yang dikehendaki.
Kesimpulan mengenai ESP8266
Dengan papan berdasarkan cip ESP8266, anda boleh menambah keupayaan Internet Besar pada projek anda, menjadikannya lebih pintar. Kawalan jauh, pengumpulan dan analisis data pada pelayan, pemprosesan suara dan pemprosesan imej - semua ini tersedia apabila kami menyambungkan projek kami melalui WiFi ke Internet. Dalam artikel berikut, kami akan melihat dengan lebih dekat bagaimana anda boleh memprogram peranti berasaskan esp8266, dan juga memberi perhatian kepada papan popular seperti WeMos dan NodeMcu.
Ini adalah cerita pendek tentang cara membina robot dalam bentuk kereta mainan dengan kamera video, yang boleh dikawal menggunakan komputer atau telefon pintar pada OS Android melalui WiFi. Peranti tidak mempunyai apa-apa autonomi dalam erti kata kelakuannya (seperti mengenali sesuatu), kawalan hanya daripada seseorang, jadi "robot" bukanlah perkataan yang tepat dalam namanya.
Semuanya bermula dengan fakta bahawa idea mengawal peranti mainan dari orang pertama (yang dipanggil FPV) kelihatan sangat menarik bagi saya dari sudut pandangan proses itu sendiri. Lagipun, kita boleh menyedari kehadiran kita, bukan di dunia maya, tetapi di alam nyata.
Cara termudah dan terpantas untuk menggunakan idea ini ialah kereta mainan atau model. Teknologi semasa seharusnya membolehkan industri melakukan ini dan menawarkan banyak perkara yang serupa. Walau bagaimanapun, cadangan ini ternyata agak mahal berbanding dengan apa yang anda boleh lakukan sendiri.
Memandangkan ini adalah projek pertama saya, saya tidak tahu cara memprogram atau memateri dengan betul, dan saya memutuskan untuk melihat di Internet terlebih dahulu untuk orang yang berfikiran sama dan penyelesaian mereka kepada masalah ini.
Setelah mula meneroka pilihan untuk melaksanakan idea ini, saya mendapati penerangan yang sangat terperinci tentang projek yang serupa . Dan pengarangnya gembira membantu saya memahami masalah yang timbul semasa mencipta robot.
Itulah cara saya mula-mula belajar apa itu…duino. Oleh kerana ini adalah versi mikropengawal sedia, di mana tidak perlu menyolder pendawaian kepadanya, saya memilihnya. Saya juga sangat menyukai kehadiran pemuat but yang membolehkan anda menyalakan mikropengawal tanpa pengaturcara.
Untuk melaksanakan projek ini, anda memerlukan:
- Pengawal mikro Arduino (mana-mana: nano, uno, mega)
- Bateri 9.6 volt
- Kereta kawalan radio Cina
- Penghala dir320 (atau mana-mana perisian tegar OPEN-WRT sokongan lain)
- Kamera web Logitech c310 atau mana-mana yang lain dengan aliran UVC
Terdapat lima program: pada PC, pada Android, pada penghala (pelayan kawalan dan aliran video), dan pada mikropemproses.
Cara ia berfungsi: kami menyambungkan komputer meja (komputer riba, selepas ini dirujuk sebagai PC) dengan penghala melalui WiFi. Pada penghala, apabila anda menghidupkannya, 2 program dimuatkan secara automatik:
1) pelayan. Program ini membuka soket (sambungan) pada port tertentu dan menunggu pelanggan menyambung kepadanya pada port ini (sebarang program yang mengakses port ini dan juga, dengan cara yang istimewa, memberitahu pelayan bahawa ia bersedia untuk berfungsi melalui soket terbuka). Selanjutnya, selepas sambungan diwujudkan, semua yang datang dari klien akan dialihkan ke laluan tertentu, bagi kami ini adalah port COM, mikropemproses disambungkan ke port ini. Dan sebaliknya, semua yang datang dari port COM akan dihantar kepada pelanggan.
2) program pemprosesan video, menangkapnya daripada kamera USB dan menghantarnya ke port tertentu. Untuk melihatnya, anda hanya perlu disambungkan ke penghala pada port ini.
Selepas sambungan WiFi telah diwujudkan antara komputer dan penghala, kami melancarkan program pada PC untuk mengawal robot (pelanggan yang sama), program ini menyambung ke program pelayan pada penghala. Program yang sama atau lain menyiarkan video daripada penghala WiFi.
Seterusnya, pengguna boleh mengawal kereta dan menekan, sebagai contoh, butang "ke hadapan". Program pada PC menghantar arahan "ke hadapan" terus ke penghala, ke IPnya, tetapi ke port tertentu. Pada penghala, arahan ini pergi ke program pelayan, kerana ia dihantar ke portnya, dan dalam soket terbuka untuk tujuan ini. Program pelayan, tanpa melakukan apa-apa dengan arahan ini, hanya menghantarnya ke port COM. Oleh itu, arahan "ke hadapan" berakhir di mikropemproses, yang, sebagai tindak balas kepadanya, memberikan isyarat "ke hadapan" kepada salah satu pinnya. Litar kawalan motor disambungkan kepada pin pemproses sedemikian, kerana Mikropemproses itu sendiri tidak dapat mengawalnya kerana kuasanya yang rendah.
Ia tidak mungkin untuk mengawal penggerak melalui penghala tanpa mikropemproses, kerana mikropemproses boleh menjana isyarat "1" (voltan >2.5v) atau "0" (kurang daripada yang ditunjukkan) pada mana-mana sedozen atau dua pinnya. Penghala tidak mempunyai output, hanya terdapat port input/output, seperti USB atau COM (siri), yang mempunyai 2-3 wayar.
Sekarang bahagian praktikal. Saya akan mengatakan terlebih dahulu bahawa walaupun terdapat kesulitan yang jelas, semuanya sebenarnya mudah jika kita bercakap tentang hanya menyalin projek ini - selepas semua, semuanya telah dilakukan dan berfungsi. Anda hanya perlu mengikut arahan ini dengan tepat.
Pada mulanya, mikropengawal adalah freeduino maxserial yang mempunyai port com, yang merupakan salah satu daripada beberapa (seperti yang saya fikirkan) untuk menyambung ke penghala uart untuk ini anda perlu memateri penyesuai dari uarta ke com untuk menyambungkannya ke penghala. Saya tidak begitu mahu mengambilnya, kerana yang asal masih Arduino, dan tiada Freeduino di Ukraine.
![](https://i1.wp.com/arduino-kit.com.ua/images/intro/image1.jpg)
Seperti yang saya ketahui kemudian, itu semua hanyalah pengumpulan skim yang tidak perlu. Anda boleh bertahan dengan hanya 1 wayar yang akan pergi dari penghala TX (dalam rajah) ke RX (0 pin) mikropengawal.
Tidak jelas mengapa, tetapi pada Freeduin ternyata untuk sambungan biasa anda memerlukan tx to tx. Kemungkinan besar sebutan itu tidak betul. (di sini 0 pin tx) Atas sebab ini adalah lebih baik untuk mengambil yang asal .
Saya membeli kereta yang bagus, walaupun ia adalah kereta Cina
![](https://i2.wp.com/arduino-kit.com.ua/images/intro/mashinka.jpg)
Mesin itu ternyata sangat berkuasa, ia menarik 5 kg pada permukaan rata dengan sangat yakin. Ia juga disertakan dengan bateri 6 volt. Bagi elektronik, mesin sudah mempunyai pemacu motor siap pakai, yang mana anda boleh membekalkan output kawalan arus rendah daripada mikropengawal (jika anda tidak bernasib baik dengan mesin itu, pemandu motor juga boleh diambil dari arduino)
Penghala memerlukan perisian tegar openwrt dan senarai pakej yang ditunjukkan dalam rajah.
![](https://i1.wp.com/arduino-kit.com.ua/images/intro/image2.jpg)
Penghala boleh dikonfigurasikan sebagai pusat akses yang mana mana-mana peranti dengan WiFi boleh disambungkan. Dan, walaupun tiada perisian untuk mengawal mesin, gunakannya sebagai kamera pengawasan video tanpa wayar.
Kamera c310 hanya menyambung ke port USB pada penghala dan tidak memerlukan pematerian; ia memerlukan tetapan kecil dalam penghala. Projek ini mempunyai 2 litar kuasa, 1 litar dikuasakan oleh 9.6 volt - penghala dan mikropengawal, 2 litar dikuasakan oleh 6 volt - pemacu dan gear stereng. Anda boleh bertahan dengan hanya 1 bekalan kuasa 9.6 volt, tetapi lebih kapasitif. Penghala menggunakan 2A, mikropengawal menggunakan hampir tidak dapat dilihat, mesin menggunakan 4A.
Program mikropengawal memproses mesej yang datang dari port bersiri penghala, pemprosesan berlaku bait demi bait melalui portb arduino, sebagai contoh, jika ia datang ke penghala 2, maka, menukar kepada sistem binari, kita mendapat 00000010 - yang sepadan dengan pin 2 pada portb. Penyelesaian ini membolehkan anda menguruskan beberapa pin secara serentak. Inilah yang kami selesaikan:
![](https://i2.wp.com/arduino-kit.com.ua/images/intro/image3.jpg)
Aplikasi Android:
![](https://i0.wp.com/arduino-kit.com.ua/images/intro/image4.jpg)
Aplikasi PC:
![](https://i2.wp.com/arduino-kit.com.ua/images/intro/image5.jpg)
Projek ini belum selesai dan terus ditambah baik.
Kami merancang untuk menggunakan arduino mega, penghala mr3020, biarkan kamera web seperti sedia ada (mungkin menambah kanta sfera untuk paparan yang lebih besar), gunakan shim untuk kawalan lancar dan tepat, gunakan servo untuk pusingan, tambah pencari jarak. Tambahkan video pada Android.
- katalog lengkap papan