Rasperry Pi Pico (Pico4ML): Pin ile Şematik Farklı Fakat Çalışıyor?

Başlatan Firzen, 22 Mart 2024, 23:43:28

Firzen

Elimde RP2040 Tabanlı Pico4ML var. Amacım üzerindeki kamerayı kullanmak olduğu için kamera önce Pico4ML ile kamera test TensorFlow Image Segmentation vs yaptım. Herşey mükemmel çalışıyor. Ardından ben bunu Generic herkesin ulaştığı Raspberry Pi Pico ile neden yapamayım ki deyip aynı sistemi onunla da kurmayı denedim. Ardından aşağıdaki linkini verdiğim bağlantıyı denedim ve çalıştı.

https://docs.arducam.com/Arduino-SPI-camera/Legacy-SPI-camera/Pico/Camera-Module/Arducam-HM01B0-QVGA-Camera-Module/

Tam bu noktadan sonra problemim başladı: kütüphanesinde verilen Pin Numaraları ile şematikteki pin numaraları farklı? Bunun nasıl olduğu konusunda kullanan veya deneyimi olan birisi açıklayabilir mi acaba?

arducampico.c Library

int PIN_CAM_SIOD        = 4;  // I2C0 SDA
int PIN_CAM_SIOC        = 5;  // I2C0 SCL
int PIN_CAM_RESETB      = 2;
int PIN_CAM_XCLK        = 3;
int PIN_CAM_VSYNC       = 16;  // GP15 hsync  GP14 pixel clock
int PIN_CAM_Y2_PIO_BASE = 6;   // data GPIO6


Hatta o kadar ilginç ki isimlendirme de yanlış:


Kütüphanedeki İsmi <-> Şematikteki İsmi

PIN_CAM_SIOD        <-> PIN_CAM_SIOD        
PIN_CAM_SIOC        <-> PIN_CAM_SIOD
PIN_CAM_RESETB      <-> VSYNC
PIN_CAM_XCLK        <-> HREF
PIN_CAM_VSYNC       <-> PCLK  
PIN_CAM_Y2_PIO_BASE <-> DO

Bu durumu gerçekten hiç anlamadım.

Teşekkürler.
Kararsız...

Firzen

Sorumun cevabını yabancı forumda da sorduğum yerde buldum (Resmi Raspberry Pi Forumunda yöneticilerden birisi yazdı.)

Pinlerin bacakları farklı gözüksede aslında VSYNC ve MCLK nın bağlı olduğu bacak PIO kütüphanesi sayesinde belirleniyor. Bu kütüphane ise asm ye çok benzeyen bir dille oluşturuluyormuş. Peki pin numaraları ne alaka ise. PIO pinler GP07 -> Pin 0 olarak kabul edip sırasıyla gidiyor. Bu durumda ise GP14 ve GP15 in 7 ve 8 numaralı pin olması çok normal.

Sonuç: Kamera çalışıyor ve pin numaralarını kafama göre değiştirebiliyorum. Pico4ML ye bağımlı kalmaksızın başka RP2040lar ile de çalışıyor (Pico4ML kartını tanımlayarak).

Sıradaki Problem: NinaWifi Module. Her ne kadar kamera ve IMU gayet düzgün çalışsada projemin temelinde ninawifi yi kullanmak yatıyor. Pico4ml kullanarak herhangi bir wifi nina wifi module desteği bulamadım.

p.s. esp32 * 8266 veya pico-w kullanabilirsin diyebilirsiniz. Kendi kart tasarımımı yapacağımdan büyüklük ve ağırlık (Evet ağırlık dedim yanlış duymadınız) benim için önemli.
Kararsız...

fide

Esp32 için şu tavsiyede bulunabilirim. Maker makoe isimli bir YouTuber esp32 çipi doğrudan pcb çizerek kullanmıştı. Yeni nesil esp32 çiplerde ekstra flash çipine ihtiyaç yok. Flash esp32 içinde. Bu haliyle hem wifi/BT hem de mcu ihtiyacınızı karşılayacaktır. Tek sıkıntı anten tasarım ve empedans olayı. O da eef tasarımlarla çözülür.
Esp32-s3, esp32 mini1,  esp32-c3-mini gibi modül/çip datasheetlerine bakmanızı öneririm.

15mm x 15mm gibi bir alanda hem USB type C hem esp32 hem buton hem de konnektör var. Çift yüzlü ama derli toplu bir tasarım ile hem wifi/BT hem de mcu tek çip ile çözülür.

https://www.mouser.com.tr/ProductDetail/Espressif-Systems/ESP32-C3-MINI-1U-N4?qs=pBJMDPsKWf2g3BjnfZfPbA%3D%3D
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

Firzen

Alıntı yapılan: fide - 04 Nisan 2024, 21:38:27Esp32 için şu tavsiyede bulunabilirim. Maker makoe isimli bir YouTuber esp32 çipi doğrudan pcb çizerek kullanmıştı. Yeni nesil esp32 çiplerde ekstra flash çipine ihtiyaç yok. Flash esp32 içinde. Bu haliyle hem wifi/BT hem de mcu ihtiyacınızı karşılayacaktır. Tek sıkıntı anten tasarım ve empedans olayı. O da eef tasarımlarla çözülür.
Esp32-s3, esp32 mini1,  esp32-c3-mini gibi modül/çip datasheetlerine bakmanızı öneririm.

15mm x 15mm gibi bir alanda hem USB type C hem esp32 hem buton hem de konnektör var. Çift yüzlü ama derli toplu bir tasarım ile hem wifi/BT hem de mcu tek çip ile çözülür.

https://www.mouser.com.tr/ProductDetail/Espressif-Systems/ESP32-C3-MINI-1U-N4?qs=pBJMDPsKWf2g3BjnfZfPbA%3D%3D


Cevap icin tesekkurler. Bu modulu daha once gormustum sikinti ise guc tuketimi. Elimde 250mAh 3.7V bir LiPo var. Beslemeyi bununla yapmayi planliyorum (Calisma suresi benim icin onemli). Bu yuzden HM01B0 camera, ICM20948 IMU ve VL53L1x gibi cok cok ax guc tuketen sistemler ile kurmayi planliyorum. ESP benim bu isteklerimi karsilamiyor maalesef.
Kararsız...

Firzen

Github'ta bir kac kutuphane ve duzenlemesi hakkinda bilgi aldim.

Sorum: Arducam HM01B0 Pico4ML ile calisiyor neden RP2040 Nano Connect ile calismiyordu. Cozuldu.
Siradaki sorum ise "Pico4ML kutuphanesinde neden Nina Wifi Generic kutuphanesi calismiyor ve surekli communication failed " uyarisi veriyordu.

Github'ta bu tartismayi yaptik.

https://github.com/earlephilhower/arduino-pico/discussions/2091

Aldigim bilgierin sahipleri: Earle F. Philhower, III ,  Juraj Andrássy

Fakat pin numaralari degistirdigim halde neden calismiyor? Kavrayamadim.

Daha once aranizda hic boards.local.txt ile islem yapan oldu mu acaba?
Kararsız...

Firzen

Ilerleme Hakkinda:

Sizinle de son ilerleme durumunu paylasiyorum ki basiniza ayni teknik sorunlar gelirse en azindan bir cozum yolu bulunur diye dusunuyorum.

Normalde Arduino Nano RP2040 Connect karti almistim. Bunun uzerine, HM01B0 camera, IMU, ve ToF sensorleri bagladim. Bunlarin hep beraber calismasi icinse Arduino'da RP2040 Connect yerine Arducam Pico4ML olarak secmistim. Problemse su Wifi Connection?

Yani WiFi baglantisi calismiyordu. Sirf uzerinde dahili Wifi modulu var diye zaten Nano RP2040 Connect modulunu secmistim. Bu durumda tabi RP2040 Connect kullanmak anlamsiz oldu. Fakat hala NinaWifi kullanma konusunda israrci olmamdan kaynakli bir breakout tasarimi yaptim. (Aslinda birileri yapmis ben biraz modifiye yaptim, bircok sey degistirmem gerekti)



