İnternet röle kontrolu

Başlatan antuari, 12 Eylül 2016, 16:34:37

antuari

Arkadaşlar merhaba bitirme projemle ilgili sizden yol göstermemizi istiyorum. 3 tane birbirinden uzak alanda ornegin bursa istanbul ankara da 3 farklı rölenin kontrolünü yapicam. İnternet üzerinden olacak bu sistem. Wi-fi modülü kullanacağım sanırım fakat internette 10 liraya da 300 liraya da wi-fi modül var. Mikroişlemci kullanmak istiyorum fakat raspberry pi yada plc de bi seçenek olarak düşünüyorum. Sizce hangisi daha iyi olur? Ornegin internetten 1 değeri değeri gönderdiğimde ankaradaki röle aktif olacak. Nasıl bir yol izlemeliyim.

Burak

Uzaktaki server'ları ( Kontrol noktalarını ) tetikleyebilmek için ya DNS updater'a yada statik IP'ye ihtiyacın olacak . Ardından modemlerin konfigurasyonlarından port açma ve yönlendirme işlemlerini yaptıktan sonra Wi-Fi server ile uğraşmaya başlayabilirsin .. Benim tavsiyem ESP8266 ve donanımsal usart arabirimi olan bir PIC mikro kullanman ...

Burak
Ω Gens Una Sumus Ω

antuari

Alıntı yapılan: Burak GÜNAY - 12 Eylül 2016, 17:11:32
Uzaktaki server'ları ( Kontrol noktalarını ) tetikleyebilmek için ya DNS updater'a yada statik IP'ye ihtiyacın olacak . Ardından modemlerin konfigurasyonlarından port açma ve yönlendirme işlemlerini yaptıktan sonra Wi-Fi server ile uğraşmaya başlayabilirsin .. Benim tavsiyem ESP8266 ve donanımsal usart arabirimi olan bir PIC mikro kullanman ...

Burak
yanıtınız için teşekkür ederim...anladığım kadarı ile şunu yapmamı söylüyorsunuz değil mi...elimde bir hosting var burdan oluşturacağım panel ile veriyi bu statik ip adresine göndericem..sonra modem de port açarak bu portu esp8266 ya yönlendireceğim..bu modül ilede röledeki alıcıya sinyal mi göndereceğim yada esp8266 röleye bağlı alıcım mı olacak

Burak

#3
Yok öyle değil , html sayfasını PIC'in içine gömeceksin hosting'e ihtiyacın yok server'ımız PIC ile yapılmış cihaz olacak , HTML kodu ile kullanıcı arayüzü sayesinde geribeslemeli bir şekilde PIC'e gömdüğün kod çerçevesinde kontrol sağlayacaksın .... Tek ihtiyacın statik bir WAN IP'si .. Mesela kapı kontrolü , sıcaklık kontrolü , hırsız güvenlik sistemi gibi kontrolleri bu sistem ile sağladığım bir cihazın PIC18 uygulamasının adresini paylaşayım ..Sistem şifrelemesinin AES256'dan bile daha güvenilir olduğunu söyleyebilirim ..

gunay.ddns.net

Burak
Ω Gens Una Sumus Ω

antuari

Alıntı yapılan: Burak GÜNAY - 12 Eylül 2016, 17:54:11
Yok öyle değil , html sayfasını PIC'in içine gömeceksin hosting'e ihtiyacın yok server'ımız PIC ile yapılmış cihaz olacak , HTML kodu ile kullanıcı arayüzü sayesinde geribeslemeli bir şekilde PIC'e gömdüğün kod çerçevesinde kontrol sağlayacaksın .... Tek ihtiyacın statik bir WAN IP'si .. Mesela kapı kontrolü , sıcaklık kontrolü , hırsız güvenlik sistemi gibi kontrolleri bu sistem ile sağladığım bir cihazın PIC18 uygulamasının adresini paylaşayım ..Sistem şifrelemesinin AES256'dan bile daha güvenilir olduğunu söyleyebilirim ..

gunay.ddns.net

Burak

kusura bakmayın internet üzerinden kontrol henüz yeni girdiğim bir kontrol türü..hocamla görüşmem sonucunda benden bunu istedi...acaba bu pic18 uygulaması hakkında döküman paylaşma imkanınız var mı ? arduino yada rasperyy gibi kartları kullanmak istemiyorum..pic konusuna hakim olduğum için bildiğim yerden ilerlemek istiyorum...döküman verme şansınız varsa çok makbule geçecek

Burak

Tek ihtiyacin seri haberlesmeye ve At Komut setine hakim olmak internette binlerce dokuman var ..

Burak
Ω Gens Una Sumus Ω

