Güvenilir, Güvenli, Özelleştirilebilir SMS Uzaktan Kumandası (Arduino/pfodApp) - Kodlama Gerekmez: 4 Adım
Güvenilir, Güvenli, Özelleştirilebilir SMS Uzaktan Kumandası (Arduino/pfodApp) - Kodlama Gerekmez: 4 Adım
Anonim
Güvenilir, Güvenli, Özelleştirilebilir SMS Uzaktan Kumandası (Arduino/pfodApp) - Kodlama Gerekmez
Güvenilir, Güvenli, Özelleştirilebilir SMS Uzaktan Kumandası (Arduino/pfodApp) - Kodlama Gerekmez

6 Temmuz 2018 Güncellemesi: Bu projenin SIM5320 kullanan bir 3G/2G versiyonu burada mevcuttur

Güncelleme: 19 Mayıs 2015: pfodParser kitaplığı Sürüm 2.5 veya üzerini kullanın. Güç açıldıktan sonra kalkanın ağa bağlanması için yeterli süreye izin vermediği bildirilen bir sorunu giderir

Tanıtım

pfodSMS uzaktan kumandasının diğer uygulamalardan farkı: -

  • Güvenilirdir – komutlara her zaman yanıt verilir ve kaybolan mesajlar yeniden istenir
  • Güvenlidir – 128 bit parola koruması kullanır
  • Herhangi bir üçüncü taraf web hizmeti hesabı gerektirmez – yalnızca aktif SIM karta ihtiyaç duyar (pinsiz)
  • Özelleştirilebilir – kendi özel menünüzü oluşturmak için pfodDesigner'ı kullanabilirsiniz
  • Kolaydır – pfodDesigner tüm kodu oluşturur. Herhangi bir kodlama yapmanıza gerek yoktur.
  • Esnektir – alt menüler, çoklu ve tekli seçim listesi, metin girişi, veri kaydı ve çizim gibi tüm pfod ekranlarına SMS yoluyla erişilebilir.

SMS bağlantısının nasıl güvenilir hale getirildiğini görmek için pfodSMS mesaj tasarımına bakın. 128bit güvenliğinin ayrıntıları için İnternete bağlı pfodDevices için Challenge and Response Security'ye bakın. Kendi özel menünüzü tasarlamanın detayları için pfodDesigner, Android / Arduino Basitleştirilmiş menülerine bakın. Tüm pfod mesajlarının ve kendiniz ekleyebileceğiniz ekranların detayları için pfodSpecification.pdf'ye bakın.

Örnek Proje – SMS Sıcak Su kontrolü

Örnek bir proje olarak bu talimat, sıcak su ısıtıcınızı SMS ile nasıl açıp kapatacağınızı ve açık veya kapalı olup olmadığını kontrol etmenizi açıklar. Montajı için bir elektrikçiye ihtiyacınız olacak.

1. Adım: Hızlı Başlangıç - SMS Uzaktan Kumandası

Hızlı Başlangıç - SMS Uzaktan Kumanda
Hızlı Başlangıç - SMS Uzaktan Kumanda
Hızlı Başlangıç - SMS Uzaktan Kumanda
Hızlı Başlangıç - SMS Uzaktan Kumanda

