İçindekiler:

TfCD - Artı: 7 Adım
TfCD - Artı: 7 Adım

Video: TfCD - Artı: 7 Adım

Video: TfCD - Artı: 7 Adım
Video: Multi touch mousepad play (TfCD) 2024, Kasım
Anonim
Image
Image
İçindekiler
İçindekiler

Plus, yalnızca hava durumunu bildirmekle kalmayıp, plus'ı döndürerek ışık renginde yapılan değişikliklerle kullanıcılar için keyifli bir deneyim yaratan minimal bir akıllı ışıktır. Şekli, kullanıcıya birkaç artı modülü birleştirme veya arkadaşları tarafından yerleştirilmiş çok sayıda artı parça ile büyük bir lamba oluşturma fırsatı verir. Bu aydınlatma projesi, TU Delft üniversitesindeki Gelişmiş Konsept Tasarım (ACD) kursunun bir parçasıdır ve TfCD'yi bir ilham kaynağı olarak kullanarak uygulanan teknoloji.

Adım 1: Malzemeler

İçindekiler
İçindekiler
İçindekiler
İçindekiler

1 Ahududu pi sıfır w

1 Groove Adxl345 ivmeölçer

4 Ws2812b LED'i

1 Prototip panosu

3D baskılı ve lazer kesimli muhafazalar

2. Adım: Donanım

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

LED'ler

Neopixel LED'lerde +5V, GND, Data In ve Data out olmak üzere 4 pin bulunur.

  1. Ahududu pi'nin 4 numaralı pimi tüm LED'lerin + 5V'sine bağlanır
  2. Ahududu pi'nin 6 numaralı pimi, tüm LED'lerin GND'sine bağlanır
  3. Data In ilk LED'in pini ahududu pi üzerindeki pin 12'ye bağlanır.
  4. Birinci LED'in Veri çıkış pimi, ikinci LED'in Veri girişine bağlanır ve bu şekilde devam eder.

Daha iyi anlamak için lütfen bağlantı şemasına bakın.

ivmeölçer

İvmeölçerin VCC, GND, SDA ve SCL adlı 4 pini vardır.

  1. Raspberry pi'nin Pin 1'i VCC'ye bağlanır.
  2. Raspberry pi'nin 3 numaralı pini SCL'ye bağlanır.
  3. Raspberry pi'nin Pin 5'i SDA'ya bağlanır.
  4. Ahududu pi'nin 9 numaralı pimi GND'ye bağlanır.

Yapı

  1. Kolaylık sağlamak için LED'ler bir prototipleme panosuna lehimlenebilir. Tahtayı artı şeklinde kesmeye karar verdik, böylece 3D tasarımlı kasaya tam oturacak.
  2. Kart üzerindeki LED'leri lehimledikten sonra, 0,1" başlık bağlantısı ile LED'ler arasındaki bağlantıları yapmak için jumper kablolarını lehimliyoruz. Başlık konektörü, ahududu pi'nin bağlantısının kesilmesini ve gelecekteki bir proje için yeniden kullanılmasını sağlamak için kullanılır.

3. Adım: Yazılım

Yazılım
Yazılım

Raspberry Pi İşletim Sistemi Görüntüsü