antuari

Alıntı yapılan: Burak GÜNAY - 12 Eylül 2016, 18:14:41
Tek ihtiyacin seri haberlesmeye ve At Komut setine hakim olmak internette binlerce dokuman var ..

Burak

peki teşekkür ederim yol gösterdiğiniz için

enginkanat

Burak Günay hocam, bende daha önce pic ile bir uygulama yapmak istemiştim ancak string ifadelerin işlenmesi picbasic te sorunlu olduğundan başarılı olamadım ve uygulamamı arduino nano ile yapmak zorunda kaldım.

AT+ komutlarını göndermede sorun yaşamadım ancak geri dönüşlerde sıkıntı yaşadım. Örneğin AT+CWLAP ile access pointlerin listesini 4x20 lcd ekranda listeleyerek rotoray encoderle seçim yapmak istediğimde zorlandım
yani response de
AT+CWLAP +CWLAP:(4,"RochefortSurLac",-
38,"70:62:b8:6f:6d:58",1)
+CWLAP:(4,"LiliPad2.4",-83,"f8:7b:8c:1e:7c:6d",1)
OK
gibi bir string karakter dizisi geliyor ve benim burada modem isimlerini ayıklayıp LCD de göstermem gerekiyordu.
bu işlemleri picbasic ile yapabilirmiyiz, yapılabilirse bize öğretirmisiniz?

Burak

#8
Evet aslında Basic dillerinin en güzel özelliği budur , insanları düşünmeye zorlayıp hazır fonksiyonların egemenliğinden kurtardığı için bir çok yazılımcının pek işine gelmiyor . Ama benim işim bu olduğu için işin detay kontrolünde ve merkezinde kendim olmak istediğim için Basic'ten bir türlü kopamıyorum . Tam olarak zorlandığın kısım hangisidir , ESP8266'nın kullandığın SDK versiyonundaki response formatını carriage ve return yapısını tam olarak biliyor musun ? Bunlar tek bilmemiz gereken şeyler fazlası bizi ilgilendirmiyor. Sadece neyin ne şekilde bittiğini bir UART - USB dönüştürücü ile Seri port akışını PC'den izleyerek sistem cevabını bildiğimizde gerisi en fazla 400-500 satır kod işe birazcık kriptoloji bulaştırıp zorlaştırdığımızda ortaya yinede aşırı komplike birşey çıkmıyor . Tam olarak ne istediğini belirtebilirsen bir yaklaşımda bulunabiliriz .. Unutmadan bende sürekli olarak yeni Iphone modelleriyle HTML görüntülemede başarılı olamıyorum bir garip anlaşılamayan birşeyler var ama hala çözmüş değilim .. Bunun dışında ESP'ler ile aram çok iyi ..

Burak

Ω Gens Una Sumus Ω

enginkanat

bu kadar hızlı bir cevap beklemiyordum, teşekkür ederim.

En çok zorlandığım konu, SSID seçmek

ben karakter LCD üzerinde AT+CWLAP yaptığımda sadece SSID adını görmek ve seçmek istiyorum. Sırf bunu yapamadığım için birde HC-06 bağlayarak SSID ve şifreyi telefonla göndermek zorunda kaldım.

AT+CWLAP +CWLAP:(4,"RochefortSurLac",-
38,"70:62:b8:6f:6d:58",1)
+CWLAP:(4,"LiliPad2.4",-83,"f8:7b:8c:1e:7c:6d",1)
OK
şeklinde gelen karakter dizisinden "RochefortSurlac, LiliPad2,4, ZeyrekPetrol" SSID lerini ayırmak sıralamak ve seçmek istiyorum. burada 3 tane sıraladım ama bu zaman zaman 20 ve hatta üzeri olabiliyor. Yani ben ESP'ye sen sadece bu modeme bağlanabilirsin komutu vermek istemiyorum. bilmiyorum anlatabildim mi? yoksa geri kalan işleri kolaylıkla yaptırabiliyorum. fusiontable üzerine bilgi yazabiliyorum. röle açıp kapatabiliyorum. kumandalı arabaya hız kontrolü yaptırabiliyorum, birtek şu karakter dizisi içinden çekip alamıyorum

Burak

Dikkatini cektiyse her plus ifadesi arkasindan tirnak isareti ile baslayan ve tirnak ile biten aralikta ssid ifadesi yer aliyor hserin parametrelerinde str ile baslayan komut kumelerini kullanarak ssid'leri kolayca cekip alabilirsin ki bi ara erol hocam sana bu kullanimla ilgili bilgi vermis .. Komut kullanimina binayen basarisiz oldugun durum buna ragmen hala nedir ? Syntax'ta mi zorlaniyorsun ?

