» Temos » Pasidaryk pats idėjų »Motorolerio spidometras

Motorolerio spidometras

Aš atkreipiu jūsų dėmesį į savo kitą amataibūtent motorolerio spidometras.
Fonas yra toks: norėdamas įveikti fizinį neveiklumą, įsigijo „Rollersurf“ lentą. Kadangi ant lentos yra tik du ratai, važinėjant ja reikia jausti pusiausvyrą, ant jos galima „stovėti“ tik judant. Įsitikinęs, kad po nepertraukiamo judėjimo maždaug 700 metrų atstumu ratai tarsi įstrigo smėlyje ir judėti buvo labai sunku, kreipiausi į internetą ir specialistus. Tapo aišku, kad dėl per didelio mano svorio svorio rato medžiagos minkštumo, rato medžiaga yra labai karšta ir suminkštėjusi, padidėja kontaktas su keliu, o padidėjęs rato klampumas apsunkina kontrolę ir sukimo momentą. Pakeitus ratus kietesniu ritiniu, lentos, kaip ir lengvas valdymas, labai padidėjo. Tame pačiame ilgame kelyje pažįstamas stabdymas neįvyko, greitis toliau didėjo, o tai lėmė nemalonų kritimą.
Idėja išmatuoti greitį ir apriboti save pagreičiu kilo greičiausiai po kritimo :) Buvo 2014 metų prototipas, kur buvo sukurtas toks įrenginys, tačiau kitokio tipo lentai, kur rato sukimosi plokštuma daug nejuda plokštės atžvilgiu ir elektronika gali būti dedamas ant pačios lentos, sujungiant ją su jutikliu ant rato lanksčia viela.
Mano atveju, tiek jutiklis, tiek elektronika neturėtų būti dedami ant rato laikiklio, nes pats laikiklis (ratukas) sukasi aplink savo ašį apskritimo atžvilgiu plokštės plokštumos atžvilgiu.
„Roller Surf“ išvaizda


Įgyvendinimas. Transmisijos specifikaciją pasirinko „BlueTooth“ dėl šios technologijos prieinamumo ir jos buvimo „Samsung SM-V700“ išmaniajame laikrodyje. „BlueTooth“ modulis buvo pasirinktas valdikliu HC-05 Arduino „Mini Pro“, tačiau vėliau pakeistu paprastu valdikliu „AtMega168A“, buvo pasirinkta 500 mAh talpos Li-Pol baterija, kuri atitiktų ratuko matmenis ir numatomą energijos suvartojimą. Kaip sukimosi jutiklis, priešingai nei prototipas, „Hall Sensor SS49E“ buvo pasirinktas labiau stabilus. Atitinkamai eskizas buvo šiek tiek modernizuotas. Rato stebulėje įtaisyto magneto praėjimas analizuojamas dviem taškais: pirmasis įjungimas - magnetas patenka į jautrumo zoną - „būrys“, o antrasis įjungimas - magnetas išeina iš jutiklio jautrumo zonos - „nusileidimas“.Valdiklis suskaičiuoja šiuos įvykius per nustatytą laiko tarpą - 1 sekundę ir perduoda gautą numerį ryšio kanalu į „Android“ įrenginį, tuo pačiu analizuodamas gaunamus signalus. Modulio gavimo, rodymo, tvarkymo programa buvo sukurta remiantis prototipu „Android Studio“ aplinkoje. Tai numato kai kuriuos patobulinimus, susijusius su padidėjusiu atsparumu triukšmui. Kaip ir prototipas, jis apskaičiuoja greitį ir atstumą. Kaip atrodo, išsaugoma naudinga „priekinio žibinto“ įjungimo / išjungimo funkcija - šviesos diodas, nukreiptas į priekį.
Blokas be dangtelio

Matomas viršuje kairėje: raudona įkrovimo atbulinės eigos apsaugos lemputė, įkrovimo-darbo jungiklis, akumuliatorius; apačioje: žalias VT modulis, „AtMega168A“ mikrovaldiklis su įpjaunamomis gnybtais, yra užklijuotas ant nugaros su viršutine korpuso dalimi.
Bloko dangtis su magnetiniu jutikliu

Sumontuotas su ratuku, modulis atrodo taip:
Užblokuokite ratuką

Nuotraukoje galite pamatyti maitinimo jungiklį, įkroviklio prijungimo kontaktus, kitoje įrenginio pusėje aukščiau esančiame kampe - LED - „priekinis žibintas“.
Prototipo programa buvo papildyta galimybe skleisti garso ir vibracijos signalus įvairiuose renginiuose (įjungiant / išjungiant priekinį žibintą, aliarmo signalą, kai viršijama didžiausia leistina greičio riba).
Išbandymas ant stalo - nuotraukoje žemiau, dar neišbandytas kelyje, laukiu vasaros :)
Testavimas ant stalo

