De Raspberry Pi Pico is een goedkoop microcontroller-bord dat het voor beginners gemakkelijk maakt om aan de slag te gaan met elektronicaprojecten en te leren coderen.
Voor dit project leer je hoe je een analoog signaal van een potentiometer leest en omzet in een PWM (pulsbreedtemodulatie) signaal om de frequentie of toon van een zoemer te manipuleren met behulp van MicroPython code.
Welke onderdelen zijn nodig?
Dit project is gebaseerd op de Kitronik Uitvinderskit voor Raspberry Pi Pico. Alle benodigde elektronische componenten zitten in de kit; dit zijn echter veelvoorkomende componenten die je misschien hebt liggen:
- Zoemer met piëzo-element
- Roterende potentiometer
- 7x Male-male jumperdraden
- Raspberry Pi Pico met gesoldeerde GPIO-headerpennen
- Broodplank
Als je nieuw bent met pulsbreedtemodulatie (PWM) en potentiometers, bekijk dan eerst onze gids over
hoe je een potentiometer gebruikt met je Raspberry Pi Pico, waarin wordt beschreven hoe je het kunt gebruiken om de helderheid van een LED met PWM aan te passen.Vereiste montage
Eén jumperdraad (geel op de foto) verbindt de linkerkant van de potentiometer met de positieve (+) rail van het breadboard. Een andere jumperdraad verbindt de rechterkant van de potentiometer met de negatieve (-) kant van het breadboard. Vanaf de middelste pin van de potentiometer moet u een jumperdraad naar de GP26/A0-pin op de Pico laten lopen.
De piëzo-zoemer heeft één draad nodig die van de negatieve poot naar de negatieve breadboard-rail gaat en vervolgens een andere verbinding van de positieve poot naar de GP15-pin op de Raspberry Pi Pico.
U moet ook een jumperdraad van een GND-pin op Pico naar de negatieve rail op het breadboard laten lopen om deze te aarden. Een andere jumperdraad verbindt de 3V3 Out-pin op de Pico met de positieve rail van het breadboard om de componenten van stroom te voorzien.
Maak de code
Je kunt de code van de MUO GitHub-repository. Download het MicroPython-bestand met de naam piëzo-zoemer.py en laad dit vervolgens op uw Pico via een via USB aangesloten computer waarop de Thonny IDE draait. Bekijk hoe het moet aan de slag met MicroPython op de Raspberry Pi Pico voor details.
De verschillende delen van de code doen het volgende:
- Bovenaan importeren we het benodigde machine, wiskunde, En tijd MicroPython-modules.
- A zoemer variabele wordt dan toegewezen aan pin GP15 als een PWM-uitgang.
- A potentiometer variabele wordt toegewezen aan de analoog-naar-digitaal-omzetter (ADC) op de GP26/A0-pin van Pico.
- We definiëren een schaal() functie die wiskundige functies gebruikt om het bereik van de potentiometerbeweging om te zetten in een uitvoer voor de zoemer.
- De terwijl: waar oneindige lus leest de potentiometeringang en gebruikt vervolgens de schaal functie om het te converteren. Nadat is gecontroleerd of deze niet te veel is veranderd ten opzichte van de vorige frequentie, wordt de berekende verzonden frequentie naar de zoemer met behulp van PWM (pulsbreedtemodulatie).
Samengevat, er worden honderden pulsen per seconde verzonden en de zoemertoon zal verschuiven tussen 120 Hz en 5 kHz als de potentiometer met de klok mee of tegen de klok in wordt gedraaid. Door de potentiometer te draaien, verandert de spanning die wordt gelezen door de analoge invoerpen van de Pico, die op zijn beurt wordt gebruikt om de zoemerfrequentie aan te passen met behulp van PWM.
Voer de code van Thonny uit (klik op het afspeelpictogram of druk op F5 op je toetsenbord) en probeer het zelf uit. Zullen wijzigingen in de code na uw eerste uitvoering van invloed zijn op de fysieke resultaten? Wat gebeurt er bijvoorbeeld als u de bereik (0 tot 65535)? Dit deel van de code bevindt zich net hieronder terwijl waar: waar de frequentie is gedefinieerd.
De toon zetten
Als je avontuurlijk bent ingesteld, wil je misschien proberen de zoemer te gebruiken om muzikale tonen te genereren met behulp van martinkooij's pi-pico-tonen bibliotheek op GitHub. Deze bibliotheek genereert standaard sinusgolven; vier toongeneratoren kunnen naar keuze op vier verschillende Pico-pinnen draaien. Merk op dat dit project is gebaseerd op C++ met behulp van de Raspberry Pi Pico SDK, in plaats van MicroPython, maar volledige instructies worden gegeven in de GitHub readme.
De buzz van Pico Electronics
Gefeliciteerd: je hebt geleerd hoe je de analoge ingang van een potentiometer leest en omzet in een PWM-signaal om een zoemer aan te sturen. Een potentiometer is een veelzijdig invoerapparaat voor elektronica. Een piëzo-zoemer is een ander handig onderdeel: met de toevoeging van bijvoorbeeld een PIR-infraroodbewegingssensor kunt u de aanwezigheid van indringers detecteren en alarm slaan.