İçindekiler:

Raspberry Pi Lazer Tarayıcı: 9 Adım (Resimlerle)
Raspberry Pi Lazer Tarayıcı: 9 Adım (Resimlerle)

Video: Raspberry Pi Lazer Tarayıcı: 9 Adım (Resimlerle)

Video: Raspberry Pi Lazer Tarayıcı: 9 Adım (Resimlerle)
Video: BUNU YAŞAMAYAN YOKTUR 😂 #emirbeşli #shorts 2024, Temmuz
Anonim
Image
Image
Raspberry Pi Lazer Tarayıcı
Raspberry Pi Lazer Tarayıcı

Lazer Tarayıcı, nesneleri 3D baskı kullanarak çoğaltmak için.obj ağ dosyalarına dijitalleştirebilen bir Raspberry Pi gömülü sistem cihazıdır. Cihaz bunu, bilgisayarla görü gerçekleştirmek için bir çizgi lazeri ve entegre bir PiCam kullanarak yapar. Lazer, lazerden 45 derece eğik olarak konumlandırılır ve nesnenin dikey bir dilimine parlak kırmızı bir çizgi yansıtır. Kamera, bir ağ dilimi vermek için dilimin merkezden uzaklığını algılar. Nesne dönen tabla üzerinde döndürülür ve tüm nesne taranana kadar işlem tekrarlanır. Oluşturulan.obj dosyası en sonunda kullanıcıya e-posta ile gönderilir, bu da sistemi tamamen bağımsız ve gömülü hale getirir.

Bu Eğitilebilir Tablo, cihazın nasıl oluşturulduğunu, bazı sonuçları ve gelecekteki adımları anlatacaktır.

Adım 1: İlham

Esin
Esin
Esin
Esin

Hevesli bir yapımcı olarak, birkaç yıldır 3D baskı ve katı modelleme yapıyorum. CNC router'lardan lazer kesicilere ve 3D yazıcılara kadar birçok farklı prototipleme aracıyla çalıştım. Yerel makerspace'imin henüz satın almadığı bir cihaz bir 3D tarayıcı oldu - ve size nedenini söyleyebilirim.

Daha ucuz olanlar (birkaç yüz dolar) güvenilmezdi, mükemmel koşullar gerektiriyordu ve yine de oldukça kötü sonuçlar veriyordu. Pahalı olanlar… Şey, pahalıydı, birkaç bin dolara kadar çıkıyordu ve çoğu durumda işlevini buna değmez hale getiriyordu. Bunun da ötesinde, çoğu zaman, bir taramadan oluşturulan yüzey ağıyla uğraşmak yerine, ölçümler yapmayı ve sıfırdan bir model tasarlamayı tercih ediyorum.

Bu nedenle, hazır bileşenleri kullanarak bir nesneyi ne kadar iyi tarayabileceğimi görmek için bütçeye uygun bağımsız bir tarayıcı oluşturmak istedim.

Biraz araştırma yaptıktan sonra, birçok 3D tarayıcının, dönen bir model oluşturmak için merkezden mesafeyi ölçmek için dönen bir platform ve ardından çeşitli farklı sensörler kullandığını gördüm. Bunların çoğu, Kinect'inkine benzer çift kameralar kullandı. Sonunda lazer kullanan düşük çözünürlüklü bir tarayıcı olan Yscanner'a rastladım. Basitlik ve fizibilite açısından bakıldığında, merkezden uzaklığı ölçmek için bir lazerin bir kameraya göre ofset olarak parlatıldığı bu lazer tekniği, ileriye doğru net bir yol gibi görünüyordu.

2. Adım: Araçlar ve Parçalar

Parçalar:

  • Ahududu Pi 35,00 $
  • Raspberry Pi Kamera V2 30,00 Dolar
  • LED'ler, Dirençler ve Teller
  • 3D baskı filamenti
  • 12x12x0.125 ahşap levhalar
  • M3 donanımı
  • Step Motor - 14 $
  • Çizgi Lazeri - 8 $
  • LN298 Step Motor Sürücüleri - 2,65 $
  • Metal Buton - 5 Dolar

Aletler:

  • Havya
  • Lazer kesici
  • 3 boyutlu yazıcı
  • Tornavida
  • pense

Adım 3: Üst Düzey Tasarım

Üst Düzey Tasarım
Üst Düzey Tasarım
Üst Düzey Tasarım
Üst Düzey Tasarım