„Android Studio“ projekto apimtis yra didžiulė, aš jį kažkur paskelbsiu su nuoroda, jei yra susidomėjimo, atsinešu eskizą su komentarais.
Esant susidomėjimui, esu pasirengęs pasidalyti idėjomis, patirtimi.
Klausimas \ tema automatiškai skelbiama socialiniame tinkle. svetainių tinklas - stebėkite atsakymus ten:

Tinka temai

Susijusios temos

Pridėti komentarą

    • šypsotisšypsosixaxagerainežiniaYahoonea
      viršininkassubraižytikvailystaiptaip-taipagresyvusslapta
      atsiprašaušoktišokis2šokis3atleiskpadėtigėrimai
      sustotidraugaigeraigerašvilpukassupyktiliežuvis
      rūkytiplojimaiklastingaspareikštiniokojantisdon-t_mentionatsisiųsti
      šilumanedrąsusjuoktis1mdasusitikimasmoskingneigiamas
      not_ipopkornasnubaustiskaitytigąsdintigąsdinapaieška
      gundytiačiūtaito_clueumnikūmussusitarti
      blogaibičiųjuoda akisblum3skaistalaipasigirtinuobodulys
      cenzūruotamalonumasslapta2grasintipergalęju„sun_bespectacled“
      šoktipagarbalolišlenktaslaukiamekrutojusya_za
      ya_dobryipagalbininkasne_huliganne_othodifludisuždraustiarti
1 komentaras
Autorius
„ATMega168A“ programinės įrangos eskizas:
/*
* Mega168 !!!
*/
#include „timer-api.h“

int Polarity = -1; // įvesties signalo impulsų poliškumas (mano atveju neigiamas
int Slenkstis = 500; // nuskaitymo impulso slenksčio slenkstis 1/2 Vcc = 512
int CountTurn = 0; // saugokite ataskaitinio laikotarpio apsisukimų skaičių
int LED = 13; // Šviesos diodas prijungtas prie PB5 kaiščio
int InputSignal = A5; // „Hall“ jutiklio įvestis
int TurnNumber = 0; // sukauptas apsisukimų skaičius
int DeltaT = 28; // vėlavimas iš priekio į impulso pabaigos nustatymą stabilumui
bool Tick = klaidinga; // pradinė vertė, dar nepažymėta

negaliojanti sąranka ()
{
„Serial.begin“ (9600); // derinimo
timer_init_ISR_2Hz (TIMER_DEFAULT); // gaukite 1 sekundės vėlavimą !!!
pinMode (LED, OUTPUT); // signalo išėjimas į foninį apšvietimą (priekinis žibintas)
„pinMode“ („InputSignal“, „INPUT“); // „Hall“ jutiklio įvestis
}

void loop () // čia atliekame signalų iš jutiklio ir priekinių žibintų valdymą
{
if (Tick) // leidimas vykdyti if bloką nustatytu laiko intervalu
// siųskite apsisukimų skaičių
{
Serial.println (String (CountTurn) + ";"); // derinimo funkcijai
Pažymėkite = false; // paruoškite pėdsaką. laiko intervalas
„CountTurn“ = 0; // nulis apsisukimų skaičiaus perkėlus į išmanųjį telefoną
}

dar // jei erkė dar neatvyko, kaupiame apsisukimų skaičių, įjungiame / išjungiame priekinį žibintą
{
// apsisukimų kaupimasis
if (analogRead (InputSignal) {
atidėjimas (DeltaT); // dar nieko neskaitykite
if (analogRead (InputSignal)> Slenkstis) // galinis kraštas atėjo
{
CountTurn ++; // sukaupkite apsisukimų skaičių atvykus į galinį kraštą
}
}

// priekinių žibintų valdymas
if (Serial.avable ()> 0) // perskaitykite ženklą iš BTSerial
{
char komanda = Serial.read ();
jungiklis (komanda)
{
„0“ atvejis: „digitalWrite“ (LED, LOW); pertrauka; // įjunkite priekinį žibintą
„1“ atvejis: „digitalWrite“ (LED, HIGH); pertrauka; // Išjunkite priekinį žibintą
}
}
}
}

void timer_handle_interrupts (vidinis laikmatis)
{
Pažymėti = tiesa;
}

Mes patariame perskaityti:

Perduokite jį išmaniajam telefonui ...