İçindekiler:
- Adım 1: Malzemeler
- Adım 2: Elektrik Devresi
- Adım 3: Sensörlerin Kodlanması
- Adım 4: Sensörleri Hazırlama ve Yerleştirme
- Adım 5: Matris Modülünü Hazırlama ve Yerleştirme
- Adım 6: IoT Yapmak
- 7. Adım: Raspberry Pi'yi Bağlama
- Adım 8: Veritabanını Ayarlama
- 9. Adım: Web Sitesini Oluşturma
- Adım 10: World Wide Web'e Bağlanma
- Adım 11: Bitirme
Video: Raspberry Pi IoT Langırt Masası: 11 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Yeni Medya ve İletişim teknolojisi için bir öğrenci projesinin parçası olarak, hacklenmiş bir langırt masası versiyonuma hoş geldiniz. Temelde langırt ve bilardo masaları arasında büyüdüm, bu yüzden bu cihazlardan birini internete bağlamayı denemenin harika olacağını düşündüm.
Ana kurulum, aşağıdaki görevlerin tümünü yapabilen bir Raspberry Pi'ye bağlı mevcut bir langırt masasını kullanmaktır:
- IR LED/Alıcıları ve 8x8 nokta vuruşlu modülleri sürmek için GPIO pinlerini kullanır
- nginx kullanarak bir Flask web sitesi çalıştırır
- Veri depolama için bir MySQL/MariaDB veritabanı çalıştırır
Bu projeyi yeniden oluşturabilmek için aşağıdaki becerilere ihtiyacınız olacak:
Arka uç:
- Web sitesinin istemcisi için HTML/CSS/Javascript'i anlama
- Web sitesinin sunucu tarafı için Flask/Flask-SocketIO/Jinja2 ile Python'u anlama
- MySQL'in temel bilgisi
- Bir web sunucusunu nasıl çalıştıracağınızı bilin
Prototip
- Bir elektrik devresinin nasıl bağlanacağı hakkında temel bilgiler
- Lehimleme
- Python'da bir komut dosyasının nasıl yazılacağına dair temel anlayış
- Linux ile Çalışmak (Raspbian)
- Çok sabırlı olmak, çünkü çok fazla hata ayıklama söz konusu olacaktır.
Adım 1: Malzemeler
Tablo için gerekli tüm parçaları içeren liste:
- Raspberry Pi Model 3 (muhafazalı)
- Pi'yi breadboard'a bağlamak için T-Cobbler
- Langırt masası (Buna benzer çok eski bir masa kullandım. İçine delik açmaya istekli olmalı)
- MAX7219 Arduino Dot Matrix Modülü (2)
- IR LED Yayıcılar (2+ çünkü kırılırlar, buna benzer)
- IR Alıcıları (2+ çünkü onlar da kırılır, buna benzer)
- Temel lehimsiz devre tahtası
- Çok ve çok sayıda tel (langırt masasının boyutuna bağlıdır)
- erkek konektörler (30+)
- dişi konektörler (10+)
- 100-220 Ohm Dirençler (4+)
- lehim malzemeleri
- tel kayışlar
- LED tutucular
- topu olukta geçirmek istemeniz durumunda bazı tahta/vidalar
Bu projenin toplam maliyeti tamamen langırt masanızın maliyetine bağlıdır (pahalı). Masanın yanı sıra malzemeler maksimum 150 Euro olacaktır.
Adım 2: Elektrik Devresi
Lehimlemeye başlamadan önce, tüm bileşenleri bir araya getirin, önce bir breadboard üzerinde test etmenizi şiddetle tavsiye ederim. Arızalı bileşenleri saatlerce lehimlemeden önce değiştirmek daha kolaydır.
İlk başta 74HC595 kaydırma yazmacı (ilk görüntü) ve transistör dizisi ile 8x8 LED Matrix'i uygulamaya çalıştım, ancak çok sayıda kablo ve çok düşük çıkış nedeniyle MAX7219 Dot Matrix Modülüne geçtim çünkü sadece 5 kablo alır ve doğrudan tarafından çalıştırılır. bir SPI otobüsü.
Sonunda kullandığım devre Fritzing ile çizildi. Lütfen IR LED'lerinin ve Alıcıların ücretsiz GPIO Pinlerinizden herhangi birine bağlanabileceğini unutmayın.
IR Alıcıları ve LED doğrudan karşı karşıya olmalı ve LED'in üst kısmı alıcıya dönük olmalıdır. Çünkü topun hareketiyle kırılabilecek bir direkt ışın simule etmek istiyoruz ki bu durumda alıcının DATA hattında 0'dan 1'e bir durum değişikliği olacaktır.
Adım 3: Sensörlerin Kodlanması
Bu projenin çoğunu Pycharm kullanarak kodladım çünkü uzak bir yorumlayıcı kullanarak Raspberry Pi'nize kolay SSH dağıtımına izin veriyor. Bu programın nasıl çalıştığına ayrıntılı olarak girmeyeceğim, ancak pycharm web sitesinde birçok bilgi bulunabilir.
Şu anda hala proje üzerinde çalışıyorum ama her şey bittiğinde tüm proje github profilimde mevcut olacak
Sensörlerin kodu, Flask sunucumda bir arka plan iş parçacığında çalıştırılan 3 sınıftan oluşur (bu daha sonra açıklanacaktır):
- Hedef Sınıfı (bağlantı) -Bu dosya, doğru SPI cihazı/veri yolu ve pin numarası girilerek çağrılabilecek tüm ayrı bileşenleri başlatır.
- Matrix Sınıfı (bağlantı) -Bu, MAX7219 modülünü çalıştıran ana sınıftır.
- LED ve Alıcı Sınıfı (bağlantı) - Bu, RPi'nin CPU yükünü azaltmak için ayrı İş Parçacıkları kullanarak kızılötesi kırılma ışınını güçlendiren ana sınıftır.
LED ve alıcı 38kHz frekansta çalışır ve alıcılar her zaman düzgün çalışması için %50 yukarı ve %50 aşağı darbe bekler.
Adım 4: Sensörleri Hazırlama ve Yerleştirme
Şimdi IR LED ve alıcıyı hazırlayacağız. Tablonun resminde RPi ve sensörlerin yerleştirilmesi gereken yerleri bulabilirsiniz.
Ama önce kablolamayı hazırlamamız gerekiyor:
- RPi/breadboard konumundan sensör konumuna kadar gereken kablo miktarını ölçtüğünüzden emin olun.
- IR alıcı pimlerini telin bir ucuna lehimleyin (COM/GND/V+)
- Telin diğer ucundaki erkek konektör parçalarını lehimleyin
Şimdi tabloyu hazırlayacağız:
- Nerede delineceğine dair temel bir çizim (resme göre) yapın. Bu kiriş konumu olacağı için 2 deliğin birbirine hizalanması çok önemlidir.
- Delikleri delin
- Bazı LED tutucularınız (bağlantı) varsa, daha sağlam hale getirmek için bunları deliğin içine koyabilirsiniz.
- LED + alıcıyı her iki tarafa takın + bantlayın
- Telleri sarın + çok fazla geçmemeleri için tahtaya bantlayın
- Erkek pimleri önceden sağlanan devreye göre devre tahtasına yerleştirin
Adım 5: Matris Modülünü Hazırlama ve Yerleştirme
Sırada 2 LED matris modülünü bağlayacağız
Not:
Eski bir langırt masası kullandığım için zaten ağızlıklardan dolayı üst kısma doğru çıkan delikler vardı. Bunlara sahip değilseniz, onları oluşturmanız gerekecektir.
Telleri hazırlamak için:
- Breadboard'dan masanın üst kısmına doğru olan teli ölçün
- Bazı dişi konektörleri telin ilk ucuna lehimleyin
- Bazı erkek konektörleri telin diğer ucuna lehimleyin
Matrisin yerleştirilmesi:
- Üstteki delikten matrisi dışarı çıkarın
- Geçmeyi önlemek için telleri ahşabın üzerine bantlayın + bantlayın
- Erkek pimleri daha önce sağlanan devreye göre devre tahtasına yerleştirin
Bir noktada, matris modülü için bir kasa eklemek için küçük bir DIY adımı ekleyeceğim, ancak şimdilik çıplaklar.
Adım 6: IoT Yapmak
Sadece puanları kaydetmek ve görüntülemek istiyorsanız, puanlardan biri 9'a ulaşana kadar dönen ve ardından sıfırlanan küçük bir çalışan python betiği yazarak projeyi bitirebilirsiniz.
Ancak, masanızı internete bağlamak istiyorsanız, sonraki birkaç adım tam size göre olmalıdır.
Sonraki birkaç adımda aşağıdakileri ele alacağız:
- Raspberry Pi'yi Yapılandırma
- Depolama için bir veritabanı oluşturma
- web sitesi oluşturma
- çevrimiçi duruma getirmek
Bu noktada git'e aşina iseniz, dosyalarınızı takip etmek için GitHub/GitLab üzerinde bir depo oluşturmanızı tavsiye ederim. Eğer değilseniz, resimdeki ile aynı yapıda bir klasör oluşturabilirsiniz.
Projenin tamamı yakında GitHub'da hazır olacak. Ancak gerekli tüm dosyaları içeren geçici bir rar dosyası mevcuttur.
7. Adım: Raspberry Pi'yi Bağlama
Daha sonra ahududu pi ortamını kuracağız, bunu yapmak için aşağıdaki adımları uygulamanız gerekiyor:
- Rasberry Pi'nize SSH üzerinden bağlanın (PuTTY kullanabilirsiniz)
- Bir klasör oluşturun (örnek mkdir projesi) ve cd komutunu kullanarak bu klasöre taşıyın
- python3 -m venv --system-site-packages env komutunu kullanarak bu klasörde sanal bir Python ortamı oluşturun
- sanal yorumlayıcıyı source /env/bin/activate komutuyla etkinleştirin
- python -m pip install package-name komutuyla gereksinimleri.txt dosyasından paketleri kurun
- Daha önce sağlanan proje_example.rar dosyasındaki dosyaları proje klasörünüzdeki SSH üzerinden aktarın
Artık tüm projeyi Raspberry Pi'nizde çalıştırabilmelisiniz. Size uzak yorumlayıcınızdan SSH üzerinden hata ayıklamak ve gerekirse değişiklikleri doğrudan yüklemek için kullanmanıza izin veren PyCharm gibi bir Python IDE kullanmanızı tavsiye ederim.
Adım 8: Veritabanını Ayarlama
Şimdi bu modele dayalı çok temel bir veritabanı kurmanız gerekiyor.
Bununla gitmenin en kolay yolu, bazı testler yapabileceğiniz MySQL tezgahında veritabanınızı oluşturmaktır.
İşiniz bittiğinde, veritabanınızın bir dökümünü dışa aktarabilir ve RPi'nize yükleyebilir ve ardından sudo mariadb < pathtofile/file.sql ile çalıştırabilirsiniz.
9. Adım: Web Sitesini Oluşturma
Sırada, project_example.rar dosyasında sağlanan kodu analiz edebilir (ve kullanabilirsiniz).
Ana dosya, bu projenin ekmek ve tereyağı olan Flask.py'dir:
- Web sitesinin arka ucunu yöneten bir Flask-SocketIO uygulamasını çalıştırır
- Veritabanı ve Flask arasında bir bağlantı oluşturur
- Oturum açma doğrulaması ve kullanıcı kaydı sağlar
- Bir oyunun nasıl oynanacağına dair gerekli kodu sağlar, oyun sırasında web sitesini gerçek zamanlı olarak güncellemek için socketio kullanır
- Oyun sonuçlarını veritabanına koyar
Statik ve şablonlar klasörlerinde web sitesinin ön uç kısmını sağlayan HTML/CSS/JS'yi bulabilirsiniz. Bunları kendi zevkinize göre değiştirmekten çekinmeyin.
Adım 10: World Wide Web'e Bağlanma
Web sitemizi web'e bağlamak için nginx ve uwsgi kullanacağız. Proje örneğinde gerekli dosyaları conf klasöründe bulabilirsiniz.
Her şeyden önce, bu dosyalarda aşağıdakileri güncellemeniz gerekir:
- uwsgi-flask.ini'de virtualenv parametresinin yolunu yorumlayıcınıza değiştirmeniz gerekir.
- Project1-flask.service'de, dosyanın [Service] bölümünü kimlik bilgileriniz ve ilişkili dosyalara giden yollarla güncellemeniz gerekir.
- Nginx dosyasında, sunucuyu ve ilişkili soketinize giden konumu/yolu güncellemeniz gerekir.
Ardından, varsayılan nginx web sunucusu dosyasını nginx yapılandırma dosyanızın konumuyla değiştirmeniz gerekir, aşağıda bunu yapmak için linux komutlarına bir örnek verilmiştir.
- me@my-rpi:~/project1 $ sudo cp conf/nginx /etc/nginx/sites-available/project1
- me@my-rpi:~/project1 $ sudo rm /etc/nginx/sites-etkin/varsayılan t
- me@my-rpi:~/project1 $ sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1
- me@my-rpi:~/project1 $ sudo systemctl nginx.service'i yeniden başlat
Son olarak, özel hizmetleri systemd klasörünüze eklemeniz gerekiyor, bu nasıl yapılacağına dair bir örnek:
- me@my-rpi:~/project1 $ sudo cp conf/project1-*.service /etc/systemd/system/
- me@my-rpi:~/project1 $ sudo systemctl arka plan programı yeniden yükle
- me@my-rpi:~/project1 $ sudo systemctl projeyi başlat1-*
- me@my-rpi:~/project1 $ sudo systemctl durum projesi1-*
Web sunucusunun ahududu pi'nizin açılışında başlamasını istiyorsanız, sudo systemctl enable proje1-*.service komutunu kullanmanız gerekir.
Doğru yapılırsa, sistem yeniden başlatıldıktan sonra web siteniz IP adresinizde çalışıyor olmalıdır. Bu yapılandırma dosyalarından birini düzenlemek istiyorsanız, her zaman hizmeti durdurmanız, dosyaları yeniden yüklemeniz ve ardından bir başlatmanın ardından daemon-reload komutunu kullanmanız gerekir, aksi takdirde değişiklikler etkili olmayacaktır.
Adım 11: Bitirme
Bu eğitimin son bölümünü yazarken, bu küçük okul projesi hala devam eden bir çalışmadır.
Bunu 2,5 haftada yapmak için sayısız saatler harcadım. Her şey biraz aceleye getirilmiş olsa da, başardıklarımla gurur duyuyorum. Montaj aşamasında sayısız hata/hata/hatalı sensörle karşılaştım, bu yüzden ilk denemede her şey çalışmıyorsa cesaretiniz kırılmasın.
Yapabileceğiniz en iyi şey internette yardım istemek veya aramaktır, çok daha iyi bilgiye sahip ve size yardım etmeye can atan bir sürü insan var.
Son olarak, Yeni Medya ve İletişim Teknolojisi'nden hocalarıma bana birçok tavsiyede bulundukları ve bu projeyi bitirmemde yardımcı oldukları için teşekkür etmek istiyorum.
Önerilen:
Otomatik Oturma/Kalkma Masası: 14 Adım (Resimli)
Otomatik Oturma/Ayağa Kalma Masası: **LÜTFEN BU EĞİTİM İÇİN OY VERİN!**..İlk şüphelerime rağmen, son üründen çok memnunum!İşte burada, otomatik oturma/kalkma masasını alıyorum
Kokteyl Masası Arcade Dolabı: 8 Adım
Kokteyl Masası Arcade Dolabı: Kendim için güzel bir şey yapmaya karar verdim ve sonunda bu projeyi bitirmek için tatil hafta sonumu kullanmaya karar verdim
WebFoos - Akıllı Langırt Masası: 6 Adım
WebFoos - Akıllı Langırt Masası: Howest'teki ilk yılımda okul projem için akıllı bir Langırt masası yapmaya karar verdim. Tablo golleri kaydeder ve oynanan maçları, maç istatistiklerini ve kullanıcı/takım istatistiklerini çevrimiçi bir web sitesine kaydeder
Arduino Servo Langırt: 5 Adım
Arduino Servo Langırt: David Joy ve Andrew Gothard tarafından
Otonom Langırt Masası: 5 Adım (Resimlerle)
Otonom Langırt Masası: Ana proje hedefi, bir insan oyuncunun robotik bir rakiple karşılaştığı Otonom Langırt Masası (AFT) için çalışan bir prototipi tamamlamaktı. Oyunun insan açısından bakıldığında, langırt masası normal bir masaya çok benzer. Oyuncu