İçindekiler:
Video: Kendin Yap İç Mekan Bisikleti Akıllı Eğitmeni: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
Tanıtım
Bu proje, direnç ayarları için basit bir vida ve keçe pedleri kullanan bir Schwinn IC Elite iç mekan bisikletinde basit bir değişiklik olarak başladı. Çözmek istediğim sorun, vida aralığının çok büyük olmasıydı, bu nedenle pedal çevirememekten tekerleğin tamamen serbest dönmesine kadar olan aralık, direnç düğmesinde sadece birkaç dereceydi. İlk başta vidayı M6 olarak değiştirdim, ancak daha sonra bir topuz yapmam gerekecekti, öyleyse neden direnci değiştirmek için NEMA 17 step motorunun üzerinde bir sol kullanmıyorsunuz? Zaten bazı elektronikler varsa, akıllı bir eğitmen yapmak için neden bir bilgisayara bir krank güç ölçer ve bir bluetooth bağlantısı eklemiyorsunuz?
Bu, beklenenden daha zor oldu çünkü arduino ve bluetooth ile bir güç ölçerin nasıl taklit edileceğine dair hiçbir örnek yoktu. BLE GATT spesifikasyonlarını programlamak ve yorumlamak için yaklaşık 20 saat harcadım. Umarım bir örnek vererek birisinin "Hizmet Verileri AD Türü Alanı" nın tam olarak ne anlama geldiğini anlamaya çalışırken bu kadar zaman kaybetmemesine yardımcı olabilirim…
Yazılım
Tüm proje GitHub'da:
github.com/kswiorek/ble-ftms
Kodumu kopyalayıp yapıştırmaktan daha ciddi bir şey yapmayı planlıyorsanız, Visual Studio'yu bir VisualGDB eklentisiyle kullanmanızı şiddetle tavsiye ederim.
Programla ilgili sorularınız varsa lütfen sorun, minimalist yorumlarımın pek yardımcı olmayabileceğini biliyorum.
Kredi
Bir güç ölçerin nasıl yapılacağına dair kılavuzu için stoppi71'e teşekkürler. Krankı onun tasarımına göre yaptım.
Gereçler:
Bu projenin malzemeleri büyük ölçüde hangi bisikleti modifiye ettiğinize bağlı, ancak bazı evrensel parçalar var.
Krank:
- ESP32 Modülü
- HX711 Ağırlık sensörü ADC
- Gerinim ölçerler
- MPU - jiroskop
- Küçük bir Li-Po pil (yaklaşık 750mAh)
- Isıyla daralan kol
- A4988 Step sürücü
- 5V regülatör
- Bir arduino varil jakı
- 12V arduino güç kaynağı
Konsol:
- NEMA 17 step (oldukça güçlü olması gerekir, >0,4Nm)
- M6 çubuk
- 12864 lcd
- WeMos LOLIN32
- inceliğini anahtarlar
Teçhizat
Bunu yapmak için muhtemelen sadece bir 3D yazıcı kullanmaktan kurtulabilirsiniz, ancak kasayı lazerle keserek çok zaman kazanabilir ve ayrıca PCB'ler yapabilirsiniz. DXF ve gerber dosyaları GitHub'dadır, böylece bunları yerel olarak sipariş edebilirsiniz. Dişli çubuktan motora kuplör bir torna tezgahında çalıştırıldı ve parçanın balataları çekmek için oldukça güçlü olması gerektiğinden tek sorun bu olabilir, ancak bu bisiklette çok fazla yer yok.
İlk bisikleti yaptığımdan beri, kranktaki sensörler için yuvalar açmamı sağlayan bir freze makinesi aldım. Onları yapıştırmayı biraz daha kolaylaştırır ve ayrıca kranka bir şey çarptığında onları korur. (Bu sensörleri birkaç kez düşürdüm, bu yüzden güvende olmak istedim.)
Adım 1: Krank:
Bu öğreticiyi takip etmek en iyisidir:
Temel olarak sensörleri kranka dört yerde yapıştırmanız ve bunları kartın kenarlarına bağlamanız gerekir.
Uygun bağlantılar zaten orada, bu yüzden kablo çiftlerini doğrudan tahtadaki bu sekiz pedlere lehimlemeniz gerekiyor.
Sensörlere bağlanmak için mümkün olan en ince kabloyu kullanın - pedlerin kaldırılması çok kolaydır. Önce sensörleri yapıştırmanız ve lehim için yeterince dışarıda bırakmanız, ardından gerisini epoksi ile kaplamanız gerekir. Yapıştırmadan önce lehimlemeye çalışırsanız kıvrılıp kırılırlar.
PCB'yi monte etmek için:
- Altın pimleri alttan (izli taraf) dibe yakın dikey olanlar hariç tüm deliklere yerleştirin.
- Üç kartı (üstte ESP32, ardından MPU, altta HX711) altın pimler her iki delikten geçecek şekilde yerleştirin.
- Başlıkları üstteki panolara lehimleyin
- Altınları alttan kesin. (Montajdan önce onları kesmeyi deneyin, böylece "altın iğnelerinizin" içeride çelik olmadığını bilirsiniz - bu onları kesmeyi neredeyse imkansız hale getirir ve eğelemeniz veya öğütmeniz gerekir)
- kalan altın pimleri tahtanın altına lehimleyin.
- Krank için ürün yazılımını yükleyin
Son adım, tüm krank ısıyla daralan makaron ile paketlemektir.
Pano yapmak için bu yöntem ideal değildir, çünkü panolar başka şeyleri sığdırabileceğiniz çok yer kaplar. En iyisi, tüm bileşenleri doğrudan tahtaya lehimlemek olurdu, ancak bu küçük SMD'leri kendim lehimleme becerisine sahip değilim. Montajlı olarak sipariş etmem gerekecek ve muhtemelen bazı hatalar yapıp üç kez sipariş edip gelmeden bir yıl bekleyecektim.
Biri kartı tasarlayabilseydi, biraz pil koruma devresi ve krank hareket etmeye başlarsa ESP'yi açacak bir sensör olsaydı harika olurdu.
ÖNEMLİ
HX711 sensörü varsayılan olarak 10Hz'e ayarlanmıştır - güç ölçümü için çok yavaştır. Pin 15'i karttan kaldırmanız ve pin 16'ya bağlamanız gerekir. Bu, pini YÜKSEK çalıştırır ve 80Hz modunu etkinleştirir. Bu 80Hz, bu arada, tüm arduino döngüsünün hızını ayarlar.
kullanım
ESP32, bağlı hiçbir bluetooth cihazı olmadan 30 saniyeden sonra uyku moduna geçecek şekilde programlanmıştır. Tekrar açmak için sıfırlama düğmesine basmanız gerekir. Sensörler ayrıca uyku modunda DÜŞÜK olan dijital bir pimden güç alır. Sensörleri kitaplıklardan örnek kodla test etmek istiyorsanız, pimi YÜKSEK sürmeniz ve sensörler açılmadan önce biraz beklemeniz gerekir.
Montajdan sonra sensörlerin kuvvet uygulanmadan ve ardından ağırlık uygulanarak değer okunarak kalibre edilmesi gerekir (pedada asılı 12kg veya 16kg kettlebell kullandım). Bu değerlerin powerCrank koduna girilmesi gerekir.
Her sürüşten önce krankın darasını almak en iyisidir - birisi pedal çevirirken kendi darasını alamamalıdır, ancak üzgün olmaktan daha güvenlidir ve her çalıştırmada yalnızca bir kez dara almak mümkündür. Bazı garip güç seviyeleri fark ederseniz, bu işlemi tekrarlamanız gerekir:
- Işık yanıp sönmeye başlayana kadar krankı düz bir şekilde aşağı indirin.
- Birkaç saniye sonra ışık yanmaya devam edecek - o zaman dokunmayın
- Işık kapandığında, algılanan mevcut kuvveti yeni bir 0 olarak ayarlar.
Konsol olmadan sadece krankı kullanmak istiyorsanız, kod burada github'da. Diğer her şey aynı şekilde çalışır.
2. Adım: Konsol
Kasa 3mm akrilikten kesilmiş, düğmeler 3D baskılı ve LCD için 5mm akrilikten kesilmiş ara parçalar var. Sıcak tutkalla yapıştırılmıştır (akriliğe oldukça iyi yapışır) ve PCB'yi LCD'ye tutmak için 3D baskılı bir "braket" vardır. LCD pinleri alt taraftan lehimlenmiştir, bu nedenle ESP'yi etkilemez.
ESP ters lehimlenmiştir, bu nedenle USB bağlantı noktası kasaya sığar
Ayrı düğme PCB'si sıcak tutkalla yapıştırılmıştır, bu nedenle düğmeler deliklerine takılır, ancak yine de anahtarlara basarlar. Düğmeler, JST PH 2.0 konektörleri ile karta bağlanmıştır ve pin sırasını şematikten anlamak kolaydır.
Step sürücüsünü doğru yönde monte etmek çok önemlidir (ESP'nin yanındaki potansiyometre)
İlk sürümde kimse kullanmadığı için SD kartın tamamı devre dışı bırakıldı. Kodun, sürücü ağırlığı ve zorluk ayarı gibi bazı UI ayarlarıyla güncellenmesi gerekiyor.
Konsol, lazer kesim "kollar" ve fermuarlar kullanılarak monte edilir. Küçük dişler gidonlara girer ve konsolu tutar.
Adım 3: Motor
Motor, 3D baskılı bir braket ile ayar düğmesinin yerinde kendini tutar. Şaftına bir kuplör monte edilmiştir - bir tarafta şaftı tutmak için ayar vidalı 5 mm'lik bir delik, diğer tarafında ise kilitlemek için ayar vidalı bir M6 diş vardır. İsterseniz, muhtemelen 10 mm'lik yuvarlak bir stoktan bir matkap presinde yapabilirsiniz. Motor çok sıkı monte edilmediğinden aşırı hassas olması gerekmez.
Kuplöre bir parça M6 dişli çubuk vidalanır ve pirinç bir M6 somunu çeker. Ben işledim, ancak bir pirinç parçasından eğe ile kolayca yapılabilir. Normal bir somuna bazı uçları bile kaynaklayabilirsiniz, böylece dönmez. 3D baskılı bir somun da bir çözüm olabilir.
Diş, stok vidasından daha ince olmalıdır. Perdesi yaklaşık 1,3 mm'dir ve M6 için 0,8 mm'dir. Motor, stok vidasını açmak için yeterli torka sahip değil.
Motor daha yüksek ayarlarda vidayı zar zor çevirebildiği için somunun iyi yağlanması gerekir.
4. Adım: Yapılandırma
Arduino IDE'den ESP32'ye kod yüklemek için bu öğreticiyi izlemeniz gerekir:
Yönetim kurulu "WeMos LOLIN32", ancak "Dev modülü" de çalışıyor
Visual Studio'yu kullanmanızı öneririm, ancak çoğu zaman bozulabilir.
İlk kullanımdan önce
Krank "Krank" adımına göre ayarlanmalıdır
"nRF Connect" uygulamasını kullanarak krank ESP32'nin MAC adresini kontrol etmeniz ve BLE.h dosyasına ayarlamanız gerekir.
IndoorBike.ino'nun 19. satırında, direnci tamamen gevşekten maksimuma ayarlamak için vidanın kaç kez döndürülmesi gerektiğini ayarlamanız gerekir. ("Maksimum" bilerek özneldir, bu ayarla zorluğu ayarlarsınız.)
Akıllı antrenör, bunları doğru şekilde ayarlamak için "sanal dişlilere" sahiptir, 28 ve 29. satırlarda kalibre etmeniz gerekir. Belirli bir direnç ayarında sabit bir kadansla pedal çevirmeniz, ardından gücü okumanız ve dosyaya ayarlamanız gerekir. Bunu başka bir ayar ile tekrarlayın.
En soldaki düğme, ERG modundan (mutlak direnç) simülasyon moduna (sanal vitesler) geçer. Bilgisayar bağlantısı olmadan simülasyon modu, simülasyon verisi olmadığı için hiçbir şey yapmaz.
Satır 36. sanal vitesleri ayarlar - sayı ve oranlar. Ön dişlideki diş sayısını arka dişlideki diş sayısına bölerek hesaplarsınız.
12. satıra binicinin ve bisikletin ağırlığını koyarsınız ([Newton] cinsinden kütle çarpı yerçekimi ivmesi!)
Bunun tüm fizik kısmı muhtemelen çok karmaşık ve tam olarak ne yaptığını hatırlamıyorum bile, ancak bisikletçiyi yokuş yukarı çekmek için gerekli torku veya bunun gibi bir şeyi hesaplıyorum (bu yüzden kalibrasyon).
Bu parametreler oldukça özneldir, doğru çalışması için birkaç sürüşten sonra bunları ayarlamanız gerekir.
Hata ayıklama COM bağlantı noktası, bluetooth tarafından alınan doğrudan ikili verileri tırnak işaretleri (' ') ve simülasyon verileriyle gönderir.
yapılandırıcı
Sözde gerçekçi fiziğin konfigürasyonunun gerçekçi hissettirmek için büyük bir güçlük olduğu ortaya çıktığından, kullanıcıların tepenin derecesinden mutlak direnç seviyesine dönüşen işlevi grafiksel olarak tanımlamasına izin vermesi gereken bir GUI yapılandırıcısı yarattım. Henüz tamamen bitmedi ve test etme fırsatım olmadı, ancak önümüzdeki ay başka bir bisikleti dönüştüreceğim, o yüzden cilalayacağım.
"Dişliler" sekmesinde, kaydırıcıları hareket ettirerek her bir vitesin oranını ayarlayabilirsiniz. Ardından, koddaki tanımlanmış dişlileri değiştirmek için kod bitini kopyalamanız gerekir.
"Not" sekmesinde, notu alan (dikey eksen) ve mutlak direnç adımlarını (yatay eksen) veren doğrusal bir fonksiyonun (evet, matematikte en nefret edilen konunun aslında yararlı olduğu ortaya çıkıyor) bir grafiği verilir. Merak edenler için biraz sonra matematiğe gireceğim.
Kullanıcı, üzerinde bulunan iki noktayı kullanarak bu fonksiyonu tanımlayabilir. Sağda mevcut vitesi değiştirmek için bir yer var. Seçilen vites, tahmin edebileceğiniz gibi, eğimin dirence dönüşme şeklini değiştirir - düşük viteslerde yokuş yukarı pedal çevirmek daha kolaydır. Kaydırıcıyı hareket ettirmek, seçilen vitesin işlevi nasıl değiştirdiğini etkileyen 2. katsayıyı değiştirir. Nasıl davrandığını görmek için onunla bir süre oynamak en kolayı. Sizin için en uygun olanı bulmak için birkaç farklı ayar denemeniz de gerekebilir.
Python 3'te yazılmıştır ve varsayılan kitaplıklarla çalışmalıdır. Bunu kullanmak için, "konfigüratörü kullanmak için bu satırların yorumunu kaldır"dan hemen sonra satırları kaldırmanız gerekir. Dediğim gibi test edilmedi, bu yüzden bazı hatalar olabilir, ancak herhangi bir şey olursa lütfen yorum yazın veya bir konu açın, düzeltebilirim.
Matematik (ve fizik)
Kontrolörün yokuş yukarı gidiyormuşsunuz gibi hissettirmesinin tek yolu direnç vidasını çevirmektir. Dereceyi dönüş sayısına dönüştürmemiz gerekiyor. Kurulumu kolaylaştırmak için, tamamen gevşekten krankı çevirememeye kadar tüm aralık, ERG modunda kullanılanın aynısı olan 40 adıma bölünmüştür, ancak bu sefer tamsayılar yerine gerçek sayıları kullanır. Bu, basit bir harita işleviyle yapılır - bunu kodda arayabilirsiniz. Şimdi bir adım daha yükseldik - vidanın dönüşleriyle uğraşmak yerine hayali adımlarla uğraşıyoruz.
Şimdi, bisikletle yokuş yukarı gittiğinizde (sabit bir hız varsayılarak) gerçekte nasıl çalışır? Belli ki sizi yukarı iten bir güç olmalı, yoksa aşağı yuvarlanırsınız. Bu kuvvet, birinci hareket yasasının bize söylediği gibi, düzgün hareket edebilmeniz için, büyüklük olarak eşit, ancak sizi aşağı çeken kuvvete zıt yönde olmalıdır. Tekerlek ve yer arasındaki sürtünmeden kaynaklanır ve bu kuvvetlerin diyagramını çizerseniz, bisikletin ağırlığına ve binicinin eğime eşit olması gerekir:
F=Fg*G
Şimdi, tekerleği bu kuvveti uygulayan nedir? Dişliler ve tekerleklerle uğraşırken, kuvvet çarpı yarıçap olan tork cinsinden düşünmek daha kolaydır:
t=F*R
İlgili dişliler olduğu için, zinciri çeken ve tekerleği döndüren krank üzerine bir tork verirsiniz. Tekerleği döndürmek için gereken tork, dişli oranıyla çarpılır:
tp=tw*gr
ve tork formülünden geri dönersek, pedalı çevirmek için gereken kuvveti elde ederiz.
Fp=tp/r
Bu, kranktaki güç ölçeri kullanarak ölçebileceğimiz bir şey. Dinamik sürtünme kuvvetle doğrusal olarak ilişkili olduğundan ve bu özel bisiklet bu kuvveti vermek için yaylar kullandığından, vidanın hareketine doğrusaldır.
Güç, kuvvet çarpı hızdır (aynı vektör yönünü varsayarsak)
P=F*V
ve pedalın doğrusal hızı açısal hız ile ilişkilidir:
V=ω*r
ve böylece belirli bir direnç seviyesinde pedalları çevirmek için gereken kuvveti hesaplayabiliriz. Her şey doğrusal olarak ilişkili olduğundan, bunu yapmak için oranları kullanabiliriz.
Bu, yazılımın kalibrasyon sırasında hesaplaması gereken şeydi ve bize karmaşık bir bileşik elde etmek için dolambaçlı bir yol kullanıyordu, ancak derece ile direnç arasında doğrusal bir fonksiyon vardı. Her şeyi kağıda yazdım, son denklemi hesapladım ve tüm sabitler üç katsayı oldu.
Bu teknik olarak bir düzlemi temsil eden bir 3B fonksiyondur (sanırım) argüman olarak derece ve dişli oranını alır ve bu üç katsayı bir düzlemi tanımlamak için gerekli olanlarla ilgilidir, ancak dişliler ayrı sayılar olduğu için daha kolaydı. projeksiyonlar ve benzeri şeylerle uğraşmak yerine onu bir parametre haline getirmek. 1. ve 3. katsayılar tek bir çizgi ile tanımlanabilir ve (-1)* 2. katsayı, vites değiştirirken çizginin "döndüğü" noktanın X koordinatıdır.
Bu görselleştirmede argümanlar dikey çizgiyle ve değerler yatay çizgiyle temsil ediliyor ve bunun can sıkıcı olabileceğini biliyorum, ama benim için daha sezgiseldi ve GUI'ye daha iyi uyuyordu. Muhtemelen ekonomistlerin grafiklerini bu şekilde çizmelerinin nedeni budur.
Adım 5: Bitirin
Artık yeni antrenörünüzde kullanmak için bazı uygulamalara ihtiyacınız var (bu size yaklaşık 900 $ kazandırdı:)). İşte bunlardan bazıları hakkındaki görüşlerim.
- RGT Cycling - bence en iyisi - tamamen ücretsiz bir seçeneğe sahip, ancak birkaç pisti var. En iyi bağlantı kısmı ile ilgilenir, çünkü telefonunuz bluetooth ile bağlanır ve bir PC parçayı gösterir. Bir AR bisikletçisi ile gerçekçi video kullanır
- Rouvy - bir çok parça, sadece ücretli abonelik, nedense PC uygulaması bununla çalışmıyor, telefonunuzu kullanmanız gerekiyor. Dizüstü bilgisayarınız bluetooth ve WiFi için aynı kartı kullandığında sorunlar olabilir, genellikle gecikir ve yüklemek istemez
- Zwift - yalnızca ücretli animasyonlu bir oyun, eğitmenle oldukça iyi çalışır, ancak kullanıcı arayüzü oldukça ilkeldir - başlatıcı, menüyü görüntülemek için Internet Explorer'ı kullanır.
Yapıyı beğendiyseniz (veya beğenmediyseniz), lütfen yorumlarda bana bildirin ve herhangi bir sorunuz varsa buradan sorabilir veya github'a bir sorun gönderebilirsiniz. Oldukça karmaşık olduğu için her şeyi memnuniyetle açıklayacağım.
Önerilen:
Kendin Yap -- Arduino Uno Kullanarak Akıllı Telefonla Kontrol Edilebilen Örümcek Robot Nasıl Yapılır: 6 Adım
Kendin Yap || Arduino Uno Kullanarak Akıllı Telefonla Kontrol Edilebilen Örümcek Robot Nasıl Yapılır: Örümcek robotu yaparken robotik hakkında pek çok şey öğrenilebilir. Robot yapmak gibi eğlenceli olduğu kadar zordur. Bu videomuzda sizlere akıllı telefonumuzu kullanarak çalıştırabileceğimiz Örümcek robotu (Androi
C.Q: Kendin Yap Akıllı Ayna: 5 Adım
C.Q: Kendin Yap Akıllı Ayna: Bizler WBASD STEM Academy'de ikinci sınıf öğrencileri olan Katrina Concepcion ve Adil Qaiser'iz. Bu senenin en iyi ödülü için ortaklaşa yapacağımız ve yapacağımız proje buydu. Bu projeyi yapmaya karar verdiğimizde aklımızda 'en çok e
Ahududu Pi Üzerine Kurulu Otomatik Bahçe Sistemi Dış Mekan veya İç Mekan - MudPi: 16 Adım (Resimli)
Dış Mekan veya İç Mekanlar için Raspberry Pi Üzerine Kurulu Otomatik Bahçe Sistemi - MudPi: Bahçecilik yapmayı seviyor ama bakımını yapmaya zaman bulamıyor musunuz? Belki biraz susamış görünen veya hidroponiğinizi otomatikleştirmenin bir yolunu arayan bazı ev bitkileriniz var mı? Bu projede bu sorunları çözeceğiz ve temellerini öğreneceğiz
WiFi Uyarıları ile Mini Kendin Yap Hidroponik Sistemler ve Kendin Yap Hidroponik Bitki Bahçesi İnşa Et: 18 Adım
WiFi Uyarıları ile bir Mini Kendin Yap Hidroponik Sistemler ve Kendin Yap Hidroponik Bitki Bahçesi İnşa Et: Bu derste size bir #Kendin Yap #hidroponik sistemini nasıl kuracağınızı göstereceğiz. Bu DIY hidroponik sistem, 2 dakika açık ve 4 dakika kapalı olan özel bir hidroponik sulama döngüsünde sulayacaktır. Ayrıca rezervuar su seviyesini de izleyecektir. Bu sistem
İç Mekan / Dış Mekan Papyon Anteni: 5 Adım
İç Mekan / Dış Mekan Fiyonk Anteni: Standart papyon anteni her zaman beni büyüledi ve iyi özelliklere sahip olduğunu gördüm. bu yüzden bir süre önce bir RadioShack'teyken ve her biri 5 dolara rafta 2 tanesini gördüğümde, kendime engel olamadım ve koleksiyonuma 2 ekledim ve 3