Bu tasarımdaki merkezi bileşen, nesnelerin dikey bir dilimine yansıyan çizgi lazeridir. Bu projeksiyon pikamerada yakalanabilir, perspektifi düzeltilebilir ve ardından görüntü işlemeden önce filtrelenebilir. Görüntü işlemede, nesnenin merkezinden doğrunun her bir parçası arasındaki mesafe toplanabilir. Radyal koordinatlarda, bu resim hem r hem de z bileşenlerini verir. Üçüncü boyut, Θ, daha sonra nesneyi yeni bir dilime döndürerek elde edilir. Bu kavram ilk şekilde gösterilmiştir.

Yukarıda açıklanan işlemleri gerçekleştirmek için merkezi bilgi işlem birimimiz olarak bir Raspberry Pi kullandım. Pi'ye harici bir 5V besleme ile çalışan ve Pi'nin GPIO pinleri tarafından kontrol edilen bir step motor ve bir motor sürücüsü bağladım. Pi üzerindeki 3,3 V hattına çizgi lazer ve Pi üzerindeki kamera girişine PiCam takıldı. Son olarak, basit bir aşağı açılan düğme ve kullanıcıya sistemin hangi durumda olduğunu gösteren bir durum LED'i kuruldu. Tüm sistem bir sistem blok şemasında özetlenmiştir.

En başından beri, elektroniği T-yuvaları ve M3 donanımıyla bir arada tutulan lazer kesimli bir kutuya yerleştirmek planlandı. Elektronikler bir alt bölmede görünmez olacak ve bir kapak, dönen tepsi üzerindeki nesne yerleştirmeye kolay erişim sağlayacak. Bu kapak, sisteme sızan ışık miktarını en aza indirmek için gereklidir, çünkü bu harici ışık son taramada gürültü üretebilir.

4. Adım: Donanım

Donanım
Donanım
Donanım
Donanım
Donanım
Donanım

Yukarıda görüldüğü gibi, lazer kesime veya 3D baskıya başlamadan önce, tasarımımızın detaylı bir 3D modelini yapmak için Autodesk Fusion 360'ı kullandım. Genel bir bakış olarak cihaz, lazer kesim menteşelere sahip kapaklı basit bir kutudur. Cihazın iki ana katmanı vardır: elektronik yatak ve iki katman arasında kabloların geçeceği deliklere sahip ana yatak.

Kutumuzun büyük bir kısmı bir lazer kesici ile üretildi, tasarımlar Fusion 360'ta üretildi ve bir Epilog Zing 40 W lazer kesici üzerinde kesildi. Tasarımlarımız yukarıdaki şekillerde gösterilmiştir. Sol üstten sağa hareket eden parçalar ana yatak, elektronik yatak, kapak için iki parça, arka parça, ön parça ve iki yan parçadır. Ana yatakta üç ana oyuk vardır: biri step motoru monte etmek için, biri lazerden gelen kabloları yönlendirmek için ve biri PiCam'in geniş kablosunu yönlendirmek için. Yatak parçası, Pi, devre tahtası ve motor sürücüsünü sabitlemek için montaj deliklerine ve step motora erişmek için daha büyük bir oyuğa sahiptir. Kapak parçaları, yukarıda görülen üçgen parçayı oluşturmak üzere basitçe birbirine geçer ve menteşe, yan levhaların deliğinin çapının genişliği olan basit bir ekstrüzyondur. Pi (HDMI, USB, Ethernet, Güç) bağlantı noktalarına kolayca erişilebilmesi için arka parça ve yan parçalardan birinin yan tarafında yuvalar bulunur. Ön taraf basit bir parça, sonunda el matkabı ile buton ve LED'i monte etmek için delikler açtım. Tüm parçalarda görüldüğü gibi, parçalarımız T-Joints ve slotlar kullanılarak M3 donanımı ile bir arada tutuluyor. Bu, lazerle kesilmiş parçaları dik ve güvenli bir şekilde tutma yöntemidir. Parçaların kanatları diğer parçaların yuvaları ile aynı hizadadır ve kenarlardaki t şeklindeki kesim, bir M3 somunun sıkılmadan içlerine sıkışması için alan sağlar. Bu, daha sonra, montajın tamamen kalıcı olmasına gerek kalmadan çok az hareket alanı ile parçaları birbirine kilitlemek için bir M3 vida kullanmamıza izin verir.

Parçalarımızın çoğunu hızı ve kolaylığı nedeniyle lazer kesici ile yapmayı tercih ettim. Bununla birlikte, kesicide oluşturulması daha zor olan 3B geometrileri nedeniyle bazı parçaları 3B yazdırmam gerekti. İlk parça çizgi lazer tutucuydu. Bu parça, kameranın görüş açısına 45 derece açıyla ana yatağa monte edilecek ve lazerin rahatça sığabileceği bir deliğe sahip olacaktı. Ayrıca motor şaftı çok uzun olduğu için motor takozu yapmak zorunda kaldım. Montaj sürtünmesi, lazerle kesilmiş parçalara oturur ve motorun bağlı olduğu düzlemi, dönen platform ana yatak ile aynı hizada olacak şekilde indirdi.

Adım 5: Elektronik

Elektronik
Elektronik

Bu projenin kablolama donanımı, 3D tarayıcı çok fazla çevre birimi gerektirmediğinden çok basitti. Pi'ye bir motor, düğme, LED, lazer ve kamera bağlanması gerekiyordu. Gösterildiği gibi, pinleri korumak için kullandığımız her pin ile dirençleri seri bağladığımdan emin oldum. Bir GPIO pini, cihaz kullanıma hazır olduğunda yanan ve cihaz çalışırken PWM ile titreşen durum LED'ini kontrol etmeye adanmıştır. Başka bir GPIO pini, yukarı çekilen bir düğmeye bağlandı ve düğmeye basılmadığında YÜKSEK ve düğmeye basıldığında DÜŞÜK olarak kaydedildi. Son olarak, step motoru sürmek için dört GPIO pini adadım.

Motorumuz, hız kontrolü gerektirmeden yalnızca belirli bir dereceye kadar adım atmak zorunda olduğundan, kontrol hatlarını motorun girişlerini beslemek için hızlandıran daha basit bir adım motor sürücüsü (L298N) seçtik. Step motorların çok düşük seviyede nasıl çalıştırılacağını öğrenmek için hem L298N veri sayfasına hem de Arduino kütüphanesine başvurduk. Step motorlar, değişken polariteye sahip çıkıntılı parmaklara sahip manyetik bir çekirdeğe sahiptir. Dört tel, her biri motordaki her bir diğer parmağa güç sağlayan iki elektromıknatısı kontrol etmek için sarılmıştır. Böylece parmakların polaritesini değiştirerek stepper'ı bir adım itebiliriz. Stepper'ların donanım seviyesinde nasıl çalıştığına dair bu bilgiyle, stepper'ları çok daha kolay kontrol edebildik. Pi'nin sağlayabileceğinden daha fazla olan yaklaşık 0,8 A'lık maksimum akım çekişi nedeniyle step motorumuzu Pi yerine laboratuvarda 5V'luk bir güç kaynağından kapatmayı seçtik.

6. Adım: Yazılım

Yazılım
Yazılım
Yazılım
Yazılım
Yazılım
Yazılım
Yazılım
Yazılım

Bu projenin yazılımı, birbiriyle etkileşime giren dört ana bileşene ayrılabilir: Görüntü İşleme, Motor Kontrolü, Ağ Oluşturma ve Gömülü İşlevler.

Yazılımın bir özeti olarak ilk şekle bakabiliriz. Sistem önyüklenirken,.bashrc otomatik olarak Pi'de oturum açar ve python kodumuzu çalıştırmaya başlar. Sistem, kullanıcıya doğru şekilde başlatıldığını bildirmek için durum ışığını yakar ve düğmeye basılmasını bekler. Kullanıcı daha sonra taranacak öğeyi yerleştirebilir ve kapağı kapatabilir. Düğmeye bastıktan sonra, kullanıcının cihazın çalıştığını bildirmek için LED darbeleri. Cihaz, tam dönüş tamamlanana ve tüm nesne verileri toplanana kadar görüntü işleme ve motor kontrolü arasında döngü yapacaktır. Son olarak, ağ oluşturulur ve dosya önceden seçilmiş bir e-postaya e-posta ile gönderilir. Bu, döngüyü yeniden başlatır ve makine bir düğmeye basarak başka bir tarama yapmaya hazırdır.

Görüntü işleme

Uygulanan ilk şey, görüntüde depolanan bilgiyi uzayda bir dizi nokta oluşturmak için kullanılabilecek bir forma çıkarmak için yakalanan bir görüntüyü işlemekti. Bunu yapmak için, kutunun arkasına parlayan ve dağılan lazerin yarattığı tüm arka plan gürültüsüyle birlikte platformdaki nesnenin resmini çekerek başladım. Bu resmin ham haliyle iki ana sorunu vardı. İlk olarak, nesne yükseltilmiş bir perspektifle bir açıyla görüntülendi ve ikincisi, çok fazla arka plan gürültüsü vardı. Yapmam gereken ilk şey bu görüş açısını hesaba katmaktı çünkü fotoğrafı olduğu gibi kullanmak tutarlı bir nesne yüksekliği belirlememize izin vermeyecekti. İkinci şekilde görüldüğü gibi, baş aşağı “L” şeklinin yüksekliği tutarlıdır; ancak bir kenarı diğerinden daha uzun olduğu için, bakana en yakın kenarda farklı yüksekliklere sahip görünüyorlar.

Bunu düzeltmek için görüntüdeki çalışma alanını daha önce bulunduğu yamuk şeklinden bir dikdörtgene dönüştürmem gerekiyordu. Bunu yapmak için, bir görüntü ve dört nokta verildiğinde, görüntüyü dört nokta arasında kırpan ve kırpılan görüntüyü perspektifi telafi etmek için dönüştüren bu bağlantı tarafından sağlanan kodu kullandım. Bu dönüşüm, üçüncü şekilde görüldüğü gibi yamuk tipi bir şekil yerine bir dikdörtgen oluşturmak için dört noktayı kullanır.

Çözülmesi gereken bir sonraki sorun, lazerin kendisi tarafından yansıtılan dış ışık ve ışık şeklindeki arka plan gürültüsüydü. Bunu yapmak için OpenCV'nin inRange() işlevini kullanarak ışığı filtreledim. Eşiği sadece belirli bir seviyede kırmızı ışık alacak şekilde ayarladım. Doğru değeri elde etmek için yumuşak bir eşikle başladım ve alınan tek ışık taranan nesne üzerindeki lazer ışığı olana kadar eşik seviyesini artırmaya devam ettim. Bu görüntüyü elde ettikten sonra, her satırdaki en parlak pikseli buldum. lazer çizgisinin en sol tarafını sınırlayan satır başına bir piksellik bir çizgi alın. Her piksel daha sonra 3B uzayda bir tepe noktasına dönüştürüldü ve ağ oluşturma bölümünde açıklandığı gibi bir dizide saklandı. Bu adımların sonuçları dördüncü şekilde görülebilir.

Motor kontrolü

Nesnenin dilimini elde etmek için tek bir görüntüyü başarıyla işledikten sonra, farklı bir açıyla yeni bir resim çekmek için nesneyi döndürebilmem gerekiyordu. Bunu yapmak için, taranan nesnenin oturduğu platformun altındaki step motoru kontrol ettim. Motorun durumunu izlemek için bir değişken oluşturarak ve dört motor girişinin her birini değiştirerek mikro adım atarak adım fonksiyonumuzun bir temelini oluşturdum.

Ağ Oluşturma İşlenen tüm görüntülerden bir ağ oluşturmak için, önce işlenmiş görüntüdeki her beyaz pikseli 3B uzayda bir tepe noktasına dönüştürmem gerekiyordu. Silindirik simetriye sahip nesnenin tek tek dilimlerini topladığım için silindirik koordinatları toplamaya başlamak mantıklıydı. Resmin yüksekliği z eksenini, döner tablanın merkezinden uzaklığı R eksenini ve step motorun dönüşü teta eksenini temsil edebileceğinden bu mantıklıydı. Ancak, verilerimizi silindirik koordinatlarda sakladığım için bu köşelerin her birini kartezyen koordinatlara dönüştürmek zorunda kaldım.

