{"id":14564,"date":"2025-02-22T13:39:23","date_gmt":"2025-02-22T12:39:23","guid":{"rendered":"https:\/\/www.picademie.nl\/?p=14564"},"modified":"2025-03-15T15:58:44","modified_gmt":"2025-03-15T14:58:44","slug":"piezo-luidspreker","status":"publish","type":"post","link":"https:\/\/www.picademie.nl\/index.php\/2025\/02\/22\/piezo-luidspreker\/","title":{"rendered":"Pi\u00ebzo-luidspreker"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">Je komt ze tegen in horloges, kaartlezers, pc\u2019s, alles dat piept bij opstart, de tweeters van je stereo-set, knuffels en nog heel veel meer toepassingen. De kans is groot dat je dan naar een pi\u00ebzo-speakerelement luisterde. De pi\u00ebzo is niet meer weg te denken binnen de techniek. Ze zijn goedkoop, veelzijdig, klein en eenvoudig aan te sturen.<\/pre>\n\n\n\n<p>Pi\u00ebzo is een materiaal dat\u00a0elektriciteit kan opwekken wanneer het onder mechanische druk komt te staan. Andersom kan het materiaal ook in verschillende richtingen uitzetten wanneer er een spanning op wordt gezet. Het woord pi\u00ebzo is afgeleid van het Oudgriekse woord drukken (<em>piezein) <\/em>.<\/p>\n\n\n\n<p>In deze tutorial laat ik zien wat een pi\u00ebzo luidspreker is en hoe eenvoudig de pi\u00ebzo via de Raspberry Pi aan te sturen is. Ofschoon het mogelijk is om met de pi\u00ebzo trillingen of stoten te detecteren, beperk ik mij in deze tutorial tot het fabriceren van geluid.<\/p>\n\n\n\n<p><em>Daar gaan we\u2026!<\/em><\/p>\n\n\n\n<p><strong>Wat is een pi\u00ebzo luidspreker?<\/strong><\/p>\n\n\n\n<p>Pi\u00ebzo-luidsprekers bevatten een speciaal materiaal, het zogenaamde \u2018pi\u00ebzo-element\u2019, dat het pi\u00ebzo (elektrische) effect vertoont als je er spanning op zet, in dit geval zet het materiaal uit als er spanning op gezet wordt.<\/p>\n\n\n\n<p>Indien er druk op het pi\u00ebzo element wordt gezet kun je de spanning op een voltmeter waarnemen. Geef je er een behoorlijke tik op, dan kan de spanning tot enkele duizenden volts oplopen, denk daarbij aan de vonk van een elektrische aansteker waar een pi\u00ebzo-element in verwerkt zit.<\/p>\n\n\n\n<p>Veel vaste materialen, zoals steen of zout, zijn hard omdat hun atomen dicht op elkaar zitten. Deze materialen kennen een kristalstructuur.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"694\" height=\"353\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/piezo-krisytallen.jpg\" alt=\"\" class=\"wp-image-14578\" style=\"width:472px;height:auto\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/piezo-krisytallen.jpg 694w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/piezo-krisytallen-300x153.jpg 300w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><figcaption class=\"wp-element-caption\"><sup>Piezo-effect bij samengeperste kristallen<\/sup><\/figcaption><\/figure>\n\n\n\n<p>In sommige materialen kunnen kristalstructuren iets buigen of samengedrukt worden wanneer er genoeg kracht op wordt uitgeoefend. Hierdoor gaan sommige atomen naast andere atomen zitten waar ze normaal gesproken niet naast zouden zitten.<\/p>\n\n\n\n<p>In pi\u00ebzo-elektrische materialen hebben deze atomen tegengestelde ladingen: \u00e9\u00e9n positief en de andere negatief. Zodra deze atomen met tegengestelde ladingen dicht bij elkaar komen, ontstaat er elektriciteit.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"693\" height=\"301\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/image-1.png\" alt=\"\" class=\"wp-image-14568\" style=\"width:611px;height:auto\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/image-1.png 693w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/image-1-300x130.png 300w\" sizes=\"auto, (max-width: 693px) 100vw, 693px\" \/><figcaption class=\"wp-element-caption\"><sup>Zomaar twee verschillende pi\u00ebzo luidspreker toepassingen<\/sup><\/figcaption><\/figure>\n\n\n\n<p><strong>De pi\u00ebzo luidspreker<\/strong><\/p>\n\n\n\n<p>Je kunt ook het tegenovergestelde doen: een elektrisch veld op pi\u00ebzo-elementen toepassen om kristalstructuren te laten uitzetten of buigen, waardoor de algehele vorm van het materiaal verandert. Wanneer je een pi\u00ebzo-luidspreker gebruikt, laat je het pi\u00ebzo-element binnenin zo snel samentrekken en uitzetten dat het trilt en geluid maakt.<\/p>\n\n\n\n<p><strong>Raspberry Pi maakt de toon<\/strong><\/p>\n\n\n\n<p>Pi\u00ebzo speakers gebruiken met de Raspberry Pi om geluiden te genereren is bijna net zo eenvoudig als&nbsp;LED&#8217;s laten knipperen. Je hebt alleen een paar dingen en een code die d.m.v. PWM de GPIO aanstuurt. Je hebt geen weerstand nodig, het pi\u00ebzo-element kan rechtstreeks aan <strong>GPIO-2<\/strong>1 aangesloten worden. Het pi\u00ebzo onderdeel kent geen polariteit.<\/p>\n\n\n\n<p>Open je favoriete editor en kopieer onderstaande code er in, sla het script op en noem het &#8216;<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">RPI_piezo.py<\/mark>&#8216;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import RPi.GPIO as GPIO   <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#importeer de GPIO bibliotheek<\/mark>\nimport time               <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#importeer de tijd bibliotheek<\/mark>\n\nclass Buzzer(object):\n <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">def __init__(self):<\/mark>\n  GPIO.setmode(GPIO.BCM)  \n  GPIO.setwarnings(False)\n \n  self.buzzer_pin = 21     <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#stel de GPIO21 (pin 40) in<\/mark>\n\n  GPIO.setup(self.buzzer_pin, GPIO.IN)\n  GPIO.setup(self.buzzer_pin, GPIO.OUT)\n  print(\"<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">buzzer ready<\/mark>\")\n\n <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">def __del__(self):<\/mark>\n  class_name = self.__class__.__name__\n  print (class_name, \"<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">finished<\/mark>\")\n\n <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">def buzz(self,pitch, duration):<\/mark>   <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#maak de functie 'buzz' en stuur de pitch en duur)<\/mark>\n \n  if(pitch==0):\n   time.sleep(duration)\n   return\n  period = 1.0 \/ pitch     <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#in de natuurkunde is de periode (sec\/cyc) het omgekeerde van de frequentie (cyc\/sec)<\/mark>\n  delay = period \/ 2     <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#bereken de tijd voor de halve periode (golf)  <\/mark>\n  cycles = int(duration * pitch)   <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#het aantal te produceren golven is de duur maal de frequentie<\/mark>\n\n  for i in range(cycles):    <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#start een lus vanaf 0 tot de hierboven berekende variabele \u201ccycli\u201d<\/mark>\n   GPIO.output(self.buzzer_pin, True)   <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#Maak pin 18 HOOG<\/mark>\n   time.sleep(delay)                    <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#Wacht op pin 18 HOOG<\/mark>\n   GPIO.output(self.buzzer_pin, False)  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#Maak pin 18 LAAG<\/mark>\n   time.sleep(delay)                    <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Wacht op pin 1<\/mark>8 LAAG<\/mark>\n\n <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">def play(self, tune):<\/mark>\n  GPIO.setmode(GPIO.BCM)\n  GPIO.setup(self.buzzer_pin, GPIO.OUT)\n  x=0\n\n  print(\"<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Playing tune <\/mark>\",tune)\n  if(tune==1):\n    pitches=&#91;262,294,330,349,392,440,494,523, 587, 659,698,784,880,988,1047]\n    duration=0.1\n    for p in pitches:\n      self.buzz(p, duration)  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#voer de toonhoogte en duur in op de functie \u201cbuzz\u201d<\/mark>\n      time.sleep(duration *0.5)\n    for p in reversed(pitches):\n      self.buzz(p, duration)\n      time.sleep(duration *0.5)\n\n  elif(tune==2):\n    pitches=&#91;262,330,392,523,1047]\n    duration=&#91;0.2,0.2,0.2,0.2,0.2,0,5]\n    for p in pitches:\n      self.buzz(p, duration&#91;x])  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#voer de toonhoogte en duur in op de functie \u201cbuzz\u201d<\/mark><\/mark>\n      time.sleep(duration&#91;x] *0.5)\n      x+=1\n  elif(tune==3):\n    pitches=&#91;392,294,0,392,294,0,392,0,392,392,392,0,1047,262]\n    duration=&#91;0.2,0.2,0.2,0.2,0.2,0.2,0.1,0.1,0.1,0.1,0.1,0.1,0.8,0.4]\n    for p in pitches:\n      self.buzz(p, duration&#91;x])  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#voer de toonhoogte en duur in op de functie \u201cbuzz\u201d<\/mark><\/mark>\n      time.sleep(duration&#91;x] *0.5)\n      x+=1\n\n  elif(tune==4):\n    pitches=&#91;1047, 988,659]\n    duration=&#91;0.1,0.1,0.2]\n    for p in pitches:\n      self.buzz(p, duration&#91;x])  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#voer de toonhoogte en duur in op de functie \u201cbuzz\u201d<\/mark><\/mark>\n      time.sleep(duration&#91;x] *0.5)\n      x+=1\n\n  elif(tune==5):\n    pitches=&#91;1047, 988,523]\n    duration=&#91;0.1,0.1,0.2]\n    for p in pitches:\n      self.buzz(p, duration&#91;x])  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">#voer de toonhoogte en duur in op de functie \u201cbuzz\u201d<\/mark><\/mark><\/mark>\n      time.sleep(duration&#91;x] *0.5)\n      x+=1\n\n  GPIO.setup(self.buzzer_pin, GPIO.IN)\n\nif __name__ == \"__main__\":\n  a = input(\"<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Enter Tune number 1-5:<\/mark> \")\n  buzzer = Buzzer()\n  buzzer.play(int(a))<\/code><\/pre>\n\n\n\n<p>Om het programma te starten geef je het commando:<\/p>\n\n\n\n<p><code>python RPi_piezo.py<\/code><\/p>\n\n\n\n<p>In het scherm verschijnt een keuzemenu. Maak je keuze en de Pi speelt een korte melodie af.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"505\" height=\"156\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/piezo_venster.png\" alt=\"\" class=\"wp-image-14570\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/piezo_venster.png 505w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/piezo_venster-300x93.png 300w\" sizes=\"auto, (max-width: 505px) 100vw, 505px\" \/><\/figure>\n\n\n\n<p><em>Have A Nice Day!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Je komt ze tegen in horloges, kaartlezers, pc\u2019s, alles dat piept bij opstart, de tweeters van je stereo-set, knuffels en nog heel veel meer toepassingen. <a class=\"mh-excerpt-more\" href=\"https:\/\/www.picademie.nl\/index.php\/2025\/02\/22\/piezo-luidspreker\/\" title=\"Pi\u00ebzo-luidspreker\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":14600,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[727,720,729],"tags":[],"class_list":["post-14564","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-beveiliging","category-displays","category-sensormodules"],"jetpack_featured_media_url":"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/Piezo3.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/14564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/comments?post=14564"}],"version-history":[{"count":0,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/14564\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media\/14600"}],"wp:attachment":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media?parent=14564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/categories?post=14564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/tags?post=14564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}