İşte kendi SMS sıcak su kontrolünüzü oluşturmak için hızlı bir başlangıç kılavuzu.

  1. Bu listedeki parçaları satın alın..
  2. Arduino IDE 1.5.8 sürümünü kurun ve pfodParser kitaplığını indirip kurun..
  3. Ücretsiz pfodDesigner'ı indirin.
  4. Android cep telefonunuzdaki bir menü kaydırıcısından dijital girişi açıp kapatmak için özel menünüzü tasarlayın.
  5. Bağlantı olarak SeeedStudio SIM900 GPRS kalkanını seçerek kodu oluşturun. (IteadStudio SIM900 kalkanı için bir seçenek de vardır).
  6. Oluşturulan kodu cep telefonunuzdan IDE'ye aktarın (ayrıntılar için pfodAppForAndroidGettingStarted.pdf'ye bakın), gizli şifrenizi ekleyin, derleyin ve Arduino Mega 2560'a indirin.
  7. SIM kartınızı GPRS kalkanına takın ve kalkanı Mega 2560'a takın. Seri bağlantıların yukarıda gösterildiği gibi Donanım Seri olarak ayarlandığından emin olun..
  8. Dijital çıkışı, D3 ve GND (veya pfodDesigner'da seçtiğiniz herhangi bir pin) arasındaki katı hal veya normal röleye bağlayın. Röleler hakkında daha fazla bilgi için Arduino'ya Röle Ekleme bölümüne bakın..
  9. Mega'ya USB gücü uygulayın. Kütüphane kodu, sizin için GPRS kalkanını çalıştırır.
  10. Android cep telefonunuza pfodApp yükleyin ve kalkanın sim telefonu no. (ayrıntılar için pfodAppForAndroidGettingStarted.pdf'ye bakın). Eklediyseniz, bağlantı için şifre belirleyin..
  11. Bağlanın ve SMS ile görüntülenen özel menünüzü görün. Röleyi açmak veya kapatmak için düğmeye tıklayın..
  12. Elektrikçinize röleyi Sıcak Su devrenize takmasını sağlayın ve Mega'ya ve kalkana güç sağlamak için USB güç kaynağını bağlayın

2. Adım: Daha Fazla Detay

pfodDesigner

pfodDesigner, katı durumu veya başka bir röleyi açıp kapatmak için ihtiyacınız olan tüm kodu üretecektir, ancak pfodParser kitaplığındaki SMS bağlantısı tüm pfod ekranlarını destekler, böylece bir kez başladığınızda alt menüler, sayısal kaydırıcılar ekleyebilirsiniz, çoklu metin kaydırıcıları, metin giriş ekranları, veri kaydı ve SMS yoluyla çizim. Desteklenen tüm ekranlar ve mesajlar için pfodSpecification.pdf dosyasına bakın.

Oluşturulan kod burada. İstemi yoktur ve mesajı kısa tutmak için yalnızca tek bir anahtar vardır. Uzun menüler, ulaşması daha uzun süren çoklu SMS mesajları ile gönderilir. Uzun bir menünüz varsa pfodParser kitaplığındaki sms bağlantı kodu tüm bunları sizin için hallediyor.

SMS bağlantınıza bir şifre eklemek için satırı değiştirin

parser.connect(&pfodSMS); // ayrıştırıcıyı SMS akışına parser.connect(&pfodSMS, F("173057F7A706AF9BBE65D51122A14CEE"));

ancak 32 hex basamağa kadar kendi şifrenizi kullanın, 0..9 A.. F. 32 onaltılık basamaktan daha kısa şifreler 0'larla doldurulur. Rastgele bir parolanın nasıl oluşturulacağını ve Android'inize kolay giriş için bunu bir QR koduna nasıl çıkaracağınızı öğrenmek için 128 bit güvenlikli (Arduino) Basit Wifi/İnternet pfodDevice bölümüne bakın. Ayrıca bkz. pfodAppForAndroidGettingStarted.pdf

pfodDesigner ayrıca isteğe bağlı 128 bit güvenlik ile SPI aracılığıyla Seri ve Ethernet üzerinden bluetooth ve wifi bağlantıları için kod üretecektir.

pfodApp

Farkına varılması gereken ilk şey, SMS'in yavaş olduğu ve oraya hiç ulaşmayabileceği veya arızalı olarak ulaşabileceğidir. Bu nedenle, pfodApp ile bağlandığınızda, bir SMS yanıtı gelmeden önce biraz gecikme olacaktır. Mesaj kaybolur veya gecikirse, pfodApp mesajı 3 dakika sonra otomatik olarak yeniden gönderir. Bu tür 5 yeniden denemeden sonra pfodApp size bağlantının kesildiğini söyleyecektir. 3 dakikalık süreyi pfodApp'ın bağlantı düzenleme ekranında ayarlayabilirsiniz.

Bir parola eklerseniz, ana menü pfodApp tarafından alınmadan önce altı SMS mesajı (her yön için üç) vardır. Bu ekstra mesajlar yalnızca ilk bağlantıda gerçekleşir ve bundan sonra şifre kullanıldığında fazladan mesaj olmaz. Bu nedenle, her şeyin çalıştığını görmek için bir şifre olmadan başlayın ve ardından şifreyi daha sonra ekleyin.

SMS/GPRS kalkanı

Olası sorunlar, pin numaralarıyla korunan veya ağa bağlanma yetkisi olmayan SIM kartlardır. pfod kitaplığı, GPRS kalkanını otomatik olarak çalıştırır ve 'çağrıya hazır' yanıtını arar. Bu yanıt gelmezse kitaplık kapanır ve tekrar dener, bu nedenle GPRS kalkanındaki güç ışığının 20 saniye boyunca yandığını ve ardından söndüğünü görürseniz, ağa bağlanırken bir sorun var demektir. SIM'i çıkarın ve normal bir telefonda deneyin. Bir pin numarası istenmediğini kontrol edin.

Sorun bu değilse, neler olduğunu görmek için aşağıda açıklandığı gibi başlangıç hata ayıklamasını açmanız gerekecektir.

Mega / GPRS kalkanına güç verme

Kalkan 2A'ya kadar darbeli ve 0,5A'ya kadar sürekli olarak çeker. 12V pil kaynağı olduğu varsayıldığında, 0,5A, Mega on board güç kaynağının kapasitesini aşıyor. Bu nedenle, bu kalkan Mega'daki 7V ila 12V girişinden GÜÇLENDİRİLMEMELİDİR. Alternatif, Mega'ya güç vermek ve USB bağlantısı üzerinden blendaj yapmaktır. 1A USB kaynağı kullandım. Test için bilgisayarımın USB bağlantı noktasından aşırı akım çekmesini önlemek için Belkin destekli bir hub (F4U020) kullandım.

12V pil beslemesi için kaliteli bir Otomotiv USB 5V şarj cihazı, 1A veya üstü kullanmanızı öneririm. Kaliteli bir Otomotiv USB 5V kaynağı, otomobil elektrik sistemlerinde meydana gelen aşırı voltaj yükselmelerini işlemek için tasarlanmalı ve bu nedenle çoğu 12V şarj sistemi için uygun olmalıdır.

Katı Hal Rölesi

Bu örnek proje bir Sıcak Su ısıtıcısını (dirençli bir yük) kontrol ettiğinden, Katı Hal rölesi idealdir. Motorları açıp kapatmak, jeneratörleri çalıştırmak vb. istiyorsanız, elektrikçinizle işe uygun bir röle hakkında konuşun. Yüksek güçlü bir röleye ihtiyacınız varsa, güç rölesini açıp kapatmak için arduino kartının yanında küçük bir röle sürücüsü kullanabilirsiniz.

Katı hal rölesinin birçok versiyonu mevcuttur. Isıtıcınızın akımını ve voltajını kaldırabilecek ve 5V dc ve Arduino çıkış pininden temin edilebilen birkaç miliamper ile kontrol edilebileceğinden emin olun. Burada kullanılan FOTEK SSR-40 DA, 40Amp'de 380VAC'ye kadar anahtarlar ve 3V dc'den daha fazla herhangi bir şey tarafından kontrol edilir ve 7mA'dan daha az alır.

Bir ısı emici kullanmalısınız ve katı hal rölesini ısı emiciye cıvatalamadan önce arkasına İNCE bir ısı emici bileşiği veya termal gres sürmelisiniz. Buradaki fikir, metalin yüzeyindeki mikroskobik vadileri doldurmak için yüzeyi en ince baş emici bileşik tabakasıyla tamamen kaplamaktır. Açıldığında, katı hal anahtarı 1,6V düşer ve bu da 10Amps'de 16Watt ısı üretir. Soğutucunun bu ısıdan kurtulması gerekir, bu nedenle plastik bir kutu içinde değil serbest havada monte edilmesi gerekir.

Gecikmeler Kötüdür

GPRS kalkanı herhangi bir zamanda Seri bağlantı yoluyla SMS mesajları gönderir ve ana döngü() 'niz cmd = parser.parse();'yi çağırmalıdır; genellikle Seri verileri Arduino kütüphane kodundaki 64bayt arabellek dolmadan ve veriler kaybolmadan önce işlemek için.

Bu yüzden ana döngünüzün () hızlı çalışmasını sağlamalısınız. Asla delay() kullanmamalısınız ve kullandığınız kitaplıkların hiçbirinde gecikme olup olmadığını kontrol etmelisiniz. Donanım Seri aracılığıyla SIM900'ün varsayılan 19200 baud hızını kullanarak, Arduino kitaplık kodunda arabellek boyutunu artırmayı gerekli bulmadım. Yazılım Seri kullanmıyorum, sadece Seri ve Seri1, Donanım Seri bağlantıları ve pfodApp'ın gönderdiği hemen hemen tüm mesajlar çok küçük, 10 veya 12 bayt. Ancak, isterseniz, HardwareSerial.h'deki tanımı #define SERIAL_BUFFER_SIZE 64'ten #define SERIAL_BUFFER_SIZE 128'e değiştirerek Arduino arabellek boyutunu artırabilirsiniz.

Ancak, aşağıda açıklandığı gibi hata ayıklama çıkışını etkinleştirirsem, terminal bağlantısı için çok hızlı bir baud hızına sahip olmam gerektiğini buldum, aksi takdirde terminale hata ayıklama mesajları göndermenin getirdiği gecikme, SMS mesajlarının bölümlerinin kaçırılmasına neden oldu..

Kurulum

Katı Hal röle kablolarını bağlayacak bir şeyim olması için bir vidalı terminal kalkanı ekledim. Elektrikçime henüz denetleyiciyi kurmadım. Yalıtılmış bir kutuya konması gerekir, ancak ısı emici bir yuvadan dışarı taşar ve sıcak su güç kablosuna bağlanır.

3. Adım: Daha Fazla İyileştirme Önerileri – Uyarılar, Veri Kaydı ve Çizim

Yukarıdaki örnek proje sadece suyun nasıl açılıp kapandığını gösterir ve onu değiştirmenize izin verir. Ancak SMS bağlantısı tüm pfod mesajlarını yönetir (bkz. pfodSpecification.pdf)

Arduino'nuza sıcaklık sensörü eklerseniz, sıcaklığı izleme gönderebilir ve düzenli aralıklarla okumaları geri gönderebilirsiniz. Bir veriyi geri göndermek için bluetooth, wifi veya SMS için aynıdır, aşağıdaki örnekteki gibi kodu eklemeniz yeterlidir. Daha fazla ayrıntı ve veri kaydı ve çizim örnekleri için Veri Günlüğü ve Çizim bölümüne bakın.

parser.println(zaman);parser.print(', ');parser.println(sıcaklık);

pfodSMS kütüphanesi println()'den yeni satırı gördüğünde, ham verileri SMS olarak gönderir. Cep telefonunuzda pfodApp'i arka planda çalışır durumda bırakın ve cep telefonunuz bir SMS alındığında sizi bilgilendirecektir. Öne getirmek için tekrar pfodApp'ı açın ve ardından verileri görmek için cep telefonunun menüsünden Ham Veri ekranını açın. Not: pfodSMS mesajları, bağlantı ve mesaj numaralarıyla birlikte UTF-8 karakterleridir, normal metin gibi görünmemeleri için bir Base64 kodlaması kullanılarak kodlanır. Tüm ayrıntılar için pfodSMS mesaj tasarımına bakın.

Bir şey uzaktan değiştiğinde bir uyarı göndermek için aynı işlemi kullanabilirsiniz. yani parser.println(F(“Dış Sıcaklık 0℃'nin altında”));Not: dizideki ℃ UTF-8 karakteri. pfodSMS, tüm UTF-8 karakterlerini pfodApp'e iletir.

Adım 4: PfodParser Kitaplığında SMS Bağlantısını Kullanırken Hata Ayıklama

PfodParser Kitaplığında SMS Bağlantısını Kullanırken Hata Ayıklama
PfodParser Kitaplığında SMS Bağlantısını Kullanırken Hata Ayıklama
PfodParser Kitaplığında SMS Bağlantısını Kullanırken Hata Ayıklama
PfodParser Kitaplığında SMS Bağlantısını Kullanırken Hata Ayıklama

pfodDesigner çalışan kod üretir, ancak kendi ekstra kodunuzun hatalarını ayıklamak veya GPRS kalkanı başlatılırken veya SMS mesajları alırken neler olduğuna bakmak isteyebilirsiniz. Alabileceğiniz birkaç yaklaşım var.

Kendi kodunuzda hata ayıklama

Kendi kodunuzda hata ayıklıyorsanız, pfodSMS hattını yorumlayabilir ve ayrıştırıcıyı Seri'ye bağlayabilir ve ardından GPRS kalkanını kaldırabilir ve Mega'yı Arduino terminalinden çalıştırabilirsiniz. yani setup() öğesini şu şekilde değiştirin

//pfodSMS.init(&Seri, 9); // GPRS kalkanını başlatmayın parser.connect(&Serial); // ayrıştırıcıyı SMS akışı yerine Seri'ye bağla

Ardından Arduino terminalinden, Mega'nın ana menüye dönmesini ve ardından yürütmek istediğiniz komutu geri göndermesini sağlamak için {.} yazabilirsiniz, örn. Röleyi açmak için {A`1} ve kapatmak için {A`0}. (pfodApp genellikle bu mesajları kaydırıcıyı tıklattığınızda sizin için gönderir.) Ardından, eklediğiniz ekstra kodun ne yaptığını izlemek için ekstra hata ayıklama parser.println() ekleyin.

GPRS kalkanını izleme

GPRS kalkanının ne yaptığını görmek istiyorsanız. Nasıl başlatılıyor, SMS msj alıyor vs. Sonra kalkan kablolarını değiştirmeniz gerekiyor, onu Mega Serial1'e (seri olan) bağlayın ve Arduino IDE Monitörüne hata ayıklama çıkışı için Seri (USB) bağlantısını serbest bırakın.

GPRS kalkanını Mega 2560 Seri1'e bağlamak için yukarıda gösterilen bağlantıları kaldırın ve kabloları Mega'nın TX1 ve RX1 pinlerine ekleyin.

Ardından setup() kodunu şu şekilde değiştirin:

geçersiz kurulum() { Serial1.begin(19200); // Seri'yi Seri 1 Serial.begin(57600) olarak değiştir; // Arduino IDE monitörüne giden USB Seri portu // için hızlı baud hızına dikkat edin. for (int i=3; i>0; i--) { // programlanıp programlanmadığımızı görmek için bir kaç saniye bekleyin delay(1000); } pinMode(cmd_A_pin, OUTPUT); pfodSMS.setDebugStream(&Serial); // bunu pfod_SMS.init // veya başka bir pfod_SMS yöntem çağrısından önce yapmamız gerekiyor // SMS'i başlat ve ayrıştırıcıyı bağla // sonraki satırı Serial1 olarak değiştir pfodSMS.init(&Serial1, 9); // Seeed GPRS kalkanı V2'yi Serial parser.setDebugStream(&Serial); // bunu parser.connect // veya başka bir ayrıştırıcı yönteminden önce yapmanız gerekiyor, çağrı parser.connect(&pfodSMS); // ayrıştırıcıyı SMS akışına bağla }

Artık pfodSMS_SIM900.cpp dosyasının sonundaki pfodParser kitaplığındaki bazı Hata Ayıklama ayarlarının açıklamasını kaldırabilirsiniz.

Örneğin, #define DEBUG_SETUP yorumunun kaldırılması, GPRS kalkanını açarken ve SMS mesajları almaya hazır hale getirirken neler olduğunu yazdırır (hata ayıklama akışına).

#define DEBUG yorumunu kaldırmak, alınan SMS mesajları hakkında birçok bilgi verecektir.

Bu kadar !