Öncelikle Raspberry Pi'yi çalıştırıp çalıştırmamız gerekiyor. Bunu yapmak için şu adımları izliyoruz:

  1. Raspbian'ın en son sürümünü buradan indirin. Doğrudan veya torrent yoluyla indirebilirsiniz. İndirilen işletim sistemini SD karta (Raspberry Pi B+ modeli ve Raspberry Pi Zero olması durumunda mikro SD kart) yazmak için bir görüntü yazıcısına ihtiyacınız olacak.
  2. Bu yüzden "win32 disk görüntüleyiciyi" buradan indirin. SD kartı dizüstü bilgisayara/PC'ye takın ve görüntü yazıcısını çalıştırın. Açıldıktan sonra, indirilen Raspbian görüntü dosyasına göz atın ve seçin. SD kartı temsil eden sürücü olan doğru cihazı seçin. Seçilen sürücü (veya aygıt) SD karttan farklıysa, seçilen diğer sürücü bozulacaktır. Yani dikkatli ol.
  3. Bundan sonra, alttaki "Yaz" düğmesine tıklayın. Örnek olarak, SD kart (veya mikro SD) sürücüsünün "G:\" harfiyle temsil edildiği aşağıdaki resme bakın. İşletim sistemi artık normal kullanıma hazırdır. Ancak bu derste Raspberry Pi'yi başsız modda kullanacağız. Bu, ona bağlı bir fiziksel monitör ve klavye olmadan anlamına gelir!
  4. SD kartı yaktıktan sonra bilgisayarınızdan çıkarmayın! SD karttaki config.txt dosyasını açmak için bir metin düzenleyici kullanın. En alta gidin ve son satıra dtoverlay=dwc2 ekleyin:
  5. config.txt dosyasını düz metin olarak kaydedin ve cmdline.txt dosyasını açın Rootwait'ten sonra (ilk satırdaki son kelime) bir boşluk ekleyin ve ardından module-load=dwc2, g_ether.
  6. Şimdi SD kartı PC'nizden çıkarın ve Raspberry Pi'ye takın ve bir USB kablosu kullanarak PC'nize bağlayın. İşletim sistemi başlatıldığında, keşfedilen yeni bir Ethernet Gadget cihazı görmelisiniz.
  7. Anakarta bağlanmak ve uzaktan kontrol etmek için ssh [email protected] adresini kullanabilirsiniz. Başsız çalıştırma ile ilgili daha ayrıntılı talimatlar için buraya gidin. Neopixel Driver

Raspberry Pi ile NeoPixels kullanmayı mümkün kılan anahtar rpi_ws281x kitaplığıdır.

Öncelikle kütüphaneyi derlemek için gerekli araçları kurmamız gerekiyor. Raspberry Pi çalıştırmanızda: sudo apt-get update && sudo apt-get install build-essential python-dev git scons swig Şimdi kitaplığı indirmek ve derlemek için şu komutları çalıştırın:

git klon https://github.com/jgarff/rpi_ws281x.git && cd rpi_ws281x && scons Son olarak, kitaplık başarıyla derlendikten sonra, aşağıdakileri kullanarak onu python için kurabiliriz:

cd python && sudo python setup.py install Şimdi LED'leri çalıştıran python kodu geliyor. Kod, size yardımcı olacak bazı yorumlarla oldukça basittir. neopixel içe aktarmadan * # NeoPixel konfigürasyonları LED_PIN = 18 # Raspberry Pi'nin piksellere bağlı GPIO pini LED_BRIGHTNESS = 255 # En karanlık için 0 ve en parlak için 255 olarak ayarlayın LED_COUNT = 4 # LED piksel şeridi sayısı = Adafruit_NeoPixel(LED_COUNT, LED_PIN, 800000, 5, False, LED_BRIGHTNESS, 0, ws. WS2811_STRIP_GRB) # Kitaplığı başlat strip.begin() strip.setPixelColor(0, Color(255, 255, 255)) strip.show()

ADXL345 Sürücü

Seçtiğimiz ivmeölçer sensörü, dış dünya ile iletişim kurmak için bir I2C interfae sahiptir. Şansımıza Raspberry Pi de I2C arayüzüne sahip. Sadece kendi kodumuzda kullanması için etkinleştirmemiz gerekiyor.

Sudo raspi-config kullanarak Raspbian yapılandırma aracını çağırın. Çalıştırdıktan sonra, Arayüz Seçenekleri, Gelişmiş Seçenekler'e gidin ve ardından I2C'yi etkinleştirin. I2C arayüzünü python'da kullanabilmemiz için ilgili python modüllerini kurun:

sudo apt-get install python-smbus i2c-tools Aşağıdaki python kodu, ivmeölçer sensörü ile iletişim kurmamıza ve kendi amaçlarımız için kayıt değerlerini okumamıza izin verir. smbus içeri aktar yapı # İvmeölçer konfigürasyonları bus = smbus. SMBus(1) adresi = 0x53 kazanç = 3.9e-3 bus.write_byte_data(adres, 45, 0x00) # Bekleme moduna git bus.write_byte_data(adres, 44, 0x06) # Bant genişliği 6.5Hz bus.write_byte_data(adres, 45, 0x08) # Ölçüm moduna gidin # Sensör buf'tan gelen verileri okuyun = bus.read_i2c_block_data(adres, 50, 6) # Verileri int16_t'den python tamsayı verisine açın = struct.unpack_from (">hhh", arabellek(bytearray(buf))), 0)

x = kayan nokta(veri[0]) * kazanç

y = kayan nokta(veri[1]) * kazanç

z = kayan nokta(veri[2]) * kazanç

Hareket Dedektörü

