Sadržaj:
- Korak 1: Materijali:
- Korak 2: Dijagram sistemskih blokova:
- Korak 3: Rad sistema:
- Korak 4: Mehanički aspekti
- Korak 5: Očitavanje napona:
- Korak 6: Arduino programiranje:
- Korak 7: Programiranje Raspberry Pi 3:
- Korak 8: Električna shema:
- Korak 9: Rezultati:
Video: Generiranje napona pomoću bicikla s ergometrom: 9 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Razrada projekta sastojala se u sastavljanju „igre“s ciljem pedaliranja u ergometarskom biciklu spojenom na generator i tornju od svjetiljki koje se aktiviraju s povećanjem brzine motora - što se događa u skladu s okretanjem bicikla. Sistem je bio zasnovan na očitavanju-putem analognog porta Arduino Mega-trenutnog generiranog napona, zatim prenošenju ovih podataka na Raspberry Pi 3 putem serijske RX-TX komunikacije i naknadnom aktivaciji svjetiljki putem releja.
Korak 1: Materijali:
- 1 malina Pi 3;
- 1 Arduino Mega 2560;
- 1 relejni štit s 10 releja 12 V;
- 10 Sijalice sa žarnom niti 127 V;
- 1 bicikl s ergometrom;
- 1 električna mašina (generator) 12 V;
- Otpornici (1x1kΩ, 2x10kΩ);
- 1 elektrolitički kondenzator 10 µF;
- 1 Zener dioda 5,3 V;
- 1,5 mm kabel (crveni, crni, smeđi);
- 1 MDF toranj sa nosačem za 10 lampi.
Korak 2: Dijagram sistemskih blokova:
Korak 3: Rad sistema:
Sustav se temelji na transformaciji kinetičke energije nastale pri bicikliranju u električnoj energiji odgovornoj za aktiviranje releja koji će paliti lampe.
Napon koji generira generator očitava se analognim pinom Arduina i šalje se putem RX-TX na Raspberry Pi. Aktiviranje releja proporcionalno je generiranom naponu - što je veći napon, više releja će se aktivirati i više lampica će zasvijetliti.
Korak 4: Mehanički aspekti
Da bi se mehanički spojio istosmjerni generator na bicikl, sistem pojasa morao je biti zamijenjen sistemom koji se koristi na uobičajenim biciklima (koji se sastoji od krune, lanca i zupčanika). Na okvir bicikla zavarena je metalna ploča tako da se motor mogao pričvrstiti vijcima. Nakon toga, zupčanik je zavaren na osovinu generatora kako bi se lanac mogao postaviti, povezujući sistem pedala s generatorom.
Korak 5: Očitavanje napona:
Za očitavanje napona generatora pomoću Arduina potrebno je spojiti pozitivni pol električne mašine na A0 pin kontrolera, a negativni pol na GND - kako bi se izbjeglo da maksimalni napon generatora bude veći od 5 V napona Arduino pinovi, naponski filter s kondenzatorom od 10 µF, otpornik od 1 kΩ i zener dioda od 5,3 V konstruirani su i spojeni između kontrolera i generatora. Firmver učitan u Arduino vrlo je jednostavan i sastoji se samo od čitanja analognog porta, pomnožene očitane vrijednosti s konstantom 0,0048828125 (5/1024, to je napon GPIO -a Arduina podijeljen s brojem bitova analognog porta) i slanja varijabla na Serijski - kôd će biti dostupan u članku.
Postupak omogućavanja RX-TX komunikacije u Raspberry Pi je malo složeniji, pa morate slijediti postupak opisan na linku. Ukratko, trebate urediti datoteku pod nazivom “inittab” -koja se nalazi u “/etc/inittab” -, komentirajte red “T0: 23: respawn:/sbin/getty -L ttyAMA0 115200 vt100” (ako datoteka nije osnovano u Raspberry OS -u, morate unijeti naredbu: “sudo leafpad /boot/config.txt” i dodati redak “enable_uart = 1” na kraj datoteke). Nakon što to učinite, morate ponovno otvoriti LX terminal i onemogućiti serijski broj naredbama "sudo systemctl stop [email protected]" i "sudo systemctl disable [email protected]". Nakon toga morate izvršiti naredbu "sudo leafpad /boot/cmdline.txt", izbrisati red "console = serial0, 115200", spremiti datoteku i ponovo pokrenuti uređaj. Da bi RX-TX komunikacija bila moguća, serijska biblioteka mora biti instalirana na Raspberry Pi naredbom "sudo apt-get install -f python-serial" i uvesti biblioteku u kôd umetanjem linije "import serial", inicijaliziranje serijskog umetanja retka "ser = serial. Serial (" / dev / ttyS0 ", 9600)" i očitavanje napona koji šalje Arduino pomoću naredbe "ser.readline ()" - cijeli kôd koji se koristi in Raspberry bit će dostupni na kraju članka.
Slijedeći gore opisani postupak, korak očitavanja i slanja napona je dovršen.
Korak 6: Arduino programiranje:
Kao što je ranije navedeno, kod odgovoran za očitavanje napona generiranog pri vožnji biciklom vrlo je jednostavan.
Prije svega, potrebno je odabrati pin A0 kao odgovorni za očitavanje napona.
U funkciji "void setup ()" morate postaviti pin A0 na INPUT naredbom "pinMode (sensor, INPUT)" i odabrati brzinu prijenosa serijskog porta pomoću naredbe "Serial.begin (9600)".
U "void loop ()", funkcija "Serial.flush ()" se koristi za brisanje bafera svaki put kada prekine slanje informacija putem serijskog broja; očitavanje napona vrši funkcija "analogRead (senzor)" - imajući u vidu da je potrebno vrijednost koju očitava analogni priključak pretvoriti u volte - proces naveden u odjeljku "napon čitanja" u članku.
Također, u funkciji "void loop ()" potrebno je pretvoriti varijablu x iz plutajućeg u niz, jer je to jedini način da se varijabla pošalje putem RX-TX-a. Zadnji korak u funkciji petlje je ispisivanje niza na serijskom portu kako bi se mogao poslati na Raspberry - za to morate koristiti funkciju "Serial.println (y)". Red "delay (100)" dodan je kodu samo tako da se varijabla šalje u intervalima od 100 ms - ako se ovo vrijeme ne poštuje, doći će do serijskog preopterećenja, generirajući moguće rušenja u programu.
voltage_read.ino
senzor plovka = A0; |
voidsetup () { |
pinMode (senzor, ULAZ); |
Serial.begin (9600); |
} |
voidloop () { |
Serial.flush (); |
plovak x = analogno čitanje (senzor)*0,0048828125*16,67; |
Niz y = ""; |
y+= x; |
Serial.println (y); |
kašnjenje (100); |
} |
pogledajte rawvoltage_read.ino hostirano sa ❤ od GitHub -a
Korak 7: Programiranje Raspberry Pi 3:
lamp_bike.py
import os #import os biblioteka (koristi se za brisanje ekrana po potrebi) |
uvoz RPi. GPIOas gpio #import biblioteka koja se koristi za kontrolu Raspnerryjevog GPIO |
import serial #import biblioteka odgovorna za serijsku komunikaciju |
import time #import biblioteka koja omogućuje korištenje funkcije delay |
uvoziti potproces #import biblioteka odgovorna za reprodukciju pjesama |
#start serial |
ser = serial. Serial ("/dev/ttyS0", 9600) #definirajte naziv uređaja i brzinu prijenosa |
#jasan ekran |
clear = lambda: os.system ('clear') |
#set pinova za kontrolu releja |
gpio.setmode (gpio. BOARD) |
gpio.setup (11, gpio. OUT) #lamp 10 |
gpio.setup (12, gpio. OUT) #lamp 9 |
gpio.setup (13, gpio. OUT) #lamp 8 |
gpio.setup (15, gpio. OUT) #lamp 7 |
gpio.setup (16, gpio. OUT) #lamp 6 |
gpio.setup (18, gpio. OUT) #lamp 5 |
gpio.setup (19, gpio. OUT) #lamp 4 |
gpio.setup (21, gpio. OUT) #lamp 3 |
gpio.setup (22, gpio. OUT) #lamp 2 |
gpio.setup (23, gpio. OUT) #lamp 1 |
#start zapisi |
name = ["None"]*10 |
napon = [0,00]*10 |
#pročitana datoteka zapisa |
f = otvoreno ('zapisi', 'r') |
za i inrange (10): #10 najboljih rezultata pojavljuje se na listi |
ime = f.readline () |
ime = ime [: len (ime )-1] |
napon = f.redline () |
napon = plovak (napon [: len (napon )-1]) |
f.close () |
jasno () |
#postavite maksimalni napon |
max = 50,00 |
#gasi lampe |
za i inrange (11, 24, 1): |
ako i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) #postavljeno na HIGH, releji su isključeni |
#start |
whileTrue: |
#početni ekran |
ispisati "Zapisi: / n" |
za i inrange (10): |
ispis ime , ":", napon , "V" |
current_name = raw_input ("Napišite svoje ime za početak:") |
jasno () |
#Promijeni maksimalnu vrijednost |
ako je current_name == "max": |
max = ulaz ("Zapišite maksimalni napon: (2 decimalna mjesta)") |
jasno () |
drugo: |
#start upozorenje |
za i inrange (11, 24, 1): #petlja počinje u PIN -u 11 i zaustavlja se u PIN -u 24 |
ako je i! = 14i i! = 17 i i! = 20: #PIN 14 i 20 su GND pinovi, a 20 je pin od 3,3 V |
gpio.output (i, gpio. LOW) #Uključite lampe |
vrijeme.spavanje (0,5) |
k = 10 |
za i inrange (23, 10, -1): |
jasno () |
ako i! = 14i i! = 17i i! = 20: |
subprocess. Popen (['aplay', 'Audios/'+str (k)+'. wav']) |
time.sleep (0,03) |
jasno () |
ispis "Pripremite se! / n", k |
time.sleep (1) |
k- = 1 |
gpio.output (i, gpio. HIGH) #ugasite lampe (jednu po jednu) |
subprocess. Popen (['aplay', 'Audios/go.wav']) #pušta početnu muziku |
time.sleep (0,03) |
jasno () |
ispisati "GO!" |
time.sleep (1) |
jasno () |
#očitavanje napona |
napon struje = 0,00 |
napon1 = 0,00 |
za i inrange (200): |
ser.flushInput () |
prethodni = napon1 |
napon1 = float (ser.readline ()) #prikuplja Arduino podatke prenesene putem RX-TX-a |
jasno () |
napon štampe1, "V" |
ako je napon1> napon_struje: |
strujni_napon = napon1 |
# ovisno o generiranom naponu, više lampica svijetli. |
ako je napon1 <max/10: |
za i inrange (11, 24, 1): |
ako i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = max/10: |
gpio.output (11, gpio. LOW) |
za i inrange (12, 24, 1): |
ako i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 2*max/10: |
za i inrange (11, 13, 1): |
gpio.output (i, gpio. LOW) |
za i inrange (13, 24, 1): |
ako i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 3*max/10: |
za i inrange (11, 14, 1): |
gpio.output (i, gpio. LOW) |
za i inrange (15, 24, 1): |
ako sam! = 17i ja! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 4*max/10: |
za i inrange (11, 16, 1): |
ako ja! = 14: |
gpio.output (i, gpio. LOW) |
za i inrange (16, 24, 1): |
ako sam! = 17i ja! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 5*max/10: |
za i inrange (11, 17, 1): |
ako ja! = 14: |
gpio.output (i, gpio. LOW) |
za i inrange (18, 24, 1): |
ako ja! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 6*max/10: |
za i inrange (11, 19, 1): |
ako sam! = 14i ja! = 17: |
gpio.output (i, gpio. LOW) |
za i inrange (19, 24, 1): |
ako ja! = 20: |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 7*max/10: |
za i inrange (11, 20, 1): |
ako sam! = 14i ja! = 17: |
gpio.output (i, gpio. LOW) |
za i inrange (21, 24, 1): |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 8*max/10: |
za i inrange (11, 22, 1): |
ako i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. LOW) |
za i inrange (22, 24, 1): |
gpio.output (i, gpio. HIGH) |
ako je napon1> = 9*max/10: |
za i inrange (11, 23, 1): |
ako i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. LOW) |
gpio.output (23, gpio. HIGH) |
ako je napon1> = max: |
za i inrange (11, 24, 1): |
ako i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. LOW) |
ako je napon1 |
break |
#gasi lampe |
za i inrange (11, 24, 1): |
ako i! = 14i i! = 17i i! = 20: |
gpio.output (i, gpio. HIGH) |
#pobednička muzika |
ako je napon struje> = max: |
subprocess. Popen (['aplay', 'Audios/rocky.wav']) |
time.sleep (0,03) |
jasno () |
ispišite "VRLO DOBRO, POBJEDILI STE!"% (u '\u00c9', u '\u00ca', u '\u00c2') |
za i inrange (10): |
za j inrange (11, 24, 1): |
ako j! = 14i j! = 17i j! = 20: |
gpio.output (j, gpio. LOW) |
time.sleep (0,05) |
za j inrange (11, 24, 1): |
ako j! = 14i j! = 17i j! = 20: |
gpio.output (j, gpio. HIGH) |
time.sleep (0,05) |
vrijeme.spavanje (0,5) |
subprocess. Popen (['aplay', 'Audios/end.wav']) |
time.sleep (0,03) |
jasno () |
ispiši "Završi igru… / n", trenutni_napon, "V" |
#records |
time.sleep (1.2) |
dostignuto = 0 |
za i inrange (10): |
ako je napon struje> napon : |
dostigao+= 1 |
temp_voltage = napon |
napon = strujni_napon |
trenutni_napon = temp_napon |
temp_name = ime |
ime = trenutno_ime |
trenutni_naziv = temp_name |
ako je dosegnuto> 0: |
subprocess. Popen (['aplay', 'Audios/record.wav']) |
time.sleep (0,03) |
jasno () |
f = otvoreno ('zapisi', 'w') |
za i inrange (10): |
f.pisati (ime ) |
f.write ("\ n") |
f.write (str (napon )) |
f.write ("\ n") |
f.close () |
jasno () |
pogledajte rawlamps_bike.py hostirano sa ❤ od strane GitHub -a
Korak 8: Električna shema:
Arduino i Raspberry Pi 3 napajaju se iz 5V izvora sa 3A strujom.
Električni krug započinje spajanjem istosmjernog generatora (spojenog na bicikl) na Arduino kroz naponski filter sastavljen od Zener diode od 5,3 V, kondenzatora od 10 μF i otpornika od 1 kΩ - ulaz filtra je spojen na priključci generatora i izlaz je spojen na A0 port i GND kontrolera.
Arduino je spojen na Raspberry putem RX-TX komunikacije-izvodi se kroz otpornički razdjelnik pomoću otpornika od 10 kΩ (što je potrebno za portove kontrolera koji rade na različitim naponima).
GPIO -i Raspberry Pi -a povezani su sa relejima odgovornim za uključivanje lampi. “COM” svih releja bio je međusobno povezan i spojen na fazu (AC mreža), a “N. O” (normalno otvoren) svakog releja bio je spojen na svaku lampu, a neutral neutralne mreže naizmjenične struje bio je spojen na sve svjetiljke. Dakle, kada se aktivira GPIO odgovoran za svaki relej, relej se prebacuje u fazu mreže naizmjenične struje i uključuje odgovarajuću lampicu.
Korak 9: Rezultati:
Nakon konačne montaže projekta, provjereno je da je radio prema očekivanjima - prema brzini koju korisnik pedalira na biciklu stvara se veći napon i svijetli više lampica.
Preporučuje se:
Generiranje različitih zvukova iz filmova koristeći samo Arduino: 3 koraka
Stvaranje različitih zvukova iz filmova koristeći samo Arduino: As-salamu alejkum! Htio sam generirati različite zvukove poput predatora, optimusa primea & bumbar iz filma o transformatorima. Zapravo sam gledao " haksiona " video o izradi kacige predatora
Generiranje umjetnosti iz komentara: 5 koraka (sa slikama)
Generiranje umjetnosti iz komentara: Ovaj je projekt ambiciozan, gdje želimo koristiti neke od najpouzdanijih dijelova interneta, odjeljke za komentare i sobe za chat za stvaranje umjetnosti. Također želimo učiniti projekt lako dostupnim kako bi se svi mogli okušati u stvaranju
Generiranje tonova različitih vrsta pomoću matematičkih jednadžbi (MathsMusic) Arduino: 5 koraka
Generiranje tonova različitih vrsta pomoću matematičkih jednadžbi (MathsMusic) Arduino: Opis projekta: Novo putovanje je započelo gdje se ideje mogu lako implementirati pomoću zajednice otvorenog koda (zahvaljujući Arduinu). Dakle, evo načina · Osvrnite se oko sebe i posmatrajte svoju okolinu · Otkrijte probleme koje morate riješiti
Regulator napona na ploči s zaslonom / Regulatorom napona Com displejom Za sve potrebne postavke: 8 koraka
Regulator napona na ploči s zaslonom / Regulator napona Com zaslon Para Placa De Ensaio: Nabavite potrebne komponente koje se nalaze na priloženoj listi (postoje veze za kupnju ili pregled njihovih karakteristika). Ovo su linkovi koji paralelno uspoređuju karakteristike kao karakteristike
Cipela za generiranje energije: 10 koraka (sa slikama)
Cipele za generiranje energije: Ova instrukcija će vam pokazati kako stvoriti cipele koje proizvode električnu energiju. To čini tako što koristi vašu energiju dok hodate i pretvara je u električnu energiju. Ako ste usred ničega izgubili napajanje mobilnog telefona, onda