Bu tepe noktaları oluşturulduktan sonra, bir listede saklandı ve söz konusu liste, çekilen her görüntü için oluşturulan tepe noktası listelerini içeren başka bir listede saklandı. Tüm görüntüler işlenip köşelere dönüştürüldüğünde, son ağda gerçekten gösterilmesini istediğim köşeleri seçmem gerekiyordu. Üst tepe noktasının ve alt tepe noktasının dahil edilmesini istedim ve ardından çözünürlüğe bağlı olarak her görüntü için eşit aralıklı sayıda köşe seçtim. Tüm köşe listeleri aynı uzunlukta olmadığından, en az köşe sayısına sahip listeyi bularak ve diğer tüm listelerden köşeleri, hepsi eşit olana kadar çıkararak eşitlemem gerekiyordu. Oluşturulan köşe listeleri ile artık bunları yapabildim. bir ağ oluşturun. Basit ve 3D yazdırılabilir olduğu için ağımızı.obj dosya standardına göre biçimlendirmeyi seçtim.

Gömülü İşlev

Cihaz işlevsel hale geldikten sonra, tam gömülü işlevsellik ekleyerek cilaladım. Bu, klavye, fare ve monitörün çıkarılması ve işleme tamamlandıktan sonra kablosuz olarak.obj dosyasının bize gönderilmesi anlamına geliyordu. Başlamak için, otomatik olarak oturum açmak ve başlangıçta ana python programını başlatmak için.bashrc kodunu değiştirdim. Bu, sudo raspi-config kullanılarak ve “Console Autologin” seçilerek ve /home/pi/.bashrc dizinine “sudo python /home/pi/finalProject/FINAL.py” satırı eklenerek yapıldı. kullanıcı girişi ve çıkışı için bir düğme ve durum LED'i eklendi. Düğme, kullanıcının cihaza ne zaman taramaya başlayacağını söylemesini sağlar ve LED, kullanıcıya makinenin durumunu bildirir. LED yanıyorsa, cihaz yeni bir tarama başlatmaya hazırdır. LED yanıp sönüyorsa, cihaz şu anda tarama yapıyordur. LED yanıyorsa, sistemin yeniden başlatılmasını gerektiren bir yazılım hatası vardır. Son olarak, cihazın.obj dosyasını e-posta ile göndermesini sağladım. Bu, smtplib ve e-posta kitaplıkları kullanılarak yapıldı. Bu e-posta gönderme yeteneği, üretilen dosyayı kullanıcıya birçok farklı platformda erişmesi için ulaştırmak için bize çok uygun ve kablosuz bir yol sağladı.

7. Adım: Entegrasyon

Entegrasyon
Entegrasyon

Cihazın çeşitli parçalarını ürettikten sonra bir araya getirdim. Yukarıdaki şekil sırayla gösterilmektedir:

(a) dışarıda monte edilmiş kutu

(b) içinde kamera ve lazer bulunan birleştirilmiş kutu

(c) elektronik yatağın iç görünümü

(d) Pi portlarına erişim ve 5V motor girişi ile Pi'nin arkası

(e) cihazın önünde LED halkalı ve durum ışıklı basma düğmesi

8. Adım: Sonuçlar

Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar

Lazer 3D tarayıcı, nesneleri iyi bir hassasiyetle tarayabildi. Nesnelerin özellikleri belirgin ve tanınabilirdir ve parçaların Repetier gibi bir dilimleme yazılımı kullanılarak 3B yazdırılması çok kolaydı. Yukarıdaki şekiller, bir tahta parçasının ve bir lastik ördeğin bazı örnek taramalarını göstermektedir.

Testler sırasında keşfettiğim en büyük bulgularımızdan ve başarılarımızdan biri cihazın tutarlılığıydı. Aynı nesnenin birden çok denemesi boyunca, nesnenin yerleşimini biraz değiştirmiş olsak bile, tarayıcı her seferinde çok benzer bir.obj dosyası üretebildi. Üç ayrı taramada görüldüğü gibi, hepsi çok benzer görünüyor, aynı ayrıntıları ve aynı miktarda ayrıntıyı yakalıyor. Genel olarak sistemimizin tutarlılığından ve sağlamlığından çok etkilendim.