Yaptığımız ışığın özelliklerinden biri, etkileşimli moda (ışık dönüşe bağlı olarak değişir) ve hava tahmini moduna (hava durumuna göre ışığın değiştiği) girmek için hareketi (veya eksikliğini) algılayabilmesidir. bugün için). Aşağıdaki kod, 3 eksen için hızlanma değerlerini okumak ve hareket olduğunda bizi uyarmak için önceki işlevi kullanır.

hızlanma = getAcceleration()

dx = abs(prevAccel[0] - hızlanma[0])

dy = abs(prevAccel[1] - hızlanma[1])

dz = abs(prevAccel[2] - accel[2])

dx > moveThreshold veya dy To > moveThreshold veya dz > moveThreshold ise:

'taşındı' yazdır

taşındı = Doğru

Başka:

taşındı = Yanlış

Hava Durumu API'si

Hava durumu tahminini almak için Yahoo Hava Durumu'nu kullanabiliriz. Bu, oldukça karmaşık olabilen Yahoo Weather Rest API ile konuşmayı içerir. Neyse ki bizim için zor kısım, python için hava durumu-api modülü şeklinde halledildi.

  1. Öncelikle bu modülü şu şekilde kurmamız gerekiyor: sudo apt install python-pip && sudo pip install weather-api
  2. Bu modül hakkında daha fazla bilgi için lütfen yazarın web sitesini ziyaret edin.

Aşağıdaki kodu yükledikten sonra, bu anın hava durumunu alır

hava durumu içe aktarmasından Weatherweather = Weather()

konum = hava durumu.lookup_by_location('dublin')

koşul = konum.durum()

yazdır(durum.metin())

Hepsini bir araya koy

Yukarıdaki tüm parçaları birbirine bağlayan proje kodunun tamamı burada bulunabilir.

Python betiğini açılışta otomatik başlatma

Raspberry pi'yi bir kutunun içine koyabilmek ve onu güce her bağladığımızda kodumuzu çalıştırabilmesi için, açılış sırasında kodun otomatik olarak başlatıldığından emin olmalıyız. Bunu yapmak için cron adlı bir araç kullanıyoruz.

  1. İlk önce şunu kullanarak cron aracını arayın: sudo crontab -e
  2. Önceki adımlar, aşağıdaki satırı eklediğimiz bir yapılandırma dosyası açacaktır:

    @reboot python /home/pi/light.py &

4. Adım: Modelleme ve 3D Baskı

Modelleme ve 3D Baskı
Modelleme ve 3D Baskı
Modelleme ve 3D Baskı
Modelleme ve 3D Baskı

Plus'ın 3D modeli Solidworks'te yapılmış ve. Stl formatında kaydedilmiştir. Daha sonra modelin 3D baskısı için Cura yazılımına. Stl dosyası aktarıldı. Artının her iki tarafının üretilmesi 2:30 saat sürdü; bu nedenle her bir Plus'ın yazdırılması yaklaşık 5 saat sürdü. Şeffaf kenarlar için pleksiglas lazerle kesilmiştir.

Adım 5: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

3D baskılı parça, elektronik ve yazılım elimizin altındayken, nihayet nihai ürünü bir araya getirebiliriz.

  1. 3D baskılı üst ve alt plakaların beklenenden daha şeffaf olduğunu gördük. Bir alüminyum folyo tabakası, ışık sızıntısı sorununu çözdü.
  2. Ancak bu levhalar iletkendir ve korumasız devremizde kısa devrelere neden olabilir. Böylece üstüne başka bir beyaz karton tabakası yapıştırılır.
  3. Dağınık pleksiglas segmentleri yan plakalardan birine yapıştırılmıştır.
  4. Yandaki 3D baskılı panellerden birinde bir delik açılır. Bu, güç kablosunun içinden geçebilmemiz içindir.
  5. Güç kablosu delikten geçirildiğinde, onu prototipleme kartımıza lehimliyoruz.
  6. Sensörü ahududu pi'ye takıyoruz ve ardından konektöre takıyoruz.
  7. Nihai ürünümüzü elde etmek için 2 parçayı bir araya getiriyoruz.
  8. İsteğe bağlı olarak daha kalıcı bir bağlantı yapmak için 2 parçayı yapıştırabilirsiniz. Ancak, kodu daha sonra değiştirmek isterseniz, yapıştırıldıktan sonra kutunun içine girmenin zor olabileceğini unutmayın.

Önerilen: