PIC ile Web Tabanlı Kontrol için yardım isteği

Başlatan uuRAbi, 06 Mayıs 2011, 15:57:15

uuRAbi

Değerli arkadaşlar;

Öncelikle hepinize selamlar. Ben PICPROJE ailesine daha henüz katıldım. Dönem sonu projem hakkında yardımınıza ihtiyacım var. İnternette nekadar araştırdıysam da verimli bir konu bulamadım. Dilerseniz konu hakkında bilgi vereyim;

Konumun adı : Web Üzerinden bir lambanın (en basit bir şekilde) yakıp söndürülmesi. Bu sırada lambanın durumu da (yanık - sönük) görüntülenecektir. Bunun için herhangi bir bilgisayar kullanılmayacaktır. Modeme bağlı olacak devre kontrol gerçekleştirilecektir. Konu hakkında Umut KAZANÇ adlı kişinin dökümanlarını buldum ancak onları derlerken hata oluştu. Bunun üzerinde MikroC programının HELP dosyasında bulmuş olduğum devreyi kurarak sistemi denemeye karar verdim. Ancak devreyi kurmuş olmama rağmen herhangi bir sonuç elde edemedim. Ekte bulunan dosyada devreyi kurarken geçtiğim aşamalar, yaptığım değişiklikler, kaynak dosyalar ve resimler bulunmaktadır. Ben yinede burada kısa bir özet geçerek size anlatmaya çalışayım..

Devreyi ilk olarak Elektrovadi adlı site üzerinden Serial Mikro Ethernet Board' satın alarak kurmaya başladım. Bu devre üzerinde ENC28J60 entegresi ve RJ45 girişi bulunmaktadır. Benim araştırmalarım sonucunda bordun temel amacının gelen veriyi seriye çevirmek olduğunu öğrendim. Ardından 18F452 PIC' i ile 74HCT08N Kapı entegrelerini kullanarak devreyi ekteki resimde göreceğiniz şekilde kurdum. Ardından MikroC programının HELP dosyasından almış olduğum örnek kodları, sadece ip numarasını değiştirerek (192.168.1.60 yazan ip numarasını airties modem kullanıyor olmamdan dolayı 192.168.2.20 olarak değiştirdim) derledim ve hatasız bir şekilde hex uzantılı dosyayı oluşturdum. Ardından iletişim için port açılması gerektiğini öğrendim ve modemimin içinde 192.168.2.20 nolu ip'ye 80 portunu yönlendirdim. Tüm bu işlemlerden sonra ENC28J60 entegresini 3.4V ile, PIC ve 74HCT08N entegrelerini 5V ile besledim. Modem ile aygıt arasına ethernet kablosunu taktım ve ağa wireless ile bağlı bilgisayarımdan adres çubuğuna http://192.168.2.20:80 , http://192.168.2.20:80/t, http://192.168.2.20:80/s yazarak bağlantı kurmaya çalıştım ancak herhangi bir sonuç alamadım. Ayrıca modemimin yerel ağ sekmesi yerel ağa bağlı olan aygıtların ip ve mac adreslerine baktım ancak kurduğum devrenin ip ve mac adresini burada göremedim. Hocalarımızdan bile yardım alamaz duruma geldim.

Bu konuda yardımcı olabilirseniz sevinirim.

İyi çalışmalar..

Dosyaların bulunduğu link:
http://www.multiupload.com/Q25WXGQAM4

iyildirim

Merhaba,

Kullandığınız modem birden fazla ethernet portuna sahipse ve yerel ağ da deneme yapıyorsanız -ki öyle görünüyor- modem de port vs. açmanıza gerek yok.  IP sabit olduğu için DHCP tablosunda IP yi görmemeniz de normal.

Öncelikle işlemciniz ile ENJ modülün haberleştiğininden  emin olmalısınız.
Kodun tamamı bu kadar ise, en azından SPI dan paket geldiğinde ne yapılacağı gibi şeyler ortada yok.  MikroC örneklerinden aldığınız için büyük ihtilmalle SPI - ENJ iletişiminde sorun yoktur diye düşünüyorum.

Main  bloğunda, Spi_Ethernet_doPacket() ; çalıştırdıktan sonra ne yapılacağı ile ilgili kodlar yok. Bu durumda veri gelse bile sadece gelmiş olacak.
Koddan anladığım kadarıyla bir veri geldiğinde  getRequest dizisi ile buna ulaşılabiliyor.

Spi_Ethernet_doPacket()  den sonra bu diziye bakarak içeriğinde bir veri varsa bir led yakıp söndürüp vs. gibi veri gelip gelmediği anlaşılabilir.
Veri geliyorsa da Spi_Ethernet_UserTCP kullanılarak cevap veriliebiliyor. Ancak verinin hangi adresden geldiği, remote ip, port gibi şeyler nasıl anlaşılıyor belli değil.  Örnek kodları aldığınız kütüphanenin dökümanlarını incelemeniz gerekir.

uuRAbi

Sayın iyildirim;

Açtığım başlığı okuyup yardımda bulduğunuz için çok teşekkür ederim. Yazmış olduğunuz notları dikkate alarak tekrar denemeler yapacağım ve sonucu sizle paylaşacağım. Ancak birşey de sormak istiyorum bu arada. Kodların içinde gömülü bir web sayfası var farkettiyseniz. Ben en azından bu sayfanın görüntüleneceğini düşünerek çalışmalarımı sürdürdüm. Sizce bu mantık yanlış mıdır? İletişim kuruluyorsa içerisindeki web sayfası görüntülenmeyebilir mi? Soruma cevap verdiğiniz için tekrar teşekkür ederim..

İyi çalışmalar.

Not olarak; Kullandığım modem Airties RT-205 wireless modemdir. Ethernet portunu yaptığım devreye takıyorum, bilgisayarımdan wireless üzerinden bağlanıyorum.

frederic

Modemden port açıp deneme yaptınızmı hiç ?

iyildirim

Farkettim, ve kodunuzun bu haliyle mantığınız yanlış.

Bir önceki mesajda mcu'ya veri gelse bile sadece gelmiş olacak demiştim. Yani kodun bu haliyle modüle, mcu'ya ulaşsanız bile size cevap vermeyecektir.
Bir önceki mesajımda bundan bahsettim.
main bloğuında Spi_Ethernet_doPacket() ; satırından sonra ne yapacağınızla ilgili birşey yok.  Nasıl cevap vereceğinizi de yazmıştım. Sıkıntı cevap vermek için remote IP, remote port'un ne olduğunun anlaşılamaması. Üçkağıt yapıp IP'yi sabitlesiniz bile remote port'u bilmek gerekli.  Kodu aldığınız kütüphane dosyalarını, dökümanlarını inceleyin.

Web sayfasının nasıl görüneceği nasıl birşey olacağı kısmı iletişimi sağladıktan sonraki iş. Ve nispeten daha basit. Basit derken nasıl görüntüleneceği, sorun çıkarsa sorunun ne olduğunu anlamak  çok daha kolay olacak.
Web isteğine nasıl cevap verilmesi gerektiği gibi şeyler çok net. Bilgisayarınızda oluşturup kaydettiğiniz bir html sayfayı text olarak ilgili kodlara gömmek işi bitirecek. Lamba yanıyor mu kısmıda oldukça basit. Sizin Lambanın yanması ve sönmesi için iki komut belirlemeniz yeterli.

modem'e gelince, bu  modemi tanımıyorum. İçerisinde bir çeşit firewall vs. barındırıyorsa sorun çıkarabilir. Modemim sorun çıkarmayacağından emin değilseniz;

eğer bilgisayarınızın ethernet portunun autoMDI özelliği varsa,
yada bu olmasada elinizde cross bir ethernet kablosu varsa direkt olarak modül ile bilgisayarınızı bağlayabilirsiniz.

Dikkat edeceğiniz tek şey IP'lerin statik olarak ve aynı subnette tanımlanmış olması.


uuRAbi

Alıntı yapılan: frederic - 07 Mayıs 2011, 01:51:42
Modemden port açıp deneme yaptınızmı hiç ?
Alıntı yapılan: iyildirim - 07 Mayıs 2011, 02:18:33
Evet denedim.