Gerçekten ayarlayabildiğim değişkenlerden biri, taramaların çözünürlüğü. Adımda 400 adım olduğundan, açısal çözünürlüğü dikte etmek için her ΔΘ'nin ne kadar büyük olduğunu seçebilirim. Varsayılan olarak, açısal çözünürlüğü 20 iterasyona ayarladım, yani her bir çerçeve, motor 20 adım (400/20 = 20) dönüyor. Bu, esas olarak zaman açısından seçilmiştir - bu şekilde bir taramanın tamamlanması yaklaşık 45 saniye sürer. Ancak, çok daha kaliteli bir tarama istersem, yineleme sayısını 400'e kadar çıkarabilirim. Bu, modeli oluşturmak için çok daha fazla puan verir ve çok daha ayrıntılı bir tarama sağlar. Açısal çözünürlüğe ek olarak, dikey çözünürlüğü veya lazer dilimi boyunca kaç farklı noktayı yoklamayı seçeceğimi de ayarlayabilirim. Zamana benzer bir ilgi için, bu varsayılanı 20'ye ayarladım, ancak daha iyi sonuçlar için bunu artırabilirim. Bu açısal çözünürlük ve uzamsal çözünürlük parametreleriyle oynarken, son şekilde aşağıdaki farklı taramaların sonuçlarını derleyebildim. Her etiket, açısal çözünürlük x uzamsal çözünürlük olacak şekilde biçimlendirilir. Varsayılan tarama ayarlarında görüldüğü gibi, ördeğin özellikleri tanınabilir ancak ayrıntılı değildir. Ancak çözünürlüğü artırdıkça, ördek üzerindeki gözler, gaga, kuyruk ve kanatlar dahil olmak üzere bireysel kesin özellikler görünmeye başlıyor. En yüksek çözünürlüklü görüntünün taranması yaklaşık 5 dakika sürmüştür. Bu yüksek ulaşılabilir çözünürlüğü görmek çok büyük bir başarıydı.

sınırlamalar

Projenin başarılı sonuçlarına rağmen, tasarım ve uygulamada hala birkaç sınırlama var. Lazerin kullanımıyla birlikte ışığın nasıl dağıldığıyla ilgili birçok sorun ortaya çıkıyor. Taramaya çalıştığım, yarı saydam, parlak veya çok karanlık olan birçok nesne, ışığın yüzeyden nasıl yansıdığı konusunda sıkıntılı çıktı. Nesne yarı saydam olsaydı, ışık emilir ve dağıtılır, bu da dilimlerin çok gürültülü okunmasını sağlar. Parlak ve karanlık nesnelerde, ışık ya yansıtılır ya da alınması zor olan noktaya kadar emilir. Ayrıca, nesnelerin özelliklerini yakalamak için bir kamera kullandığım için, algılaması görüş hattıyla sınırlıdır, yani içbükey nesneler ve keskin açılar genellikle nesnenin diğer kısımları tarafından engellenir. Bu, lastik ördek örneğimizde, kuyruk bazen taramada eğriliğini kaybedeceği için gösterilmiştir. Kamera ayrıca yalnızca yüzey yapılarını algılayabilir, bu da deliklerin veya iç geometrilerin yakalanamayacağı anlamına gelir. Ancak bu, diğer birçok tarama çözümünün de sahip olduğu yaygın bir sorundur.

Sonraki adımlar

Projemizin sonuçlarından memnun olsam da, daha iyi hale getirmek için uygulanabilecek birkaç şey vardı. Yeni başlayanlar için, mevcut durumda, tarama çözünürlüğü ancak kodumuzdaki sabit kodlanmış çözünürlük değişkenleri değiştirilerek değiştirilebilir. Projeyi daha yerleşik hale getirmek için, kullanıcının tarayıcıya bir monitör ve klavye takmak zorunda kalmadan çözünürlüğü değiştirebilmesi için bir çözünürlük potansiyometresi eklenebilir. Ayrıca, tarayıcı bazen pürüzlü görünebilen görüntüler oluşturur. Bunu düzeltmek için, düzensizlikleri ve sert köşeleri düzeltmek için ağ yumuşatma teknikleri uygulanabilir. Son olarak, piksel koordinatlarının gerçek dünyaya iyi ölçeklenmediğini buldum. Oluşturduğum ağlar, gerçek nesneden 6 ila 7 kat daha büyüktü. Gelecekte, nesnenin gerçek boyutuna daha doğru olmaları için ağları ölçeklendirmenin bir yolunu uygulamak avantajlı olacaktır.

9. Adım: Kaynaklar

Projenin tamamı için kodu, yazdırma için STL dosyalarını ve kesme için DXF dosyalarını ekledim.

Ahududu Pi Yarışması 2020
Ahududu Pi Yarışması 2020
Ahududu Pi Yarışması 2020
Ahududu Pi Yarışması 2020

Raspberry Pi Yarışması 2020 Birincilik Ödülü

Önerilen: