Bir ev robotunu Bluetooth üzerinden kontrol etmek için bir Android uygulaması oluşturuyoruz. Arduino'yu Android'e Bağlamanın Altı Kolay Yolu
Wi-Fi modülü ile.
Açık Arduino Uno Her şey için Wi-Fi sağlandı rahat çalışma mikrokontrolörlü: 14 dijital giriş/çıkış (bunlardan 6'sı PWM çıkışı olarak kullanılabilir), 6 analog giriş, USB konektörü, güç konektörü, devre içi programlama konektörü (ICSP) ve mikrokontrolör sıfırlama düğmesi.
Kartın öne çıkan özelliği, Arduino'nun diğer modüllerle iletişim kurmasını sağlayan ESP8266 WiFi modülüdür. kablosuz Ağlar 802.11 b/g/n standartları.
ESP8266, USB kablosu kullanmadan bir Arduino kartını flaşlamanıza olanak tanır OTA modu(Kablosuz Firmware - “kablosuz firmware”).
Kurulun video incelemesi
Bağlantı ve kurulum
Arduino Uno WiFi kartını kullanmaya başlamak için işletim sistemi Windows, Arduino IDE'yi bilgisayarınıza indirip yükleyin - Arduino IDE'si.
Bir şeyler yanlış gitti?
WiFi modülünü yapılandırma
WiFi üzerinden Arduino Firmware'i
Arduino Uno WiFi'nin stoklarında bir tane daha var güzel bonus- OTA (Kablosuz Firmware) modunda USB kablosu kullanmadan çizimleri yükleme yeteneği. Bunun nasıl yapılacağına daha yakından bakalım.
Bunu yapmak için menüye girin: Aletler Liman ve doğru bağlantı noktasını seçin.
Arduino'yu WiFi üzerinden flashladığımız için kart, IP adresine sahip uzak bir cihaz olarak tanımlanacaktır.
Ortam yapılandırılır, kart bağlanır. Krokiyi indirmeye devam edebilirsiniz. Arduino IDE geniş bir liste içeriyor hazır örnekler, herhangi bir sorunun çözümünü gözetleyebileceğiniz. Örnekler arasından LED'in yanıp sönmesini - "Yanıp Sönme" taslağını seçelim.
Program indirme simgesine tıklayarak panoyu flaşlayın.
Yükleme sonrasında LED saniyede bir kez yanıp sönmeye başlayacaktır. Bu, her şeyin yolunda gittiği anlamına gelir.
Şimdi şu adrese gidebilirsiniz: kullanım durumları.
Kullanma örnekleri
Web sunucusu
Analog girişlerin güncel değerlerini içeren bir sayfayı görüntüleyecek basit bir web sunucusu kuralım.
web-server.ino /* Arduino Uno WiFi üzerinde çalışan basit bir web sunucusu örneği. Sunucu, analog girişlerin değerlerini görüntüler ve bilgileri her iki saniyede bir günceller. Sunucuya http:// adresinden erişinAnalog pinlerden değer çıkışı örneği
" ) ); istemci.print("- " ); for (int analogKanal = 0 ; analogKanal<
4
;
analogChannel++
)
{
int
sensorReading =
analogRead(analogChannel)
;
client.print
("
- analog girişte " ) ); client.print(analogKanal); client.print(": " ); client.print(sensörOkuma); client.print("" ) ; ) client.println("
Yönetim Kurulu elemanları
Mikrodenetleyici ATmega328P
Arduino Uno WiFi platformunun kalbi 8 bitlik AVR mikrokontrolcüsü ATmega328P'dir.
Mikrodenetleyici ATmega16U2
ATmega16U2 mikro denetleyicisi, ATmega328P mikro denetleyicisini bilgisayarın USB bağlantı noktasına bağlar. Arduino Uno WiFi, bir bilgisayara bağlandığında sanal COM bağlantı noktası olarak tanımlanır. 16U2 çip ürün yazılımının kullanım alanları standart sürücüler USB-COM, dolayısıyla harici sürücülerin kurulumu gerekli değildir.
Güç pimleri
ŞASE: Harici bir güç kaynağından gelen voltaj (USB'den gelen 5V veya diğer stabilize voltajla ilişkili değildir). Bu çıkış sayesinde hem harici güç sağlayabilir hem de cihaza harici bir adaptör bağlanması durumunda akım tüketebilirsiniz.
5V:Çıkış, kart dengeleyicisinden 5 V'luk bir voltaj alır. Bu dengeleyici ATmega328 mikro denetleyicisine güç sağlar. Cihaza 5V çıkış üzerinden güç verilmesi önerilmez - bu durumda voltaj dengeleyici kullanılmaz, bu da kartın arızalanmasına neden olabilir.
3.3V: Kart regülatöründen 3,3V. Maksimum çıkış akımı 1 A'dır.
TOPRAK: Temel sonuçlar.
- IOREF: Pin, genişletme kartlarına mikro denetleyicinin çalışma voltajı hakkında bilgi sağlar. Gerilime bağlı olarak genişletme kartı uygun güç kaynağına geçebilir veya seviye dönüştürücüleri kullanabilir, bu da hem 5V hem de 3,3V cihazlarla çalışmasına olanak tanır.
G/Ç bağlantı noktaları
Dijital girişler/çıkışlar: 0 - 13 arası pinler
Birinin lojik seviyesi 5 V, sıfır ise 0 V'dir. Maksimum çıkış akımı 40 mA'dir. Çekme dirençleri, varsayılan olarak devre dışı olan ancak yazılım tarafından etkinleştirilebilen pinlere bağlanır.
PWM: 3, 5, 6, 9, 10 ve 11 numaralı pinler
8 bitlik analog değerlerin PWM sinyali olarak çıkışını yapmanızı sağlar.
ADC: A0 - A5 pinleri
Her biri analog voltajı 10 bitlik bir sayı (1024 değer) olarak temsil edebilen 6 analog giriş. ADC'nin bit derinliği 10 bittir.
TWI/I²C: SDA ve SCL pinleri
2 kablo aracılığıyla senkronize bir protokol kullanarak çevre birimleriyle iletişim kurmak için. Çalışmak için Wire kütüphanesini kullanın.
SPI: pinler 10(SS), 11(MOSI), 12(MISO), 13(SCK).
Bu pinler aracılığıyla SPI arayüzü üzerinden iletişim gerçekleştirilir. Çalışmak için SPI kütüphanesini kullanın.
- UART: pinler 0(RX) ve 1(TX)
Bu pinler, USB-UART dönüştürücü görevi gören ATmega16U2 mikro denetleyicisinin ilgili pinlerine bağlanır. Arduino kartını Serial sınıfı aracılığıyla bir bilgisayar veya diğer cihazlarla iletişim kurmak için kullanılır.
LED göstergesi
USB Tip-B konektörü
bağlayıcı USB Tip-B Arduino Uno WiFi platformunu bir bilgisayar kullanarak flaşlamak için tasarlanmıştır.
Harici güç kaynağı için konnektör
7 V ila 12 V arası harici güç kaynağı için konnektör.
5V voltaj regülatörü
Kart harici bir güç kaynağına bağlandığında voltaj MPM3610 regülatöründen geçer. Stabilizatör çıkışı 5V pinine bağlanır. Maksimum çıkış akımı 1A'dır.
3.3V voltaj regülatörü
3,3 volt çıkışlı MPM3810GQB-33 dengeleyici. ESP8266 WiFi modülüne güç sağlar ve 3,3V pinine çıkış yapar. Maksimum çıkış akımı 1A'dır.
ATmega328P için ICSP konektörü
ICSP konektörü, ATmega328P mikro denetleyicisinin devre içi programlanması için tasarlanmıştır. SPI kütüphanesini kullanan bu pinler, SPI arayüzü üzerinden genişletme kartlarıyla iletişim kurabilir. SPI hatları 6 pinli bir konnektöre yönlendirilir ve ayrıca 10(SS), 11(MOSI), 12(MISO) ve 13(SCK) dijital pinlerinde kopyalanır.
ATmega16U2 için ICSP konektörü
ICSP konektörü, ATmega16U2 mikro denetleyicisinin devre içi programlanması için tasarlanmıştır.
ESP8266 yongası, projelerde kablosuz iletişimi organize etmek için en popüler araçlardan biridir. akıllı ev. Kablosuz denetleyicinin yardımıyla WiFi arayüzü üzerinden iletişimi düzenleyebilir, Arduino projeleriİnternet erişimi ve uzaktan kontrol ve veri toplama imkanı. ESP8266'ya dayanarak WeMos ve NodeMcu gibi popüler panoların yanı sıra çok sayıda ev yapımı proje oluşturuldu. Bu yazımızda ESP82266'nın ne olduğunu, çeşitlerinin neler olduğunu, Arduino IDE'de ESP8266 ile nasıl çalışılacağını öğreneceğiz.
ESP8266, programları flash bellekten çalıştırabilen bir WiFi mikro denetleyicisidir. Cihaz 2014 yılında piyasaya sürüldü Çinli bir firma tarafından Espressif ve neredeyse anında popüler oldu.
Kontrolör ucuzdur, az sayıda harici elemana sahiptir ve aşağıdaki teknik parametrelere sahiptir:
- WEP, WPA, WPA2 ile 802.11 b/g/n Wi-Fi protokollerini destekler;
- 14 giriş ve çıkış bağlantı noktasına, SPI, I2C, UART, 10 bit ADC'ye sahiptir;
- Destekler harici bellek 16 MB'a kadar;
- Gerekli güç kaynağı 2,2 ila 3,6 V arasındadır, seçilen moda bağlı olarak akım tüketimi 300 mA'ya kadardır.
Önemli bir özellik, çip üzerinde kullanıcının kalıcı belleğinin bulunmamasıdır. Program, gerekli program öğelerinin dinamik yüklenmesi kullanılarak harici bir SPI ROM'dan yürütülür. Dahili çevre birimlerine erişim, belgelerden değil, bir dizi kitaplığın API'sinden elde edilebilir. Üretici yaklaşık RAM miktarını belirtir - 50 kB.
ESP8266 Anakart Özellikleri:
- Bilgisayara rahat bağlantı USB kablosu, onun tarafından desteklenmektedir;
- Dahili bir voltaj dönüştürücünün varlığı 3.3V;
- 4 MB flash belleğin kullanılabilirliği;
- Yeniden başlatma ve yanıp sönme için yerleşik düğmeler;
- Tüm portlar 2,5 mm aralıklı iki tarak üzerinde karta getirilir.
ESP8266 modülünün uygulama alanları
- Otomasyon;
- Çeşitli akıllı ev sistemleri: Kablosuz kontrol, kablosuz prizler, sıcaklık kontrolü, alarm sistemlerine ek olarak;
- Mobil elektronik;
- etiket kimliği;
- Çocuk oyuncakları;
- Örgü ağları.
esp8266 pin çıkışı
ESP8266 modülünün çok sayıda çeşidi vardır. Şekil bunlardan bazılarını göstermektedir. En popüler seçenek ESP 01'dir.
Programın yürütülmesi, güç kaynağı sona erdiğinde GPIO0, GPIO2 ve GPIO15 bağlantı noktalarının durumuna göre belirtilmelidir. 2 önemli mod vardır - flash kartı flaşlamak için kod UART'tan çalıştırıldığında (GPIO0 = 0, GPIO2 = 1 ve GPIO15 = 0) ve harici ROM'dan çalıştırıldığında (GPIO0 = 1, GPIO2 = 1 ve GPIO15 = 0) standart modda.
ESP01'in pin çıkışı resimde gösterilmektedir.
İletişim Açıklaması:
- 1 - toprak, 8 - güç. Belgelere göre voltaj 3,6 V'a kadar sağlanıyor - genellikle 5 V ile beslenen Arduino ile çalışırken bunun dikkate alınması önemlidir.
- 6 - RST, mikrodenetleyiciye düşük mantık seviyesi uygulandığında yeniden başlatılması gerekiyor.
- 4 - CP_PD, cihazı güç tasarrufu moduna geçirmek için de kullanılır.
- 7 ve 0 - RXD0 ve TXD0, bu, modülü flaşlamak için gereken bir donanım UART'ıdır.
- 2 - TXD0, bu pin'e GPIO1'de lojik seviye düşük olduğunda ve UART üzerinden veri iletildiğinde yanan bir LED bağlanır.
- 5 - GPIO0, giriş ve çıkış portu, aynı zamanda cihazı programlama moduna almanızı sağlar (port düşük mantık seviyesine bağlandığında ve voltaj uygulandığında).
- 3 - GPIO2, giriş ve çıkış bağlantı noktası.
ESP-12 Pin Çıkışı
Arduino ve ESP8266 arasındaki temel farklar
- ESP8266'nın flash belleği daha fazlayken, ESP8266'nın kalıcı belleği yoktur;
- ESP8266 işlemci Arduino'dan daha hızlıdır;
- ESP8266'da Wi-Fi vardır;
- ESP8266, Arduino'dan daha fazla akım tüketir;
Arduino IDE'de ESP8266'nın Programlanması
esp8266 geliştirme kiti şunları içerir:
- GNU Derleyici Koleksiyonundan derleyici.
- Kütüphaneler, WiFi, TCP/IP protokol yığınları.
- Denetleyici programına bilgi yüklemenin bir yolu.
- IDE'yi çalıştırıyorum.
Başlangıçta ESP8266 modülleri üreticinin ürün yazılımıyla birlikte gönderilir. Onun yardımıyla modülü harici bir mikrodenetleyiciden kontrol edebilir, modemde olduğu gibi Wi-Fi ile çalışmayı gerçekleştirebilirsiniz. Ayrıca başka birçok şey var hazır yazılım. Bazıları modülü WEB arayüzünü kullanarak yapılandırmanıza izin verir.
den programlanabilir Arduino ortamları IDE. Onun yardımıyla kolayca eskizler yazıp bunları ESP8266'ya yükleyebilir, ESP8266'yı flaşlayabilirsiniz ve Arduino kartının kendisine gerek yoktur. Arduino IDE her türlü ESP8266 modülünü destekler.
İÇİNDE şu anda ESP8266 için aşağıdaki işlevler uygulanabilir:
- Kablolama dilinin temel işlevleri. GPIO bağlantı noktalarını Arduino kartındaki pinlerle aynı şekilde kontrol edebilirsiniz: pinMode, digitalRead, digitalWrite, analogWrite. AnalogRead(A0) komutu ADC değerlerini okumanızı sağlar. AnalogWrite (pin, değer) komutunu kullanarak PWM'yi istediğiniz GPIO çıkışına bağlayabilirsiniz. Değer=0 ile PWM devre dışı bırakılır, maksimum değer 1023 sabit değerine ulaşır.attachInterrupt, detachInterrupt işlevlerini kullanarak 16 hariç herhangi bir GPIO bağlantı noktasını kesebilirsiniz.
- Zamanlama ve gecikme. Millis ve micros komutlarını kullanarak başlangıçtan bu yana geçen ms ve ms'leri geri döndürebilirsiniz. Gecikme, programın yürütülmesini istediğiniz süre boyunca duraklatmanıza olanak tanır. Ayrıca, gecikme(...) işlevi normal bir süreyi korumanıza olanak tanır. Wi-Fi işlemiÇizimin tamamlanması 50 ms'den uzun süren büyük öğeler içeriyorsa. Yield(), gecikme(0) işlevine benzer.
- Seri ve Seri1 (UART0 ve UART1). ESP8266 üzerindeki seri çalışma arduinodaki çalışmaya benzer. Veri yazma ve okuma, 128 baytlık FIFO ve 256 baytlık program arabelleği doluysa kod yürütülmesini engeller. Seri nesnesi UART0 donanımını kullanır ve GPIO1(TX) ve GPIO3(RX) yerine GPIO15 (TX) ve GPIO13 (RX) olarak ayarlanabilir. Bunu yapmak için Serial.begin() fonksiyonundan sonra; Serial.swap();'ı aramanız gerekir. Benzer şekilde Seri1, iletim olarak çalışan UART1'i kullanır. Bu GPIO2 için gerekli pin.
- PROGMEM makrosu. Çalışması Arduino'daki çalışmaya benzer. Salt okunur verilerin ve dize sabitlerinin flash belleğe taşınmasına izin verir. Aynı zamanda, aynı sabitler ESP8266'da saklanmaz, bu da ek flash bellek israfına yol açar.
- I2C. I2C veri yolu ile çalışmaya başlamadan önce, Wire.pins(int sda, int scl) işlevi kullanılarak veri yolları seçilir.
- SPI, OneWire tamamen desteklenmektedir.
Arduino'yu WiFi üzerinden iletişim kurmak için esp8266 kullanma
Arduino'ya bağlamadan önce, Arduino kartındaki voltaj 5 V iken ESP8266 besleme voltajının 3,6'dan yüksek olamayacağını unutmamak gerekir. 2 mikrodenetleyiciyi rezistif bölücüler kullanarak bağlamanız gerekir. Modülü bağlamadan önce seçilen ESP8266'nın pin şemasını öğrenmeniz gerekir. ESP8266-01'in bağlantı şeması şekilde gösterilmiştir.
Arduino'dan ESP8266 modülünde Vcc&CH_PD'ye 3,3V, Arduino'dan ESP8266'ya, 0 - TX, 1 - RX'ten toprağa.
Destek için kararlı çalışma ESP8266'nın kaynağa ihtiyacı var sabit voltaj 3,3 V'ta ve maksimum 250 mA akımda. Güç USB-TTL dönüştürücüden geliyorsa arızalar ve arızalar meydana gelebilir.
ESP8266 için Wi-Fi kitaplığıyla çalışmak, sıradan bir kalkanın kitaplığına benzer. Birkaç özellik var:
- mod(m) - üç moddan birini seçmek için: istemci, erişim noktası veya her iki mod aynı anda.
- softAP(ssid) - açık erişim noktası oluşturmak için gereklidir.
- softAP(ssid, şifre) - en az 8 karakter uzunluğunda olması gereken bir şifreye sahip bir erişim noktası oluşturur.
- WiFi.macAddress(mac) ve WiFi.softAPmacAddress(mac) - MAC adresini belirtir.
- WiFi.localIP() ve WiFi.softAPIP() - IP adresini belirleme.
- printDiag(Seri); - Teşhis bilgileri sağlar.
- WiFiUDP - istemci modunda çok noktaya yayın paketinin iletilmesi ve alınması desteği.
Çalışma aşağıdaki algoritmaya göre gerçekleştirilir:
- USB-TTL'yi USB'ye ve ESP'ye bağlama.
- Arduino IDE'yi başlatın.
- Araçlar menüsünden istediğiniz bağlantı noktasını, kartı, frekansı ve flash belleğin boyutunu seçin.
- Dosya - Örnekler - ESP8266WiFi - WiFiWebServer.dll
- Taslağa Wi-Fi ağının SSID'sini ve şifresini yazın.
- Kodu derlemeye ve indirmeye başlayın.
- Firmware işleminin sonuna kadar bekleyin, GPIO0'un toprakla olan bağlantısını kesin.
- Hızı 115200 olarak ayarlayın.
- Bağlantı kurulacak ve IP adresi kaydedilecektir.
- Tarayıcıyı açın, yazın adres çubuğu IP numarası/gpio/1
- Bağlantı noktası monitörünü görüntüleyin; GPIO2 çıkışına bir LED bağlıysa yanması gerekir.
Esp8266 tabanlı NodeMCU
NodeMCU, esp8266 modülünü temel alan bir platformdur. Wi-Fi üzerinden interneti kullanarak devreyi uzaktan kontrol etmek için kullanılır. Kart küçük, kompakt, ucuzdur ve ön tarafında bir USB konektörü vardır. Yakınlarda mikro denetleyicide hata ayıklama ve yeniden başlatma düğmeleri bulunur. ESP8266 yongası da kuruludur. Besleme voltajı 5 ila 12 V arasındadır, 10 V'tan fazlasının sağlanması arzu edilir.
Kartın en büyük avantajı düşük güç tüketimidir. Genellikle kendi kendine çalışan devrelerde kullanılırlar. Kartta yalnızca 11 bağlantı noktası var genel amaçlı, bazılarının özel işlevleri vardır:
- D1 ve D2 - I2C / TWI arayüzü için;
- D5-D8- SPI arayüzü için;
- D9, D10 - UART için;
- D1-D10 - PWM olarak çalışabilir.
Platform, donanım girişi ve çıkışı için modern bir API'ye sahiptir. Bu, ekipmanla çalışırken ve kurulumu sırasında eylem sayısını azaltmanıza olanak tanır. NodeMCU ürün yazılımı ile hızlı cihaz geliştirme için tüm çalışma potansiyelini kullanabilirsiniz.
Esp8266 tabanlı WeMos
WeMos, esp8266 mikro denetleyicisini temel alan başka bir platform türüdür. Buna göre bir Wi-Fi modülü var, Arduino IDE destekleniyor, harici anten için bir konektör var. Kartta, kesme/pwm/I2C/tek kabloyu destekleyen (D0 hariç) 11 dijital giriş/çıkış bulunur. Maksimum besleme voltajı 3,3 V'a ulaşır. Platformda ayrıca bir USB konektörü de bulunmaktadır. Maksimum 3,2V voltajlı analog giriş 1.
Modülle çalışmak için CH340 sürücüsünü kurmanız ve Arduino IDE'yi ESP8266 için yapılandırmanız gerekir. Bunu yapmak için ayarlar menüsünde "pano yöneticisi için ek bağlantı" satırına http://arduino.esp8266.com/stable/package_esp8266com_index.json adresini ekleyin.
Bundan sonra esp8266 by ESP8266 paketini bulup yüklemeniz gerekiyor. Daha sonra araçlar menüsünden Wemos D1 R2 mikro denetleyicisini seçip istediğiniz taslağı yazmanız gerekiyor.
ESP8266 Sonuçları
ESP8266 yongasını temel alan kartlarla şunları ekleyebilirsiniz: büyük internet”, onları çok daha akıllı hale getiriyor. Uzaktan kumanda, sunucuda veri toplama ve analiz, ses işleme ve görüntü işleme - tüm bunlar, projemizi WiFi aracılığıyla internete bağladığımızda kullanılabilir hale gelir. Sonraki yazılarda esp8266 tabanlı cihazları nasıl programlayabileceğinize daha yakından bakacağız ve ayrıca WeMos ve NodeMcu gibi popüler anakartlara da dikkat edeceğiz.
Arduino kartları ve benzeri mikrodenetleyicilerin yaratıcılığı her zamankinden daha erişilebilir hale getirdiğini yazıyorlar. Kullanım amacı ne olursa olsun - evinizi otomatikleştirmek veya kontrol etmek LED şeritler ve hatta mülkünüzü korumak için bu muhteşem küçük teknik cihazlarçoğu DIY elektronik cihazın temelidir.
Arduino'nuza pin atlama tellerinin konumunu değiştirmesi talimatını vermeniz gerekiyorsa (örneğin, ışığı açın), o zaman Arduino kullanıcının tuşuna basmasını isteyecektir. fiziksel düğme veya bir sensör kullanın. Birçok proje için, insan parmağının baskısını kullanmak veya cihazları kontrol etmek için benzer yöntemleri kullanmak tamamen kabul edilebilir, ancak yalnızca uzaktan erişime sahip bir devre oluşturmak istiyorsanız ne uygulanmalıdır?
Bu makale şunları sağlar: Kısa Açıklama Android cihazınızı herhangi bir uyumlu Arduino kartına bağlamanın altı yolu.
1. ArduinoDroid eskizler oluşturmanıza olanak sağlar
Listemizdeki ilk cihaz ArduinoDroid'dir. Bu uygulama, mobil cihazınızı bir USB kablosuyla Arduino'ya bağlayan USB On The Go (OTG) aracılığıyla çalışır. Biri USB'nin avantajları kablo, cihazın çalışması için internete veya Bluetooth'a bağlanma ihtiyacının olmamasıdır.
Uygulama, kullanıcının akıllı telefona kod yazmasına, Dropbox'ta saklanan önceden yazılmış eskizleri yüklemesine veya Google sürücü ve ardından derleme işlemini başlatın.
ArduinoDroid uygulamasını kullanmanın faydaları açıktır. Elinizde bir IDE'nin olması, alanlarda hızlı bir şekilde değişiklik yapmanıza olanak tanır ve bir Android cihazını takma işlemi, büyük bir dizüstü bilgisayarı ellerinizde dengelemeye çalışmaktan daha az karmaşık ve zaman alıcıdır!
ArduinoDroid uygulamasının bariz dezavantajı, cihazınızda kod yazmanın, özellikle de bu amaçla bir akıllı telefon kullanıyorsanız, biraz acı verici olabilmesidir. Ancak uygulamanın bu zayıf noktası, terazinin bir tarafında internet bağlantısına ihtiyaç duymadan anakartınızda ultra taşınabilir bir programlama yöntemine sahip olmanın rahatlığı, diğer tarafında ise terazinin diğer tarafında çok belirgin değil. pek rahat bir kod yazma yöntemi değildir.
Öte yandan ArduinoDroid'e sahip olmak öğrenmenin ucuz bir yoludur Arduino'nun temelleriçünkü bir Arduino kartı klonu ve USB On The Go'nun maliyeti birkaç dolar. Bilgisayara nadiren erişimi olanlar için ArduinoDroid uygulaması harika bir alternatif!
2.Arduino Bluetooth Denetleyici
Listemizdeki bir sonraki program, uygun bir şekilde adlandırılan Arduino Bluetooth Denetleyicisidir. Bu uygulama, yüklenen çizimlerde değişiklik tetiklemesi açısından büyük öneme sahiptir ve Arduino programlaması için daha az öneme sahiptir. Arduino denetleyicisi Bluetooth aracılığıyla, Bluetooth aracılığıyla panonuza veri göndererek tek tuşla seri veri göndermenize olanak tanır. İhtiyacın olacak bluetooth modülü anakartınız için, modül olmasına rağmen HC-06 yaygın olarak kullanılır ve 3 $ gibi düşük bir fiyata satın alınabilir.
Bahsetmeye değer, programın yüklü olduğu gerçeğidir. ingilizce dili, Play Store resimleri İtalyanca gösterse bile!
3. Proje geliştirme için Blynk uygulaması
Blynk uygulaması proje oluşturmak için harika bir gelişmedir. Uygulamanın esnekliği ve basitliği, panonuzdaki olayları tetiklemek için sezgisel bir yaklaşım sağlar. Uygulama kendi internet bağlantısını kullandığından Blynk ile çalışmak internet bağlantısı gerektirir kendi sunucusu. Akıllı telefonlar için harika bir özellik olan Blynk uygulamasına erişmek için Wi-Fi veya mobil veriyi kullanabilirsiniz.
Uygulamanın en güçlü noktalarından biri cihaza olan bağlantıların değişkenliğidir. Hemen hemen tüm geliştirme kartlarının desteğiyle, sunucuya kablosuz olarak veya ethernet ve hatta USB aracılığıyla bir bilgisayar kullanarak bağlanabilirsiniz. Hizmet iyi bir şekilde belgelenmiştir ve sezgisel uygulaması, projenize özel kontrolü entegre etmeyi kolaylaştırır. Arduino IDE'nin Blynk kütüphanesi tüm iletişimi yönetir.
Sabah erkenden yataktan çıkmadan önce akıllı telefonunuzu kullanarak kahve makinenizi açmayı tercih ediyorsanız bu uygulama tam size göre!
Blynk bu kategorideki tek hizmet değil. Thinger.io gibi son derece özelleştirilmiş bir hizmete ve son derece zor olsa da neredeyse sınırsız olan OpenHAB'a dikkat etmeye değer. Bu üç hizmet arasında Blynk, en hızlı şekilde ayağa kalkıp çalışmaya başlayanıdır, ancak OpenHAB'ı öğrenmek uzun vadede harika bir fikirdir.
4. Sıfırdan iletişim
Yukarıda açıklanan uygulamalar halihazırda kullanıldığını varsaymaktadır. mevcut hizmetlerçeşitli bağlantı seçenekleri sunmanıza yardımcı olur. Uygulamalarınızın her yönü üzerinde tam ve tam kontrol sahibi olmak için ne yapmanız gerekir? Android cihazlar? Neden bu sorunu kendiniz ve sıfırdan çözmüyorsunuz?
Bir uygulama paketi üzerinde kontrol sağlama sorunu basitçe açılarak çözülür USB iletişimi ve uygulamalar ile Arduino kartı arasında seri verilerin karşılıklı iletimi. Bu kontrol seçeneği, alışmanın en iyi yollarından biridir. android stüdyosu ve genel olarak uygulama geliştirme.
Android platformundaki cihazlar için kodsuz uygulama oluşturmanın yöntemleri ve yolları varsa, kodlamanın temellerinin incelenmesinin dikkati hak ettiği unutulmamalıdır. yazılım Java'da.
5. Arduino'nuzu bir sunucuya dönüştürün
Panonuzla iletişim kurmanın alternatif bir yolu da onu küçük bir sunucuya dönüştürmektir. Anahtar avantaj Kartın bir sunucuya bu şekilde dönüştürülmesi, bir IP adresine gidebilen veya bir web isteği gönderebilen herhangi bir cihazdan kartlarla iletişim kurma yeteneğinin ortaya çıkmasıdır. Bu ek gerektirecektir ethernet kalkan ev ağı kartınıza.
Ethernet kalkanınız yoksa , daha sonra benzer bir etki, bir Wi-Fi kalkanı aracılığıyla veya NodeMCU gibi Wi-Fi bağlantılı bir kart aracılığıyla elde edilebilir.
Node.js kodu sizin favorinizse arduino-android github projesine bir göz atmak mantıklı olacaktır. Bir kez daha Android uygulamaları temel alınarak tasarlandı açık kaynak Tek yapmanız gereken node.js sunucusunu seçtiğiniz Arduino kartına kurmak.
6. Kızılötesi kontrol
Arduino'nuzla evrensel bir iletişim aracı arıyorsanız veya efsanevi gizli ajan MacGyver'ın rolünü oynamak istiyorsanız, o zaman göz atın kızılötesi alıcı(IT) eski stereo veya VHS oynatıcınızdan alın ve bunu cihazınızla iletişim kurmak için kullanın. Arduino kurulu!
Göndermek ister misin? SMS Android akıllı telefonunuzdan Arduino kartınıza mı? Bu makale size bunu nasıl yapacağınızı anlatıyor!
Ne gerekli olacak
- USB ana bilgisayar modunu destekleyen Android akıllı telefon (ör. OTG desteği) - Android 3.1 ve üstünü çalıştıran çoğu cihaz bu modu destekler. Telefonunuzu Play Store'daki USB Host Diagnostics Uygulaması ile kontrol edin;
- Arduino - herhangi bir sürüm. Uno R3 kullanacağım;
- Arduino için USB kablosu;
- USB OTG kablosu- Arduino USB kablosunu bağlamak için buna ihtiyacınız var mikro USB bağlantı noktası telefon;
- Android Studio - Yüklemeniz gerekiyor. Bunu yapmak oldukça kolaydır. Android Studio, varsayımları ve kod oluşturmasıyla uygulama geliştirmeyi kolaylaştırır. Bu bir tanesi en iyi IDE'ler. Bu makaleyi aynı zamanda bir rehber olarak da kullanabilirsiniz. Android kurulumu IDE.
Bir Android Uygulamasının Ana Bileşenleri
Bir Android uygulamasında üç ana dosya vardır:
MainActivity.java Bu, uygulamanın nasıl çalışacağını kontrol eden yürütülebilir Java kodudur. Activity_main.xml Uygulamanın düzenini, yani bileşenleri içerir: düğmeler, metin görüntüleme bileşenleri vb. AndroidManifest.xml Burası, uygulamanın ne zaman çalışması gerektiğini, hangi izinlere ihtiyaç duyduğunu ve hangi donanıma erişmesi gerektiğini tanımladığınız yerdir.
Daha birçok dosya var ama hepsi bu üçünü kullanarak birbirine bağlı.
Etkinlik, kullanıcının telefonla etkileşimde bulunduğu ekran olarak tanımlanabilir. Etkinlikler, bilgilerin aktarılmasına yardımcı olan düğmeler, metin alanları, resimler vb. gibi widget'lar içerir. Bu eğitimde, Arduino'ya göndermek için kullanıcı girişini kabul edecek ve alınan metni görüntüleyecek yalnızca bir etkinlik olan MainActivity kullanılacaktır.
Düzen
USB Uygulaması ve Bluetooth Uygulaması ile aynı düzeni kullanacağız. Basittir ve cihazlar arasındaki bağlantıyı kontrol etmek için gereken minimum sayıda widget içerir.
Gördüğünüz gibi, kullanıcıdan girdi almak için bir EditText widget'ı, bağlantıyı başlatmak, veri göndermek, bağlantıyı sonlandırmak ve TextView'ı temizlemek için düğmeler içerir. Alınan veriler TextView'da görüntülenir (düğmelerin altındaki boş alan).
İşte XML kodunun bir parçası. Butonların kodları benzer olduğundan burada gösterilmemiştir. Kodun tamamını makalenin sonundaki bağlantıdan indirebilirsiniz.
Burada bir RelativeLayout kullandım; bu, her widget'ın etrafındaki widget'lara göre konumlandırıldığı anlamına gelir. Düzen, widget'ları istediğiniz yere sürükleyip bırakabileceğiniz Tasarım Sekmesinde kolayca yeniden oluşturulabilir. Butona tıklandığında ne olacağını açıklamamız gerekiyor. Bunun için onClick yöntemi kullanılır. Düğmenin XML kodunda yöntem adını belirtin. Bunu yapmak için şu satırı ekleyin:
Android:onClick="onClickMethod"
Şimdi farenizi bu çizginin üzerine getirin, solda şuna benzer bir uyarı görünmelidir:
"Click'te Oluştur..." seçeneğine tıklayın. Bu, onClick yöntem kodunu MainActivity.java dosyasına otomatik olarak ekleyecektir. Bunu her tuş için yapmanız gerekir.
USB Seri Kitaplığı
Ayar seri bağlantı Android'de oldukça zahmetlidir, çünkü şunları yapmanızı gerektirir: manuel ayar pek çok şey var, bu yüzden tüm bunları otomatik olarak yapan birkaç kütüphane buldum. Bunlardan birkaçını test ettim ve sonunda Github kullanıcısı felHR85'in UsbSerial kütüphanesine karar verdim. Bulduğum benzer kütüphaneler arasında hala güncellenmekte olan tek kütüphane bu. Kurulumu ve kullanımı oldukça kolaydır. Kütüphaneyi projenize eklemek için Github'dan en son JAR dosyasını indirin. Proje dizininizdeki libs alt dizinine yerleştirin. Ardından, Android Studio'daki dosya gezgininde JAR dosyasına sağ tıklayın ve "Kitaplık Olarak Ekle"yi (Kütüphane Olarak Ekle) seçin. Bu kadar!
Program yürütme algoritması
Bu nasıl ilerleyeceğimizin kısa bir özetidir. Her aktivitenin, aktivite oluşturulduğunda tetiklenen bir onCreate() yöntemi vardır. Başlangıçta çalıştırmak istediğiniz kod ne olursa olsun bu yöntemin içine yerleştirilmelidir. Cihazdan okumanın eşzamansız olduğunu, yani arka planda çalışacağını unutmayın. Bu, verilerin mümkün olan en kısa sürede alınmasını sağlamak içindir.
Bağlantı açma
Öncelikle Begin butonu için onClick metodunu tanımlayalım. Tıklandığında, tüm bağlı cihazları aramanız ve ardından bağlı cihazın VendorID'sinin (tedarikçi kimliği) Arduino'nun VendorID'siyle eşleşip eşleşmediğini kontrol etmeniz gerekir. Bir eşleşme bulunursa kullanıcıdan izin istenmelidir. Her USB bağımlı aygıtının, o aygıt için hangi sürücülerin kullanılması gerektiğini belirlemek için kullanılabilecek bir Satıcı Kimliği ve Ürün Kimliği vardır. Herhangi bir Arduino kartının Satıcı Kimliği 0x2341 veya 9025'tir.
Public void onClickStart(View view) ( HashMap usbDevices = usbManager.getDeviceList(); if (!usbDevices.isEmpty()) ( boolean keep = true; for (Map.Entry girişi: usbDevices.entrySet()) ( aygıt = giriş. getValue(); int DeviceVID = Device.getVendorId(); if (deviceVID == 0x2341) //Arduino Tedarikçi Kimliği ( PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); usbManager.requestPermission( cihaz, pi); keep = false; ) else ( bağlantı = null; cihaz = null; ) if (!keep) break; )) ))
Şimdi kullanıcıdan izin istemek ve yayın mesajlarını almak için bir BroadcastReceiver tanımlayalım. otomatik başlatma Cihaz bağlandığında bağlantıyı kapatın ve bağlantı kesildiğinde bağlantıyı kapatın.
// Seri bağlantıyı otomatik olarak başlatmak ve kapatmak için yayın mesajlarının alıcısı. özel final BroadcastReceiver yayınReceiver = new BroadcastReceiver() ( @Override public void onReceive(Bağlam bağlamı, Niyet amacı) ( if (intent.getAction().equals(ACTION_USB_PERMISSION)) ( boolean verildi = niyet.getExtras().getBoolean(UsbManager. EXTRA_PERMISSION_GRANTED); if (verildi) ( bağlantı = usbManager.openDevice(aygıt); seriPort = UsbSerialDevice.createUsbSerialDevice(aygıt, bağlantı); if (serialPort != null) ( if (serialPort.open()) ( //Seri bağlantı noktasını ayarla parametreler links.setUiEnabled(true); //UI.serialPort.setBaudRate(9600);serialPort.setDataBits(UsbSerialInterface.DATA_BITS_8);serialPort.setStopBits(UsbSerialInterface.STOP_BITS_1);serialPort.setParity(UsbSerialInterface.PARITY_NONE);serialPort'taki düğmeleri etkinleştirin . setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF); seriPort.read(mCallback); // tvAppend(textView,"Seri Bağlantı Açıldı!\n"); ) else ( Log.d("SERIAL", "PORT NOT OPEN"); ) ) else ( Log.d("SERİ", "BAĞLANTI NOKTASI BOŞ"); ) ) else ( Log.d("SERİ", "PERM VERİLMEDİ"); ) ) else if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) ( onClickStart(startButton); ) else if (intent.getAction) ().equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) ( onClickStop(stopButton); ) ); );
İlk IF koşulu karşılanırsa ve kullanıcı izin vermişse, Satıcı Kimliği ihtiyacımız olan Satıcı Kimliğiyle eşleşen bir cihazla bağlantı başlatın. Ayrıca, bir cihaz bağlantısı veya bağlantı kesilmesi yayını alınırsa Başlat ve Durdur düğmeleri için onClick yöntemlerini manuel olarak çağırın. SerialPort, cihaz ve bağlantı argüman olarak kullanılarak tanımlanır. Başarılı olursa SerialPort'u açın ve uygun parametreleri ayarlayın. Arduino Uno için parametre değerleri şunlardır: 8 veri biti, 1 durdurma biti, eşlik yok, akış kontrolü kapalı. Baud hızı 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 veya 115200 bps olabilir, ancak standart 9600 bps'yi kullanacağız.
Cihazdan veri alma
Yukarıdaki kod parçacığında seriPort.read(mCallback) içeren satıra dikkat edin. Burada, okuma işlevine, gelen verilerle karşılaştığında otomatik olarak ateşlenecek olan Geri Çağırma nesnesine bir referans iletilir.
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() ( // Veri alındığında çağrılan geri çağırma yöntemini tanımlayın. @Override public void onReceivedData(byte arg0) ( String data = null; try ( data = new String(arg0, " UTF-8"); data.concat("/n"); tvAppend(textView, data); ) catch (UnsupportedEncodingException e) ( e.printStackTrace(); ) ) );
Alınan veriler ham bayt biçiminde olacaktır. Bunları yeniden kodlamamız gerekecek okunabilir formatörneğin UTF-8. Daha sonra özel tvAppend() yöntemi kullanılarak TextView'a eklenirler. Bu, bu şekilde yapılır çünkü kullanıcı arayüzünde herhangi bir değişiklik yalnızca iş parçacığında yapılabilir. Kullanıcı arayüzü. Bu Geri Arama arka plan iş parçacığı olarak çalışacağından kullanıcı arayüzünü doğrudan etkileyemez.
Private void tvAppend(TextView tv, CharSequence text) ( final TextView ftv = tv; final CharSequence ftext = text; runOnUiThread(new Runnable() ( @Override public void run() ( ftv.append(ftext); ) )); )
Verileri bir cihaza aktarma
Veri aktarımı, bir cihazdan veri okumaya kıyasla nispeten kolaydır. Bu, bağımsız değişken olarak iletilecek veri baytlarını içeren basit bir işlev çağrısıdır. Bu, Gönder düğmesinin onClick yönteminde uygulanacaktır.
SerialPort.write(string.getBytes());
Bağlantıyı kapatma
Bağlantıyı kapatmak için kapatmanız yeterli seri port.
SeriPort.close();
Uygulama Bildirimi
Manifest, bir uygulamanın hangi ek izinlere ihtiyaç duyabileceğini bildirir. İhtiyacımız olan tek izin, telefonu USB ana bilgisayarı yapma iznidir. Manifest'inize aşağıdaki satırı ekleyin:
MainActivity'ye bir amaç filtresi eklenerek uygulamanın otomatik olarak başlatılması sağlanabilir. Bu amaç filtresi herhangi bir yeni cihaz bağlandığında etkinleşecektir. Cihazın türü, XML dosyasındaki Satıcı Kimliği ve/veya Ürün Kimliği kullanılarak açıkça belirtilebilir.
" android:resource="@xml/device_filter " satırına dikkat edin. Derleyiciye, aygıt özelliklerini src/main/res/xml dizininde Device_filter adlı bir dosyada bulabileceğini söyler, bu nedenle, src/main/res/xml dizininde bir " xml " alt dizini oluşturun. src dizinini /main/res oluşturun ve içine aşağıdaki içeriğe sahip bir dosya koyun:
Uygulama testi
Uygulamayı oluşturun ve akıllı telefonunuzda çalıştırın. Şimdi Arduino IDE'yi çalıştırın ve Arduino'yu, kartın seri port üzerinden alacağı her şeyi basitçe yankılayacak şekilde ayarlayın. İşte bunu yapmanıza yardımcı olacak çok basit bir kod:
void setup() ( Serial.begin(9600); ) void loop() ( char c; if(Serial.available()) ( c = Serial.read(); Serial.print(c); ) )
Şimdi Arduino'nuzu bir OTG kablosu kullanarak telefonunuzun microUSB bağlantı noktasına bağlayın. Uygulama otomatik olarak başlamalıdır. Biraz metin göndermeyi deneyin; aynı veriler geri döndürülecektir!
Çözüm
Bu makale Arduino'nun akıllı telefonunuzla nasıl iletişim kurabileceğini göstermektedir. Ve onu kullanma olanakları sonsuzdur! Akıllı telefonda yerleşik olmayan herhangi bir sensörden veriye ihtiyaç duyulması durumunda, herhangi bir mikro denetleyiciyi kullanarak bu sensörden veri okuyabilir ve bunları akıllı telefona aktarabilirsiniz. Aşağıdaki makale, popüler HC05 bluetooth modülünü kullanarak akıllı telefonunuzu Arduino'ya nasıl bağlayacağınızı gösterecektir.
Kod düzenleme olmadan arduino ve Bluetooth'ta makine. Çizim için özel ücretsiz yazılım kullanacağız. Ek olarak, zanaatlarımız için bir şasi satın almanıza gerek yok, neredeyse her hatalı radyo kontrollü araba veya tank modeli işe yarayacaktır.
Bluetooth kontrollü bir makine ve dolumu hakkında bir genel bakış videosu izlemeyi öneriyorum.
Öyleyse, bir makinenin bir android tabletten veya akıllı telefondan bluetooth aracılığıyla kendi ellerinizle nasıl uzaktan kontrol edileceğine dair canlı bir örneğe göz atalım. Garip bir şekilde makale, başlangıç bilgi düzeyi için tasarlandı. Burada Arduino IDE'de herhangi bir kod düzenleme kılavuzu bulunmuyor ve onu yalnızca kodumuzu yüklemek için kullanacağız. Ve kontrol algoritmasını FLProg adlı bir programda oluşturacağız. Akıllı telefon kontrol programı - HmiKaskada_free. Ama önce ihtiyacımız olan donanım hakkında.
Arduino ve Bluetooth'taki makine - donanım.
İhtiyaç duyulan ilk şey şasi yani bizim ve çevremizdekilerin zevkine göre hareket edecek tekerlekli ve motorlu bir gövde. Benim durumumda, güç ünitesinin yandığı radyo kontrollü bir oyuncaktan bir kasa kullanıldı. Onarım ihtimali bana sıkıcı geldi ve çocuklarım için yeni bir şey istedim. Ve böylece bu proje doğdu. Gövdede, tıpkı bir tank gibi, makinenin yanlarındaki tekerlekleri hareket ettiren iki motor bulunmaktadır. Tüm elektronik doldurmalar yedek parçalara gitti.
Gelecekteki yaratımızın elektrik motorlarını kontrol etmek için ihtiyacınız olacak L298N yongasındaki H köprüsü Ali'ye bağlantı, bunu benden aldım. Resim tıklanabilir.
Arduino için H köprüsü
5 – 35 volt gerilim aralığında iki motoru kontrol edebilir. PWM'yi destekler, yani motorların hızını ayarlayabilirsiniz. Kart, arduinoya güç sağlamak için 5 voltluk stabilize bir voltaj çıkışına sahiptir.
Bağlantı şeması basit ve iddiasız:
Projemizin elektronik doldurulmasının bir sonraki ayrılmaz parçası bluetooth modülü HC-06 . Arduino için en yaygın modül, o kadar popüler ki Ek açıklama ihtiyacı yok.
arduino için HC-06 bluetooth
Benim durumumda ana unsur ve beyin arduino nano, Buraya fotoğraf bile yüklemeyeceğim çünkü herkes bunu biliyor ve onunla nasıl çalışılacağını biliyor. Bu arada, kasaya sığdığı sürece herhangi bir Arduino kartı işe yarayacaktır 😀
Lehimleme için pillerin ve tellerin spesifikasyonu belirlemesine gerek yoktur. Akü seçimi elektrik motorlarının çalışma voltajına bağlıdır.
Arduino ve Bluetooth'taki makine - bir taslak çiziyor.
Tekrar ediyorum - burada kodda kazı yapılmayacaktır. Kullanacağız popüler program FLProg. En son sürümünü resmi web sitesinden indirebilirsiniz. Programın arayüzü basit ve iddiasız, ancak neredeyse tüm popüler modüller için çok büyük bir işlevsellik ve destek var. Birkaç makale gerektireceğinden nasıl kullanılacağını yazmayacağım. Sadece şunu söyleyebilirim ki daha rahat ve daha rahat biriyle tanışmadım. mevcut program arduino ve klonları için eskiz yapmak için. Arayüzün ekran görüntüsü:
FLProg arayüzü
Site metin ve video kılavuzlarla dolu, anlayacağınızı düşünüyorum.
Uzaktan kumandalı bir makineye yönelik projem, bağlantı kısaltma hizmeti aracılığıyla Yandex diskinden indirilebilir.
Arduino ve Bluetooth'taki makine, bir android tabletteki kontrol arayüzüdür.
Yoğun talep üzerine makalede HmiKaskada android tabanlı bir kontrol arayüzü geliştirmeye yönelik ayrıntılı talimatlar yazdım. Bağlantı tıklanabilir.
Android cihazlar için bir HmiKaskada programı vardır (YandexDisk'e bağlantı). Başlangıçta pahalı endüstriyel HMI panellerine alternatif olarak geliştirildi. Ancak meraklı beyinler onun her şeyi başarabileceğini hemen fark etti. Bizim durumumuzda bir makine. Destekler kablosuz arayüzler Wi-Fi ve Bluetooth'a ek olarak, cihazı doğrudan USB üzerinden bağlayabilirsiniz.
Programın ücretli ve ücretsiz versiyonları bulunmaktadır. Her ikisine de sahibim, ancak temel olarak size göstermek ve bir kez daha ücretsiz sürümün kesinlikle çalıştığından emin olmak için ücretsiz sürümde bir proje yaptım. Ücretsiz ve PRO sürümleri arasındaki temel fark, yalnızca bluetooth üzerinden çalışmasıdır.
FLProg forumunda Kaskada ile uyumluluk konusunda dev bir konu var ve geliştirici aktif ve sosyal. Kontrol panelinin ekranını düzenlemenin amacını göremiyorum - videoda.