Raspberry Pi Pico er et lavpris mikrocontrollerkort, der gør det nemt for begyndere at komme i gang med elektronikprojekter og lære at kode.
Til dette projekt vil du lære at læse et analogt signal fra et potentiometer og konvertere det til en PWM (pulsbreddemodulation) signal til at manipulere frekvensen eller tonen af en buzzer ved hjælp af MicroPython kode.
Hvilke dele er nødvendige?
Dette projekt er baseret på Kitronik Inventor's Kit til Raspberry Pi Pico. Alle de nødvendige elektroniske komponenter er inkluderet i sættet; men disse er almindelige komponenter, som du måske har liggende:
- Piezo element summer
- Roterende potentiometer
- 7x han-han jumper ledninger
- Raspberry Pi Pico med loddede GPIO hovedstifter
- Brødbræt
Hvis du er ny til pulsbreddemodulation (PWM) og potentiometre, så tjek først vores guide på hvordan man bruger et potentiometer med din Raspberry Pi Pico
, som skitserer, hvordan man bruger den til at justere lysstyrken på en LED med PWM.Påkrævet samling
En jumperledning (gul på billedet) forbinder venstre side af potentiometeret til den positive (+) skinne på brødbrættet. En anden jumperledning forbinder højre side af potentiometeret til den negative (-) side af brødbrættet. Fra den midterste stift på potentiometret skal du føre en jumperledning til GP26/A0 stiften på Pico.
Piezo-brummeren skal have en ledning, der går fra dens negative ben til den negative breadboard-skinne og derefter en anden forbindelse fra dens positive ben til GP15-stiften på Raspberry Pi Pico.
Du skal også føre en jumper-ledning fra en GND-stift på Pico til den negative skinne på brødbrættet for at jorde det. En anden jumperledning vil forbinde 3V3 Out-pinden på Pico til den positive skinne på breadboardet for at forsyne komponenterne.
Opret koden
Du kan hente koden fra MUO GitHub repository. Download MicroPython-filen med navnet piezo-buzzer.py og indlæs derefter dette på din Pico via en USB-tilsluttet computer, der kører Thonny IDE. Tjek hvordan kom i gang med MicroPython på Raspberry Pi Pico for detaljer.
De forskellige dele af koden gør følgende:
- Øverst importerer vi det nødvendige maskine, matematik, og tid MicroPython moduler.
- EN summer variabel tildeles derefter til pin GP15 som en PWM-udgang.
- EN potentiometer variabel er tildelt analog-til-digital-konverteren (ADC) på Picos GP26/A0-ben.
- Vi definerer en vægt() funktion, der bruger matematiske funktioner til at konvertere rækkevidden af potentiometerets bevægelse til et output for summeren.
- Det mens: Sandt uendelig sløjfe læser potentiometerets input og bruger derefter vægt funktion til at konvertere den. Efter at have kontrolleret, at den ikke har ændret sig for meget fra den tidligere frekvens, sender den derefter den beregnede frekvens til summeren ved hjælp af PWM (pulsbreddemodulation).
Sammenfattende er der hundredvis af impulser, der sendes i sekundet, og summertonen vil skifte mellem 120Hz og 5kHz, når potentiometeret drejes med eller mod uret. Drejning af potentiometeret ændrer spændingen, der aflæses af Pico's analoge inputpin, som igen bruges til at justere buzzer-frekvensen ved hjælp af PWM.
Kør koden fra Thonny (klik på afspilningsikonet eller tryk F5 på dit tastatur) og prøv det selv. Efter din første kørsel, vil eventuelle kodeændringer påvirke fysiske resultater? For eksempel, hvad sker der, hvis du ændrer rækkevidde (0 til 65535)? Denne del af koden er placeret lige nedenfor mens det er sandt: hvor er frekvens er defineret.
Indstilling af tonen
Hvis du føler dig eventyrlysten, kan du prøve at bruge buzzeren til at generere musikalske toner ved hjælp af martinkooij's pi-pico-toner bibliotek på GitHub. Som standard vil dette bibliotek generere sinusbølger; fire tonegeneratorer kan køre på fire forskellige Pico-stifter, som du kan vælge. Bemærk, at dette projekt er baseret på C++ ved hjælp af Raspberry Pi Pico SDK snarere end MicroPython, men de fulde instruktioner er givet i GitHub readme.
The Buzz of Pico Electronics
Tillykke: du har lært, hvordan du læser det analoge input fra et potentiometer og konverterer det til et PWM-signal for at styre en buzzer-tone. Et potentiometer er en alsidig inputenhed til elektronik. En piezo-brummer er en anden praktisk komponent: med tilføjelsen af en PIR infrarød bevægelsessensor, for eksempel, kan du registrere tilstedeværelsen af ubudne gæster og slå alarm.