<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Koen Vervloesem - Technologieschrijver (Berichten over digispark)</title><link>https://koen.vervloesem.eu/</link><description></description><atom:link href="https://koen.vervloesem.eu/nl/tags/digispark.xml" rel="self" type="application/rss+xml"></atom:link><language>nl</language><copyright>Copyright © 2024 &lt;a href="mailto:koen@vervloesem.eu"&gt;Koen Vervloesem&lt;/a&gt; &lt;p xmlns:dct="http://purl.org/dc/terms/" xmlns:cc="http://creativecommons.org/ns#" class="license-text"&gt;Dit werk door &lt;a rel="cc:attributionURL" href="mailto:koen@vervloesem.eu"&gt;&lt;span rel="cc:attributionName"&gt;Koen Vervloesem&lt;/span&gt;&lt;/a&gt; is gelicentieerd onder &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/deed.nl"&gt;CC BY-SA 4.0&lt;img style="height:22px!important;margin-left: 3px;vertical-align:text-bottom;" src="/cc.svg" /&gt;&lt;img  style="height:22px!important;margin-left: 3px;vertical-align:text-bottom;" src="/by.svg" /&gt;&lt;img  style="height:22px!important;margin-left: 3px;vertical-align:text-bottom;" src="/sa.svg" /&gt;&lt;/a&gt; | &lt;a href="/nl/juridische-kennisgeving/"&gt;Juridische kennisgeving&lt;/a&gt; | &lt;a href="/nl/privacybeleid/"&gt;Privacybeleid&lt;/a&gt;&lt;/p&gt;</copyright><lastBuildDate>Sat, 07 Sep 2024 14:15:03 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Met microcontrollers communiceren via USB CDC</title><link>https://koen.vervloesem.eu/nl/blog/met-microcontrollers-communiceren-via-usb-cdc/</link><dc:creator>Koen Vervloesem</dc:creator><description>&lt;p&gt;Op microcontrollerbordjes zoals een Arduino, Raspberry Pi Pico of ESP32 kun je allerlei leds, knoppen en sensoren aansluiten. Veel van die bordjes hebben een ingebouwde wifi-chip, waardoor je ze op afstand kunt aansturen. Maar soms is wifi niet mogelijk, te lastig of gewoon helemaal niet nodig.&lt;/p&gt;
&lt;p&gt;Gelukkig zijn de meeste microcontrollerbordjes uitgerust met een usb-aansluiting en die kun je ook gebruiken om vanaf je computer opdrachten naar de microcontroller te sturen of informatie zoals sensordata terug te krijgen. Dat kan eenvoudig via een seriële interface over &lt;a class="reference external" href="https://en.wikipedia.org/wiki/USB_communications_device_class"&gt;USB CDC&lt;/a&gt;. Onder Windows is het apparaat dan zichtbaar als een COM-poort, onder Linux als een apparaat zoals &lt;code class="docutils literal"&gt;/dev/ttyACM0&lt;/code&gt; en onder macOS &lt;code class="docutils literal"&gt;/dev/cu.usbmodem&amp;lt;ennogiets&amp;gt;&lt;/code&gt;. Software op je computer kan dan met de microcontroller communiceren via deze COM-poort of het juiste apparaatbestand.&lt;/p&gt;
&lt;p&gt;In het artikel &lt;a class="reference external" href="https://id.nl/huis-en-entertainment/computer-en-gaming/desktops-en-monitoren/zo-breid-je-met-microcontrollers-je-computer-uit-met-extra-functies"&gt;Zo breid je met microcontrollers je computer uit met extra functies&lt;/a&gt; op id.nl beschrijf ik hoe je dit doet met &lt;a class="reference external" href="https://circuitpython.org"&gt;CircuitPython&lt;/a&gt; op een microcontrollerbordje aan de ene kant en de &lt;a class="reference external" href="https://wicg.github.io/serial/"&gt;Web Serial API&lt;/a&gt; op de computer aan de andere kant (helaas alleen ondersteund onder Chrome). Zo kun je eenvoudig een webinterface maken om een led op je via usb aangesloten microcontrollerbordje aan te sturen:&lt;/p&gt;
&lt;img alt="/images/microcontroller-usb-webpagina.png" class="align-center" src="https://koen.vervloesem.eu/images/microcontroller-usb-webpagina.png"&gt;
&lt;p&gt;Op dezelfde manier kun je in een webinterface een temperatuursensor van een microcontrollerbordje uitlezen:&lt;/p&gt;
&lt;img alt="/images/microcontroller-usb-temperature.png" class="align-center" src="https://koen.vervloesem.eu/images/microcontroller-usb-temperature.png"&gt;
&lt;p&gt;Zolang je in je seriële communicatie een eenduidig protocol definieert (1 om de led aan te doen, 0 om ze uit te doen, ...), kun je dezelfde aanpak nog op allerlei manieren uitwerken. Zo hoef je aan de kant van de microcontroller geen CircuitPython te gebruiken. Je kunt exact hetzelfde implementeren met eenvoudige Arduino-code. Ik vind de &lt;a class="reference external" href="https://koen.vervloesem.eu/blog/how-to-use-the-digispark-with-micronucleus-bootloader-in-the-arduino-ide/"&gt;Digispark&lt;/a&gt; bijvoorbeeld een handig microcontrollerbordje. Je laat het via de Arduino-bibliotheek &lt;a class="reference external" href="http://digistump.com/wiki/digispark/tutorials/digicdc"&gt;DigiCDC&lt;/a&gt; met je computer communiceren.&lt;/p&gt;
&lt;p&gt;Ook aan de computerkant zijn er talloze alternatieven voor Web Serial in de browser. Zo kun je in Python een programma schrijven dat via de bibliotheek &lt;a class="reference external" href="https://pyserial.readthedocs.io"&gt;pySerial&lt;/a&gt; met de seriële poort communiceert. Zolang je ervoor zorgt dat beide kanten hetzelfde protocol gebruiken, zijn de verschillende alternatieven uitwisselbaar. Je kunt hetzelfde microcontrollerbordje aansturen via zowel je webbrowser als een Python-programma.&lt;/p&gt;
&lt;p&gt;Ik vind USB CDC handig omdat alle grote besturingssystemen het ondersteunen zonder dat je nog speciale drivers hoeft te installeren. Ik gebruik het daarom in mijn lessen "Basis programmeren", waarin ik de studenten van het &lt;a class="reference external" href="https://www.ucll.be/nl/IOT"&gt;graduaat Internet of Things&lt;/a&gt; leer om te programmeren in Python. In de les over seriële communicatie met pySerial programmeer ik dan gewoon enkele microcontrollerbordjes met mijn CircuitPython-code en deel ze uit in de klas, waarna ik me geen zorgen hoef te maken over driverproblemen. &lt;a class="brackets" href="https://koen.vervloesem.eu/nl/blog/met-microcontrollers-communiceren-via-usb-cdc/#footnote-digispark-windows" id="footnote-reference-1" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;1&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt; Zo kan ik me focussen op het programmeren.&lt;/p&gt;
&lt;aside class="footnote-list brackets"&gt;
&lt;aside class="footnote brackets" id="footnote-digispark-windows" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://koen.vervloesem.eu/nl/blog/met-microcontrollers-communiceren-via-usb-cdc/#footnote-reference-1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;Oorspronkelijk wilde ik dat doen met de Digispark, maar dit bordje heeft onder Windows drivers nodig, die niet voor recente Windows-versies bestaan.&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;</description><category>arduino</category><category>circuitpython</category><category>digispark</category><category>iot</category><category>programmeren</category><category>python</category><category>usb</category><category>usb-cdc</category><category>webserial</category><guid>https://koen.vervloesem.eu/nl/blog/met-microcontrollers-communiceren-via-usb-cdc/</guid><pubDate>Sun, 24 Sep 2023 10:11:39 GMT</pubDate></item></channel></rss>