Tasarimin resmini ekledim. Lehimleme islemi vs calisirsa da sizinle diger dosya eklerini de paylasirim, suanlik devre daha yeni geldi.
Kararsız...

Firzen

Sıkıntılı bir deneme süreci:

Github'ta durumla ilgili bir kaç paylaşım yaptım fakat dönüşler genelde kendin kütüphane düzenle demeye getiriyor. Yani malum forumlardaki klasik cevap 'Bir kaç kod incele yaparsın'. Yahu zaten bir kaç kod inceleme ile yapsam neden foruma yazayım?

Şuan kütüphane yazacak veya değiştirme yapacak bir durumda olmadığım için, @fide nin önerisine uymaya karar verdim (gibi).

Alternatif 1:
ESP-01F 8285 kartı kullanabilirim gibi geliyor. Fakat bunun için gerekli bağlantı şemasını aşağıdaki gibi yapmaya karar verdim.



Bu ESP için herhangi bir boot devresi vs kurmamıza gerk var mı?
RP2040 uart olarak kullanıp AT Command ile programlayabilir miyim? (Evet derseniz lütfen örnek gösterin ben denedim olmadı)
AT Command modunda ayar yapılırsa ardından UDP data gönderme yapılabilir mi?


Alternatif 2:
Daha önce Ublow w102 breakout basmıştım. Fakat malzemelerim şuan yazlıktaki evin ambarında olduğundan QFN soket lehimleme yapamıyorum. 'Ankara' da ikametgah eden herhangi bir arkadaş bu konuda yardımcı olabilir mi acaba?




Yardımlarınız için şimdiden teşekkürler.
Kararsız...

fide

Esp8285 çipini bilmiyorum ama esp32-mini 1 yada esp32-c3 mini ile çalıştım.
Micropython ile flaşlayıp mcu olarak kullandım. Lua (kendi orjinal dili) üzerinde at komutları ile konfigüre edilebiliyor ama bilgi sahibi değilim. Ben flaşlayıp Micropython ile kullandım.  Esp32-eye cam devrelerinde bakıp şematik üzerinden belki bişey çıkarabilirsiniz.

Kolay gelsin. Wifi Nina için yardımcı olan çıkmazsa PTT ile gönderin. Lehimleyip göndereyim. Burdur'dayım.
Allah yar ve yardımcınız olsun.


https://www.hackster.io/FiDeNet/remote-read-project-v1-857b3d
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

ByTEK

Alıntı yapılan: fide - 30 Nisan 2024, 00:59:34Esp8285 çipini bilmiyorum ama esp32-mini 1 yada esp32-c3 mini ile çalıştım.
Micropython ile flaşlayıp mcu olarak kullandım. Lua (kendi orjinal dili) üzerinde at komutları ile konfigüre edilebiliyor ama bilgi sahibi değilim. Ben flaşlayıp Micropython ile kullandım.  Esp32-eye cam devrelerinde bakıp şematik üzerinden belki bişey çıkarabilirsiniz.

Kolay gelsin. Wifi Nina için yardımcı olan çıkmazsa PTT ile gönderin. Lehimleyip göndereyim. Burdur'dayım.
Allah yar ve yardımcınız olsun.


https://www.hackster.io/FiDeNet/remote-read-project-v1-857b3d

Hocam Hep merak ettiğim birşey var. ESP ile geliştirilen bir uygulamada KOD güvenliği nasıl sağlanıyor ? Anladığım kadarıyla kendisinde PIC gibi "code protection" bulunmuyor. Flash olduğu için flash üzerinden program çekilebiliyor. Ticari uygulamalarda kod koruma nasıl gerçekleştiriliyor ? yoksa bu chipler sadece hobiciler ve makerler için mi ?

fide

Kod koruma sadece Micropython için problem. Bu problem de USB /rx-tx pinleri pcb üzerinde gizlenip üzerine epoksi dökülerek aşılabilir.
Esp32 kartın orjinal espressif geliştirme ortamında herhangi bir problem/dışardan izlenebilme / kod görüntüleme olayı yok. Arduino da aynı şekilde güvenli
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

mehmet

Zaten ESP deki micropython, e²prom
içerisine yazılıyor.
Sanırım diğer derleyici kodları da
bu şekilde olmalı.
Aynı durum RP2040 için de geçerli.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

Firzen

Yapmak istedigim son hali hakkinda size bilgi verip sízinden yine oneri almak icin konuyu devam ettiriyorum.

@fide hoca sayesinde QFN socketli W102 module lehimlendi. SMD vs tum lehimler yapildi.
Devrenin sin hali asagidaki gibidir.


Buradan sonra yine bilmedigim bir is daha cikti.

Sisteme FTDI ile baglanip AT komutlari ile ayarlamak istiyorum.

Amac: AT komut sistemi calisirsa hic SPI'ya bulasmadan rahatlikla UDP uzerinden coklu data gonderebilecegim.

Hedef: Eger FTDI ile bu isi yapabilirsam devaminda ayni sistemi RP2040 ile de ayarlayabilecegime inaniyorum.

Problem: AT komut icin sistemi sanirim dogru kuramadim.
(DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2)) Ekrana ya boyle bir hata geliyor ya da hicbirsey gelmiyor.



Alternatif 2: Nina Wifi Module yapisinin icinde de sonucta ESP var biraz piyasa arastirmasi yapinca dusuk guc tuketimli ESP module oldugunu gordum ref. [@fide]. Ardindan bunun da bir devresini alternatif olarak ayirayim dedim. Asagidaki gibi sadece deneme amacli bir duzenek kurdum.






Burada icine at komutlari ile nasil yazdirabilirim. Is ESP8266 olunca kolaydi kendi modulene bir tane aparat takip arduino dan yapiyordum. Ama ben direkt olarak AT komutlari ile bu isi ayarlamak mumkune RP2040 ile yapmak istiyorum.

Tesekkurler.
Kararsız...

fide

Hocam aşağıdaki linkte mikroe wifi nina için at komut seti içeren firmwaredan bahsedilmiş. Ayrıntısını bilmiyorum ama bir bakın derim.
Diğer taraftan esp32 versiyonu belli ise micropython sitesinden uygun imaj bulunup doğrudan micropython imajı yüklenebilir. Micropython üzerinde hem wifi/bt erişim mevcut hem de istediğiniz şekilde kodlayıp iki ayrı mcu gibi de kullanabilirsiniz(işi uzatır ama bazı avantajları da olabilir.) At komutları için wifi nina üzerindeki esp32 versiyonuna göre esspressif sitesinden uygun imaj yüklenip at komutları ile kullanılabilir.

https://www.mikroe.com/wifi-nina-click
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

Firzen

Sonunda
WiFi Kamera IMU ve ToF problemini cozdum. Butun verileri alip yazdigim SensorFusion Algoritmamdan gecirip calistirabiliyorum. Hatta Besleme olarak 3.7V 250mAh Lipo bataryaya sahip drone uzerinden aliyorum.

Asagidaki sistemim:


Problemim ise su (Yine yeni yeniden):
daha once @fide hoca sayesinde bir NinaWiFi breakout tasarlamistim. Burada 100nF yerine 150nF kondansator kullandim ve bu breakoutu RP2040 Nano Connect uzerindeki Nina baglantisi ile ayni olacak sekilde bagladim.

Fakat Communication Failed hatasi verdi.

Sizce problem bu Kondansatorlerden kaynakli olabilir mi acaba? Yoksa Nina Wifi yi baglamadan once on ayar mi cekmem gerekiyor? Bu soru benim icin onemli cunku artik nihai devremi cizecek ardindan akadamik/ticari olarak sunacagim.
Kararsız...

fide

Hocam 150nf kondansatörden yapmaz diye tahmin ediyorum. Daha çok komut verip cevap alamamış ve timeout vermiş gibi duruyor.
Wifi nina kartı USB seri çevirici ile pcye bağlayıp oradan veri alış verişi var mı ona bakın. Sonrasında yedek olan wifi nina kartı deneyip (lehim hatasına karşı) veri alışverişinden emin olun. Lehim hatası olabilir çünkü elek olmadığı için şırınga ile dizmek durumunda kaldım. Kontrol ettim ama karta vakıf olmadığım için deneme şansım olmadı.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com