Burak
Ω Gens Una Sumus Ω

enginkanat

#11
yani Burak hocam işte bu kadar zamandır bunu çözmek için uğraşıyorum. Yapamadım, olmadı.
Gelen bilginin boyutu belli değil ki verdiğim örnek bile 100-110 karakterden oluşuyor. 2 tane modem var. 10-20 modem olduğunda benim 1000-1500 karakterlik diziler oluşturmam gerekiyor. bilgi gelirken ayırmaya çalıştığımda bilgiyi kaçırıyorum.

bu işlemin basic ile olabileceğinin farkındayım sonuçta arduino da pic yerine atmel kullanıyor.

bana sadece bir örnek verin gerisini toparlarım. mesela;

    ("Engin", 1, "çorba içiyor") ("Rıfat", 2, "köfte yiyor")
     OK

burada Engin ile Rıfat'ı nasıl ayırırım,
yani isim_1="Engin"
       isim_2="Rıfat"   gibi. isim_1 [5] diyemiyorum çünkü boyut belli değil

ete

Dizi ile çalışırken ya dizi boyutunu yada başka bir deyişle karekter adedini bileceksin yada o dizinin başlangıç ve bitişini bileceksin. Karekter adedi belli değil diyorsun. O halde başlangıç ve bitişini bilmen sana yeterli olur. Burada alınan veririn nasıl geldiği çok belli değil. Bu aletlerle henüz uğraşmadığım için bilgimde yok ama şayet örnekte görüldüğü gibi çift tırnak da bir karekter olarak orada yer alıyor ise çift tırnakla başlayıp çift tırnakla biten dizi alınıp aradığın isim dizisimidir test edilebilir.
Bir logic analizör ile bilgi paketine bakılır ise sonuç kısa sürese alınır diye düşünüyorum..

Ete

Burak

#13
O halde yolu göstereyim sana ..

Öncelikle sürekli olarak tekil bir karakteri dinleme moduna alıyoruz.


hserin 60000,srv,[X[0]]

if x[0]>127  then reset_reconfig
if x[0]="+"  then JUMP2

Bu tekil karakter "+" ise bir AP vardır ve devamında tırnak ile SSID ismini display etmekte olan bir string gelmektedir .. Eğer bu tekil karakter ascii olarak 127 değerinden büyük ise ESP8266'da bir voltaj çökmesi meydana gelmiştir ve seri iletişim pinindeki dengesiz uzunluktaki lojik seviye değişimlerinden dolayı burst olarak 3-5 adet bozuk ve ASCII değeri %100 "127" değerinden yüksek olan karakter RX'den alınacaktır  .. ESP8266 nihayetinde resete gidecektir ve Server modunu kaybedecektir .. Bu ihtimalleride göz önüne almak zorundayız çünkü cihaz niye bozuldu niye çalışmıyorlar ile uğraşmayalım ileride .

Burdan sonrası matematiksel zeka ..

+CWLAP:(4,"LiliPad2.4",-83,"f8:7b:8c:1e:7c:6d",1) string'ine baktığında + ifadesinden sonra 11. ifade ile başlayan karakter kümesi bize SSID ismini verecek değil mi ? İstersen sayabilirsin ..

Bizde o halde deriz ki paçal olarak 40 adet string dinletip dinlemeyi "-" karakteri ile sonlandırmayı emredip mantıksal bir for döngüsü ile x dizi değişkeni olan x[10]'dan başlatarak x[40]'a kadar "-" karakterini aratırız ve bu sırada bir index karakterini her for döngüsünde 1 artırıp - karakterini bulduğumuz döngüdeki index değerinden 3 çıkararak yani bu 3 ",- karakterden çıkararak SSID'nin tüm karakterlerinin sayısını bulmuş oluruz .. Böylece SSID'nin kaç karakter olduğunuda işlemciye öğretiriz , ve bunu CWJAP ile kaydederken de rahatlıkla kullanabiliriz ..

O for döngüsünün nasıl yapılacağını paylaşmayacağım .. Düşünmeni istiyorum hatta ciddi anlamda kafa yormanı istiyorum ...

hserin 3000,AP,[str x\40\45]
(45 desimal karakteri ,ASCII olarak "-") ifadesine tekabül eder.

Edit : Unutmadan ESP8266'nın echo modunu kapat ATE0 komutu ile . Çünkü +CWLAP komutun kendisinde de var .. hserout["ATE0",13]

Burak
Ω Gens Una Sumus Ω

enginkanat

Bunun üzerinde çalışacağım. dediğiniz gibi 11. karakterden başlıyor.

Powered by EzPortal