Farkettim, ve kodunuzun bu haliyle mantığınız yanlış.

Bir önceki mesajda mcu'ya veri gelse bile sadece gelmiş olacak demiştim. Yani kodun bu haliyle modüle, mcu'ya ulaşsanız bile size cevap vermeyecektir.
Bir önceki mesajımda bundan bahsettim.
main bloğuında Spi_Ethernet_doPacket() ; satırından sonra ne yapacağınızla ilgili birşey yok.  Nasıl cevap vereceğinizi de yazmıştım. Sıkıntı cevap vermek için remote IP, remote port'un ne olduğunun anlaşılamaması. Üçkağıt yapıp IP'yi sabitlesiniz bile remote port'u bilmek gerekli.  Kodu aldığınız kütüphane dosyalarını, dökümanlarını inceleyin.

Web sayfasının nasıl görüneceği nasıl birşey olacağı kısmı iletişimi sağladıktan sonraki iş. Ve nispeten daha basit. Basit derken nasıl görüntüleneceği, sorun çıkarsa sorunun ne olduğunu anlamak  çok daha kolay olacak.
Web isteğine nasıl cevap verilmesi gerektiği gibi şeyler çok net. Bilgisayarınızda oluşturup kaydettiğiniz bir html sayfayı text olarak ilgili kodlara gömmek işi bitirecek. Lamba yanıyor mu kısmıda oldukça basit. Sizin Lambanın yanması ve sönmesi için iki komut belirlemeniz yeterli.

modem'e gelince, bu  modemi tanımıyorum. İçerisinde bir çeşit firewall vs. barındırıyorsa sorun çıkarabilir. Modemim sorun çıkarmayacağından emin değilseniz;

eğer bilgisayarınızın ethernet portunun autoMDI özelliği varsa,
yada bu olmasada elinizde cross bir ethernet kablosu varsa direkt olarak modül ile bilgisayarınızı bağlayabilirsiniz.

Dikkat edeceğiniz tek şey IP'lerin statik olarak ve aynı subnette tanımlanmış olması.



Teşekkür ederim, bu bilgiler ışığında tekrar denemeler yapacağım.. Saygılar..

balhan146

Uurabi.İyi günler bidaha geri dönmemissiniz acaba sizin bu deney nasıl sonuçlandı?Bende bu konuda çalışma yapıyorumda,bana da yardımcı olursanız çok sevinirim.

uuRAbi

Sevgili kardeşim S.a

Öncelikle mesajınıza geç cevap verdiğim için özür dilerim ancak yeni okudum, uzun zamandır uzaktım forumdan. Projeyi malesef tasarlayamadık bilgi ve kaynak eksikliğinden ötürü.. Bu sebepten sana yardımcı olamıyorum kusuruma bakma. Ama hiç başlangıç yapmadıysan ya da kafanda oluşan problemler varsa buradan yazarsan sana geri dönüş yapabilirim -bilgim dahilinde-. Sana çalışmanda kolaylıklar dilerim.

Selametle..

kemalak

Arkadaşlar  Serial Mikro Ethernet Board' satın alarak bende devreyi kurdum
ve benimki sorunsuz çalışıyor  Adres çubuğuna  sadece   192.168.2.20  yazarak deneyin
benim devre böyle bağlanıyor 
192.168.2.20:80   şeklinde yazınca  bağlantı kurulmuyor

Kolay gelsin

balhan146


kemalak

Airties RT -205 Kablosuz ADSL2 +1 Portlu Modem


uuRAbi

Bende de aynı modem vardı, hatta ben 192.168.1.1 serili ipleri de denemiştim ancak yine olmamıştı. Direk help dosyasındaki kodu derleyip denemiştim ama olmamıştı...

kutlu_tin

#12
Merhaba.
mikroC nin örneklerinde bulunan http_demo daki devreyi kurdum(18F4520 ile).Buradaki html koda text box ekleyebilen arkadaşlar varsa bu konuda bilgi verebilirler mi acaba?teşekkürler.