Orodha ya maudhui:
- Hatua ya 1: Vifaa:
- Hatua ya 2: Mchoro wa Vitalu vya Mfumo:
- Hatua ya 3: Uendeshaji wa Mfumo:
- Hatua ya 4: Vipengele vya Mitambo
- Hatua ya 5: Usomaji wa Voltage:
- Hatua ya 6: Programu ya Arduino:
- Hatua ya 7: Programu ya Raspberry Pi 3:
- Hatua ya 8: Mpango wa Umeme:
- Hatua ya 9: Matokeo:
Video: Kuzalisha Voltage Na Baiskeli ya Ergometer: Hatua 9 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:53
Ufafanuzi wa mradi huo ulijumuisha mkutano wa "mchezo" kwa lengo la kukanyaga kwenye baiskeli ya ergometer iliyounganishwa na jenereta na mnara wa taa ambazo zinaamilishwa kasi ya injini inapoongezeka - ambayo hufanyika kwa baiskeli. Mfumo huo ulitokana na kusoma - kupitia bandari ya Analog ya Mega ya Arduino - umeme wa papo hapo uliozalishwa, kisha kupeleka data hii kwa Raspberry Pi 3 kupitia mawasiliano ya serial RX-TX na uanzishaji wa taa baadaye kupitia relay.
Hatua ya 1: Vifaa:
- 1 Raspberry Pi 3;
- 1 Arduino Mega 2560;
- 1 Shield Relay na 10 Relays 12 V;
- Taa 10 za incandescent 127 V;
- Baiskeli 1 ya Ergometer;
- Mashine 1 ya Umeme (Jenereta) 12 V;
- Resistors (1x1kΩ, 2x10kΩ);
- 1 Electrolytic Capacitor 10 µF;
- 1 Zener Diode 5.3 V;
- Cable 1.5 mm (nyekundu, nyeusi, kahawia);
- Mnara 1 wa MDF na msaada wa taa 10.
Hatua ya 2: Mchoro wa Vitalu vya Mfumo:
Hatua ya 3: Uendeshaji wa Mfumo:
Mfumo huo unategemea mabadiliko ya nishati ya kinetiki inayotengenezwa wakati wa baiskeli baiskeli katika nishati ya umeme inayohusika na uanzishaji wa relays ambazo zitawasha taa.
Voltage inayotokana na jenereta inasomwa na pini ya Analog ya Arduino na hutumwa kupitia RX-TX kwa Raspberry Pi. Uanzishaji wa relays ni sawa na voltage inayozalishwa - juu ya voltage, upelekaji zaidi utasababishwa na taa zaidi zitawaka.
Hatua ya 4: Vipengele vya Mitambo
Ili kuibadilisha jenereta ya DC kwa baiskeli, mfumo wa ukanda ulibidi ubadilishwe na mfumo uliotumika kwenye baiskeli za kawaida (zenye taji, mnyororo na pinion). Sahani ya chuma ilikuwa svetsade kwenye fremu ya baiskeli ili injini iweze kuokolewa na vis. Baada ya hapo, pinion ilikuwa svetsade kwa shimoni la jenereta ili mnyororo uweze kuwekwa, ukiunganisha mfumo wa kanyagio kwa jenereta.
Hatua ya 5: Usomaji wa Voltage:
Kusoma voltage ya jenereta ukitumia Arduino ni muhimu kuunganisha pole chanya ya mashine ya umeme kwa pini ya A0 ya kidhibiti na pole hasi kwa GND - ili kuepuka kuwa kiwango cha juu cha jenereta ni kubwa kuliko 5 V ya Pini za Arduino, kichungi cha voltage kinachotumia capacitor ya 10 µF, kontena la 1 kΩ na diode ya Zener ya 5.3 V ilijengwa na kushikamana kati ya mtawala na jenereta. Firmware iliyobeba Arduino ni rahisi sana na inajumuisha kusoma tu bandari ya analog, kuzidisha thamani iliyosomwa na 0.0048828125 ya kawaida (5/1024, hiyo ni voltage ya GPIO ya Arduino iliyogawanywa na idadi ya bits ya bandari yake ya analog) na kutuma kutofautiana kwa Serial - nambari itapatikana katika kifungu hicho.
Utaratibu wa kuwezesha mawasiliano ya RX-TX katika Raspberry Pi ni ngumu zaidi, na lazima ufuate utaratibu ulioelezewa kwenye kiunga. Kwa kifupi, unahitaji kuhariri faili inayoitwa "inittab" - iliyoko "/ nk / inittab" -, toa maoni kwenye mstari "T0: 23: repawn: / sbin / getty -L ttyAMA0 115200 vt100" (ikiwa faili sio iliyoanzishwa katika OS ya Raspberry, lazima uingize amri: "sudo leafpad /boot/config.txt" na uongeze mstari "enable_uart = 1" hadi mwisho wa faili). Mara hii ikimaliza, lazima ufungue tena Kituo cha LX na uzime Serial na amri "sudo systemctl stop [email protected]" na "sudo systemctl afya [email protected]". Baada ya hapo lazima utekeleze amri "sudo leafpad /boot/cmdline.txt", futa laini "console = serial0, 115200", weka faili na uanze tena kifaa. Ili mawasiliano ya RX-TX iwezekane, maktaba ya Serial lazima iwekwe kwenye Raspberry Pi na amri "sudo apt-get install -f python-serial" na uingize maktaba kwenye nambari kwa kuingiza laini ya "kuagiza serial", kuanzisha serial kwa kuingiza mstari "ser = serial. Serial (" / dev / ttyS0 ", 9600)" na usomaji wa voltage iliyotumwa na Arduino ikitumia amri "ser.readline ()" - nambari kamili iliyotumiwa katika Raspberry itapatikana mwisho wa nakala.
Kufuatia utaratibu ulioelezewa hapo juu, hatua ya kusoma na kutuma voltage imekamilika.
Hatua ya 6: Programu ya Arduino:
Kama ilivyoelezwa hapo awali, nambari inayohusika na kusoma voltage inayotengenezwa wakati wa baiskeli ni rahisi sana.
Kwanza, ni muhimu kuchagua pini ya A0 kama anayehusika na kusoma voltage.
Katika kazi ya "usanidi batili ()", unahitaji kuweka pini A0 kwa INPUT na "pinMode (sensor, INPUT)" amri na uchague kasi ya usafirishaji wa bandari kwa kutumia amri ya "Serial.begin (9600)".
Katika "kitanzi batili ()", kazi ya "Serial.flush ()" hutumiwa kusafisha bafa kila wakati inapomaliza kutuma habari kupitia serial; usomaji wa voltage unafanywa na kazi "AnalogRead (sensa)" - kukumbuka kuwa ni muhimu kubadilisha thamani iliyosomwa na bandari ya analogi kuwa Volts - mchakato uliotajwa katika sehemu ya "voltage ya kusoma" ya nakala hiyo.
Pia, katika kazi ya "batili kitanzi ()", ni muhimu kubadilisha kutofautisha x kutoka kuelea hadi kamba, kwani hii ndiyo njia pekee ya kutuma ubadilishaji kupitia RX-TX. Hatua ya mwisho katika kazi ya kitanzi ni kuchapisha kamba kwenye bandari ya serial ili iweze kutumwa kwa Raspberry - kwa hili lazima utumie kazi ya "Serial.println (y)". Laini "kuchelewesha (100)" imeongezwa kwa nambari tu ili ubadilishaji upelekwe kwa vipindi vya ms 100 - ikiwa wakati huu hauheshimiwi, upakiaji wa serial utatokea, na kusababisha ajali katika programu.
voltage_isoma.ino
sensor ya kuelea = A0; |
voidetup () { |
pinMode (sensor, INPUT); |
Serial. Kuanza (9600); |
} |
voidloop () { |
Serial.flush (); |
kuelea x = analog Soma (sensorer) * 0.0048828125 * 16.67; |
Kamba y = ""; |
y + = x; |
Serial.println (y); |
kuchelewesha (100); |
} |
tazama rawvoltage_read.ino iliyohifadhiwa na ❤ na GitHub
Hatua ya 7: Programu ya Raspberry Pi 3:
taa_baiskeli.py
kuagiza os #import maktaba ya os (kutumika kusafisha skrini inapohitajika) |
kuagiza RPi. GPIOas gpio #import maktaba inayotumika kudhibiti GPIO ya Raspnerry |
kuagiza serial maktaba yaport inayohusika na mawasiliano ya serial |
kuagiza muda wa kuagiza maktaba ambayo inafanya uwezekano wa kutumia kazi ya kuchelewesha |
kuagiza subprocess #import maktaba inayohusika na kucheza nyimbo |
# anza mfululizo |
ser = serial. Serial ("/ dev / ttyS0", 9600) #fafanua jina la kifaa na kiwango cha baud |
Skrini safi |
wazi = lambda: mfumo wa os. ('wazi') |
pini #seti za kudhibiti relay |
gpio.setmode (gpio. BOARD) |
usanidi wa gpio (11, gpio. OUT) # taa 10 |
usanidi wa gpio (12, gpio. OUT) # taa 9 |
usanidi wa gpio (13, gpio. OUT) # taa 8 |
usanidi wa gpio (15, gpio. OUT) # taa 7 |
usanidi wa gpio (16, gpio. OUT) # taa 6 |
usanidi wa gpio (18, gpio. OUT) # taa 5 |
usanidi wa gpio (19, gpio. OUT) # taa 4 |
usanidi wa gpio (21, gpio. OUT) # taa 3 |
usanidi wa gpio (22, gpio. OUT) # taa 2 |
usanidi wa gpio (23, gpio. OUT) # taa 1 |
rekodi za kuanza |
jina = ["Hakuna"] * 10 |
voltage = [0.00] * 10 |
#soma faili ya kumbukumbu |
f = wazi ('rekodi', 'r') |
kwa i inrange (10): # alama 10 bora zinaonekana kwenye orodha |
jina = f. mstari wa mstari () |
jina = jina [: len (jina ) - 1] |
voltage = f. mstari wa mwisho () |
voltage = kuelea (voltage [: len (voltage ) - 1]) |
f. karibu () |
wazi () |
#weka voltage kubwa |
upeo = 50.00 |
#zima taa |
kwa maana mimi inrange (11, 24, 1): |
ikiwa i! = 14na i! = 17na i! = 20: |
pato la gpio (i, gpio. HIGH) #set to HIGH, relays zimezimwa |
#anza |
wakatiKweli: |
# skrini ya kwanza |
chapa "Rekodi: / n" |
kwa maana mimi inrange (10): |
jina la kuchapisha , ":", voltage , "V" |
current_name = raw_input ("Andika jina lako kuanza:") |
wazi () |
#Badilisha thamani ya juu |
ikiwa sasa_name == "max": |
max = pembejeo ("Andika voltage kubwa: (sehemu 2 za desimali)") |
wazi () |
mwingine: |
# anza onyo |
kwa i inrange (11, 24, 1): # kitanzi huanza katika PIN 11 na kusimama katika PIN 24 |
ikiwa i! = 14na i! = 17na i! = 20: #PIN 14 na 20 ni pini za GND na 20 ni pini 3.3 V |
pato la gpio (i, gpio. LOW) #washa taa |
saa. kulala (0.5) |
k = 10 |
kwa maana mimi inrange (23, 10, -1): |
wazi () |
ikiwa i! = 14na i! = 17na i! = 20: |
fungua mchakato. Fungua (['aplay', 'Audios /' + str (k) + '. wav']) |
saa. kulala (0.03) |
wazi () |
chapa "Andaa! / n", k |
saa. kulala (1) |
k- = 1 |
pato la gpio (i, gpio. HIGH) #zima taa (moja kwa moja) |
Fungua (['aplay', 'Audios / go.wav']) # inacheza muziki wa kuanza |
saa. kulala (0.03) |
wazi () |
chapa "NENDA!" |
saa. kulala (1) |
wazi () |
#voltage imesomwa |
voltage ya sasa = 0.00 |
voltage1 = 0.00 |
kwa maana mimi inrange (200): |
Ingizo la ser. |
uliopita = voltage1 |
voltage1 = kuelea (ser.readlineline)) #kusanya data ya Arduino iliyohamishwa na RX-TX |
wazi () |
magazeti voltage1, "V" |
ikiwa voltage1> sasa_voltage: |
voltage ya sasa = voltage1 |
# kulingana na voltage inayozalishwa, taa zaidi huangaza. |
ikiwa voltage1 <max / 10: |
kwa maana mimi inrange (11, 24, 1): |
ikiwa i! = 14na i! = 17na i! = 20: |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = max / 10: |
pato la gpio (11, gpio. LOW) |
kwa maana mimi inrange (12, 24, 1): |
ikiwa i! = 14na i! = 17na i! = 20: |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = 2 * max / 10: |
kwa maana mimi inrange (11, 13, 1): |
pato la gpio (i, gpio. LOW) |
kwa maana mimi inrange (13, 24, 1): |
ikiwa i! = 14na i! = 17na i! = 20: |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = 3 * max / 10: |
kwa maana mimi inrange (11, 14, 1): |
pato la gpio (i, gpio. LOW) |
kwa maana mimi inrange (15, 24, 1): |
ikiwa i! = 17 na i! = 20: |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = 4 * max / 10: |
kwa maana mimi inrange (11, 16, 1): |
ikiwa i! = 14: |
pato la gpio (i, gpio. LOW) |
kwa maana mimi inrange (16, 24, 1): |
ikiwa i! = 17 na i! = 20: |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = 5 * max / 10: |
kwa maana mimi inrange (11, 17, 1): |
ikiwa i! = 14: |
pato la gpio (i, gpio. LOW) |
kwa maana mimi inrange (18, 24, 1): |
ikiwa i! = 20: |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = 6 * max / 10: |
kwa maana mimi inrange (11, 19, 1): |
ikiwa i! = 14na i! = 17: |
pato la gpio (i, gpio. LOW) |
kwa maana mimi inrange (19, 24, 1): |
ikiwa i! = 20: |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = 7 * max / 10: |
kwa maana mimi inrange (11, 20, 1): |
ikiwa i! = 14na i! = 17: |
pato la gpio (i, gpio. LOW) |
kwa maana mimi inrange (21, 24, 1): |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = 8 * max / 10: |
kwa maana mimi inrange (11, 22, 1): |
ikiwa i! = 14na i! = 17na i! = 20: |
pato la gpio (i, gpio. LOW) |
kwa maana mimi napanga (22, 24, 1): |
pato la gpio (i, gpio. HIGH) |
ikiwa voltage1> = 9 * max / 10: |
kwa maana mimi inrange (11, 23, 1): |
ikiwa i! = 14na i! = 17na i! = 20: |
pato la gpio (i, gpio. LOW) |
pato la gpio (23, gpio. HIGH) |
ikiwa voltage1> = max: |
kwa maana mimi inrange (11, 24, 1): |
ikiwa i! = 14na i! = 17na i! = 20: |
pato la gpio (i, gpio. LOW) |
ikiwa voltage1 |
kuvunja |
#zima taa |
kwa maana mimi inrange (11, 24, 1): |
ikiwa i! = 14na i! = 17na i! = 20: |
pato la gpio (i, gpio. HIGH) |
# muziki wa ushindi |
ikiwa sasa_voltage> = max: |
Kufungua (['aplay', 'Audios / rocky.wav']) |
saa. kulala (0.03) |
wazi () |
chapisha "NZURI SANA, UMESHINDA!"% (u '\u00c9', u '\u00ca', u '\u00c2') |
kwa maana mimi inrange (10): |
kwa j inrange (11, 24, 1): |
ikiwa j! = 14and j! = 17and j! = 20: |
pato la gpio (j, gpio. LOW) |
saa. kulala (0.05) |
kwa j inrange (11, 24, 1): |
ikiwa j! = 14and j! = 17and j! = 20: |
pato la gpio (j, gpio. HIGH) |
saa. kulala (0.05) |
saa. kulala (0.5) |
fungua mchakato. Fungua (['aplay', 'Audios / end.wav']) |
saa. kulala (0.03) |
wazi () |
chapisha "Mchezo wa kumaliza … / n", voltage ya sasa, "V" |
#rekodi |
saa. kulala (1.2) |
imefikiwa = 0 |
kwa maana mimi inrange (10): |
ikiwa sasa_voltage> voltage : |
imefikiwa + = 1 |
voltage_voltage = voltage |
voltage = sasa_voltage |
sasa_voltage = temp_voltage |
temp_name = jina |
jina = jina la sasa |
jina_la sasa = jina_ la_temp |
ikiwa imefikiwa> 0: |
Subprocess. Fungua (['aplay', 'Audios / record.wav']) |
saa. kulala (0.03) |
wazi () |
f = fungua ('rekodi', 'w') |
kwa maana mimi inrange (10): |
f. andika (jina ) |
f. andika ("\ n") |
f. andika (str (voltage )) |
f. andika ("\ n") |
f. karibu () |
wazi () |
tazama rawlamps_bike.py iliyohifadhiwa na ❤ na GitHub
Hatua ya 8: Mpango wa Umeme:
Arduino na Raspberry Pi 3 zinaendeshwa na chanzo cha 5V na 3A ya sasa.
Mzunguko wa umeme huanza na unganisho la jenereta ya DC (iliyounganishwa na baiskeli) kwa Arduino kupitia kichungi cha voltage kilicho na diode ya Zener ya 5.3V, capacitor ya 10μF na kontena la 1kΩ - pembejeo ya kichungi imeunganishwa na vituo vya jenereta na pato limeunganishwa na bandari ya A0 na GND ya mtawala.
Arduino imeunganishwa na Raspberry kupitia mawasiliano ya RX-TX - iliyofanywa kupitia mgawanyiko wa kupinga kutumia vipingaji 10kΩ (inahitajika na bandari za watawala zinazofanya kazi kwa voltages tofauti).
GPIO za Raspberry Pi zimeunganishwa na upeanaji unaohusika na kuwasha taa. "COM" ya upeanaji wote iliunganishwa na kushikamana na awamu (gridi ya AC) na "N. O" (kawaida hufunguliwa) ya kila relay iliunganishwa na kila taa na upande wowote wa gridi ya AC uliunganishwa na taa zote. Kwa hivyo, wakati GPIO inayohusika na kila relay inapoamilishwa, relay inabadilishwa kuwa sehemu ya mtandao wa AC na kuwasha taa husika.
Hatua ya 9: Matokeo:
Baada ya mkutano wa mwisho wa mradi huo, ilithibitishwa kuwa ilifanya kazi kama inavyotarajiwa - kulingana na kasi ambayo mtumiaji husogelea kwenye baiskeli, voltage zaidi hutengenezwa na taa nyingi huangaza.
Ilipendekeza:
Kitanda cha Mwanga cha Juu cha Baiskeli ya Baiskeli ya Givi V56 na Ishara Jumuishi: Hatua 4 (na Picha)
Kitengo cha Mwanga cha Baiskeli ya Baiskeli ya Givi V56 ya DIY Pamoja na Ishara Jumuishi: Kama mwendeshaji wa pikipiki, ninajua sana kutibiwa kama sionekani barabarani. Jambo moja mimi huongeza kila wakati kwenye baiskeli zangu ni sanduku la juu ambalo kawaida huwa na taa iliyojumuishwa. Hivi majuzi niliboresha baiskeli mpya na nikanunua Givi V56 Monokey
Kuonyesha Baiskeli ya Baiskeli: Hatua 10 (na Picha)
Kuonyesha Baiskeli ya Baiskeli: Je! Ni nini? Kama jina linavyosema, katika mradi huu utajifunza jinsi ya kuunda onyesho kwa baiskeli yako ambayo ina kasi na odometer. Inaonyesha kasi ya muda halisi na umbali uliosafiri. Gharama ya jumla ya mradi huu inakuja kwa kasi
Lightshow ya Baiskeli ya Baiskeli: Hatua 5 (na Picha)
Lightshow ya LED ya baiskeli: Watoto wangu wanapenda kupanda baiskeli. Mara wazo lilizaliwa kuongeza taa kwa hafla ya onyesho. Kuongeza taa zingine itakuwa tayari baridi lakini imehamasishwa na taa zingine, taa zinapaswa kusawazishwa na muziki. Ilikuwa ni utoshelevu kabisa
Jinsi ya Kutengeneza Taa ya Juu ya Umeme ya Baiskeli kwa Baiskeli: Hatua 4 (na Picha)
Jinsi ya Kutengeneza Taa ya Mwangaza ya Nguvu ya Juu kwa Baiskeli: Daima ni rahisi kuwa na mwangaza mkali wakati wa kuendesha baiskeli usiku kwa maono wazi na usalama. Pia inaonya wengine katika maeneo yenye giza na epuka ajali. Kwa hivyo katika kufundisha hii nitaonyesha jinsi ya kujenga na kusanikisha 100 watt LED p
Baiskeli ya infinity - Baiskeli ya Mafunzo ya Baiskeli ya Ndani: Hatua 5
Baiskeli ya infinity - Mchezo wa Video wa Baiskeli ya Baiskeli: Wakati wa msimu wa baridi, siku za baridi na hali mbaya ya hewa, wapenda baiskeli wana chaguzi chache tu za kufanya mazoezi ya michezo wanayoipenda. Tulikuwa tukitafuta njia ya kufanya mafunzo ya ndani na usanidi wa baiskeli / mkufunzi kidogo zaidi ya burudani lakini faida zaidi