<?xml version='1.0' encoding='UTF-8'?>
 <rss version='2.0'>
 <channel>
 <title>marcelv.net | RSS</title>
 <link>/</link>
 <description>Marcelv's RSS-Feed</description>
 <language>nl</language><item>
   <title>Speedgrader voor Firefox</title>
   <link>index.php?w=app&amp;id=359</link>
   <description>Ik heb een kleine add-on gebouwd die mij helpt tijdens assessmentgesprekken met studenten. Geen gedoe meer met achteraf alles terughalen of halfbakken aantekeningen.
Hoe ik ’m gebruik:&lt;ul&gt;&lt;li data-section-id=&quot;1x8f64b&quot;&gt;Tijdens het gesprek heb ik Portflow open met het portfolio van de student&lt;/li&gt;&lt;li data-section-id=&quot;1hwz4ro&quot;&gt;De add-on staat ernaast in beeld&lt;/li&gt;&lt;li data-section-id=&quot;1qamlqp&quot;&gt;Geef ik feedback? Dan druk ik op opnemen&lt;/li&gt;&lt;li data-section-id=&quot;17s9sm8&quot;&gt;Mijn gesproken feedback wordt direct omgezet naar tekst&lt;/li&gt;&lt;/ul&gt;Na het gesprek laat ik die ruwe aantekeningen door AI netjes uitwerken tot een lopende tekst. Die plak ik in SpeedGrader en pas ik eventueel nog iets aan.

Resultaat: de student heeft meteen na het gesprek zijn feedback in Canvas staan. Geen vertraging, geen interpretatiefouten achteraf.

&lt;b&gt;Download&lt;/b&gt;
Vanaf &lt;a href=&quot;https://argumentor.nl/addon&quot; target=&quot;_blank&quot;&gt;deze site&lt;/a&gt;.</description>
   <pubDate>Wed, 18 Mar 2026 00:00:00 +0100</pubDate>
   </item><item>
   <title>Buitentemperatuurkastje</title>
   <link>index.php?w=apparaat&amp;id=357</link>
   <description>Dit kastje haalt elke 10 minuten de buitentemperatuur op, van de site van Open Meteo. Je kunt daar namelijk gratis alle data ophalen zoals  een JSON waar de temperatuur van jouw eigen locatie in staat.

&lt;img src=&quot;data/db357_tempmeter.jpg&quot; class=&quot;w3-image&quot; /&gt;

&lt;b&gt;Benodigdheden&lt;/b&gt;
&lt;a href=&quot;https://makerparts.nl/product/d1-mini-esp32&quot;&gt;D1 Mini ESP32&lt;/a&gt;
&lt;a href=&quot;https://makerparts.nl/product/tft-display-18&quot; target=&quot;_blank&quot;&gt;TFT Display 1.8 inch&lt;/a&gt;

&lt;b&gt;Code&lt;/b&gt;
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-cpp&quot;&gt;#include &lt;U8g2lib.h&gt;
#include &lt;HTTPClient.h&gt;
#include &lt;ArduinoJson.h&gt;
#include &lt;WiFi.h&gt;

// Pin-definities
#define TFT_CS   26
#define TFT_DC   19
#define TFT_RST  16
#define TFT_SCLK 18
#define TFT_SDA  23

#define SSID &quot;Wifi&quot;
#define PASS &quot;Wifi Wachtwoord&quot;

U8G2_SSD1309_128X64_NONAME0_F_4W_SW_SPI OLED(U8G2_R0, /* clock=*/TFT_SCLK, /* data=*/ TFT_SDA, /* cs=*/ TFT_CS, /* dc=*/ TFT_DC, /* reset=*/ TFT_RST);

void setup() {
 Serial.begin(115200);
 OLED.begin();
 OLED.clearBuffer(); 
 OLED.setFont(u8g2_font_spleen32x64_mf);

 WiFi.begin(SSID,PASS);
 while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(&quot;.&quot;);
 }
 Serial.println(&quot;WiFi verbonden&quot;);

 // Display update
 OLED.clearBuffer();
 OLED.drawStr(0, 8, &quot;WiFi verbonden&quot;);
 OLED.sendBuffer();
}

void loop() {
 const char* url =
 &quot;https://api.open-meteo.com/v1/forecast&quot;
 &quot;?latitude=51.53&quot; // Wellerlooi
 &quot;&amp;longitude=6.08&quot;
 &quot;&amp;t_weather=true&quot;;

 static int PrevTemp=-100;
 String temp2=&quot;&quot;;
 float temp;

 if(WiFi.status() == WL_CONNECTED) {
  HTTPClient http;
  http.begin(url);

  int code = http.GET();
  if(code == 200) {
   String payload = http.getString();

   StaticJsonDocument&lt;512&gt; doc;
   DeserializationError err = deserializeJson(doc, payload);
   if(!err) {
    temp = doc[&quot;current_weather&quot;][&quot;temperature&quot;];
    Serial.print(&quot;Temperatuur Wellerlooi: &quot;);
    Serial.print(temp);
    Serial.println(&quot; C&quot;);    
    int x=random(3);
    if(temp&lt;10) x=random(4)+18; // Soort van centreren
    temp2 = String((int)round(temp))+String((char)176)+&quot;C&quot;; // 176 = graden-symbool (klein nulletje)

    if(round(temp)!=PrevTemp) {
     // Tegen inbranden
     OLED.clearBuffer();
     PrevTemp=temp;
     OLED.drawStr(x,50,temp2.c_str());
     OLED.sendBuffer();
     delay(10000);
    }
   }
  }

  http.end();

  long t=millis();
  // Paar technieken om inbranden te voorkomen (andere x en af en toe even uit):
  while(millis()-t&lt;6000 * 10 ) { // elke 10 minuten  
   if(t%12000==0){    
    OLED.clearBuffer();
    OLED.sendBuffer();
    delay(300);
    OLED.clearBuffer();  
    int x=random(3); 
    if(temp&lt;10) x=20; 
    OLED.drawStr(x,50,temp2.c_str());
    OLED.sendBuffer();
    delay(10000); 
   }
  }
 }
 delay(30000);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=data/db357_RetrotempKastje.scad&gt;Behuizing&lt;/a&gt; (zelf 3d-printen)</description>
   <pubDate>Wed, 24 Dec 2025 00:00:00 +0100</pubDate>
   </item><item>
   <title>Openscad thumbnails in Nemo</title>
   <link>index.php?w=script&amp;id=356</link>
   <description>&lt;img src=&quot;data/db356_nemo.jpg&quot; class=&quot;w3-image&quot; /&gt;

Je hebt verder alleen OpenScad als executable nodig ergens op je systeem. Je moet 2 bestanden aanmaken: 1x een &lt;b&gt;&lt;tt&gt;thumbnailer&lt;/tt&gt;&lt;/b&gt;-bestand in &lt;b&gt;&lt;tt&gt;~/local/share/thumbnailers&lt;/tt&gt;&lt;/b&gt; en 1x een Bash-Script die op verzoek van Nemo OpenScad opstart (onzichtbaar) om te renderen.

Sla het bestand &lt;b&gt;&lt;tt&gt;openscad.thumbnailer&lt;/tt&gt;&lt;/b&gt; op in &lt;b&gt;&lt;tt&gt;~/.local/share/thumbnailers&lt;/tt&gt;&lt;/b&gt; (maak pad aan indien niet bestaat).
Inhoud van het bestand &lt;b&gt;&lt;tt&gt;openscad.thumbnailer&lt;/tt&gt;&lt;/b&gt;:
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;[Thumbnailer Entry]
TryExec=/home/marcel/Applications/OpenSCAD.AppImage
Exec=/home/marcel/openscad-thumbnailer %i %o
MimeType=application/x-openscad;model/stl;&lt;/code&gt;&lt;/pre&gt;Dit bestand verwijst naar de OpenScad-executable: hij gebruikt dat alleen om te kijken of die exe er is, zo niet dan weet Nemo dat hij niets hoeft te doen (maar dan werkt het dus niet).

Maak het bestand &lt;b&gt;&lt;tt&gt;openscad-thumbnailer&lt;/tt&gt;&lt;/b&gt; en sla het op in je home-folder (merk op dat /home/marcel mijn home-folder is, zie het script hierboven). Dit bestand gebruikt de OpenScad-executable ook (om alles te renderen).
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/bin/bash
in=&quot;$1&quot;
out=&quot;$2&quot;

openscad=&quot;/home/marcel/Applications/OpenSCAD.AppImage&quot;

tmp_scad=&quot;&quot;

case &quot;${in##*.}&quot; in
 stl|STL)
  tmp_scad=&quot;$(mktemp --suffix=.scad)&quot;
  cat &gt; &quot;$tmp_scad&quot; &lt;&lt;EOF
\$fn=64;
color([0.2,0.6,0.9,1.0])
import(&quot;$in&quot;);
EOF
  src=&quot;$tmp_scad&quot;
  ;;
 *)
  src=&quot;$in&quot;
  ;;
esac

&quot;$openscad&quot; \
 --imgsize=196,196 \
 --export-format png \
 --preview \
 -o &quot;$out&quot; \
 &quot;$src&quot;

ret=$?

[ -n &quot;$tmp_scad&quot; ] &amp;&amp; rm -f &quot;$tmp_scad&quot;

exit $ret
&lt;/code&gt;&lt;/pre&gt;Als het niet werkt even checken of het MimeType in &lt;b&gt;&lt;tt&gt;openscad.thumbnailer&lt;/tt&gt;&lt;/b&gt; wel klopt. Test dit met: &lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;xdg-mime query filetype test.scad
&lt;/code&gt;&lt;/pre&gt; waarbij &lt;b&gt;&lt;tt&gt;test.scad&lt;/tt&gt;&lt;/b&gt; een willekeurig OpenScad-bestand is.</description>
   <pubDate>Wed, 24 Dec 2025 00:00:00 +0100</pubDate>
   </item><item>
   <title>Ome-Joop-ik-moet-plassen-detector</title>
   <link>index.php?w=apparaat&amp;id=355</link>
   <description>Midden in de nacht moet de hond soms plassen. Dat is vervelend want omdat wij &#039;s nachts slapen ligt er dan in de ochtend een verrassing voor ons. En dat stinkt behoorlijk.

Het zou fijn zijn als de hond even blaft zodat wij wakker worden maar dat doet onze hond niet. Hij gaat netjes voor de buitendeur staan - klaar om naar buiten te gaan - en wacht geduldig tot iemand de deur voor hem open doet. Niemand die dat doet want iedereen is aan het slapen, het is midden in de nacht.

De Ome-Joop-ik-moet-plassen-detector is een apparaat met een ToF-lasersensor die detecteert als er een hond voor de deur staat. Op het nachtkastje wordt dit een audiobestand afgespeeld:&lt;audio controls preload=&quot;metadata&quot;&gt;
 &lt;source src=&quot;data/db355_ikmoet2.ogg&quot; type=&quot;audio/ogg&quot;&gt;
 Je browser ondersteunt geen OGG-audio.
&lt;/audio&gt;

Gevolg: ik wordt wakker en kan naar beneden lopen om de deur voor de hond open te doen. Eindresultaat: hond heeft geplast, geen troep binnen en ik heb slecht geslapen. 

&lt;b&gt;Techniek&lt;/b&gt;
D1 Mini met Honddetector en D1 Mini met Adafruit Soundboard (soort MP3-speler met geluidsbestanden in flash en ingebouwde eindversterker) voor het afspelen van Liesje.  

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db355_honddetector.ino&quot;&gt;D1 Mini sketch&lt;/a&gt;

Voetnoot: ik kwam er achter dat veel (jonge) mensen Ome Joop niet kennen. En dus kennen ze ook Liesje, de dochter van Harry Nak niet. Dat is jammer want dan snap je de humor niet. Zie &lt;a href=&quot;https://nl.wikipedia.org/wiki/Dik_Voormekaar_Show_(radioprogramma)&quot; target=&quot;_blank&quot;&gt;WikiPedia&lt;/a&gt; waar dat vandaan komt. En op Youtube kun je de bijbehorende &lt;a href=&quot;https://www.youtube.com/watch?v=_zOUqMOOfOA&quot; target=&quot;_blank&quot;&gt;Carnavalskraker&lt;/a&gt; beluisteren.</description>
   <pubDate>Wed, 17 Dec 2025 00:00:00 +0100</pubDate>
   </item><item>
   <title>Whats Chat</title>
   <link>index.php?w=script&amp;id=354</link>
   <description>Dit script laat ChatGPT er een beetje uitzien als WhatsApp (Websversie). Zo ziet het er dan uit:

&lt;img src=&quot;/data/db354_WhatsChat.png&quot; class=&quot;w3-image&quot; /&gt;

&lt;b&gt;Download script:&lt;/b&gt;
&lt;a href=&quot;data/db354_chatgpt2.user.js&quot; target=&quot;_blank&quot;&gt;chatgpt.user.js&lt;/a&gt;

</description>
   <pubDate>Thu, 13 Nov 2025 00:00:00 +0100</pubDate>
   </item><item>
   <title>Vind indie-makers op YouTube</title>
   <link>index.php?w=app&amp;id=353</link>
   <description>Het is superlastig om op YoutTube filmpjes te vinden van echte hobbyisten. Als ik zoek op “Arduino project” of “3D print experiment” krijgt ik allerlei gelikte filmpjes met geluidsdesign, thumbnails vol emojis en perfecte montage. Maar de kleine, eerlijke video’s - die van makers die een slim apparaat maken of een leuk exergame verzinnen - verdwijnen volledig uit beeld.

YouTube optimaliseert voor kijktijd en engagement, niet voor authenticiteit. Grote kanalen krijgen meer zichtbaarheid, waardoor ze nóg meer bekeken worden.  Maar ik wil wilde juist de echte makers zien: de mensen die nog prutsen, falen en leren, gewoon in hun eigen workshop thuis.

&lt;b&gt;De oplossing: mijn eigen YouTube-zoekmachine&lt;/b&gt;
Omdat de API (aangeboden door Google zelf - ha ha!) de ruwe data wél levert (inclusief view-counts), kun je die lokaal sorteren.
Ik schreef eerst een Python-script en nu een PHP-versie voor gebruik in de browser.
Het principe is simpel: de YouTube Data API v3 zoekt video’s op trefwoord. De API-respons bevat het aantal views, publicatiedatum en kanaalnaam.
Ik sorteer alles lokaal op aantal views (laag → hoog).

Optioneel kun je filteren op leeftijd of maximaal aantal views.

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db353_ytzoek.php.txt&quot; target=&quot;_blank&quot;&gt;Broncode&lt;/a&gt; (PHP-bestand, haal .txt weg en zet op server)


</description>
   <pubDate>Fri, 24 Oct 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>Calorie-display</title>
   <link>index.php?w=apparaat&amp;id=352</link>
   <description>Dit display toont continue het aantal calorieën dat ik tot nu toe die dag heb gegeten. Elke keer als ik iets eet - hoe klein ook - verhoogt de teller automatisch.

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db352_3D.zip&quot; target=&quot;_blank&quot;&gt;3D-bestanden&lt;/a&gt; (fotoframe, broccoli en wortel)
&lt;a href=&quot;data/db352_sketch.ino&quot; target=&quot;_blank&quot;&gt;Arduino-code&lt;/a&gt;

De Arduino-code is voor een &lt;a href=&quot;https://www.hackerstore.nl/Artikel/1039&quot;&gt;D1 Mini&lt;/a&gt;.</description>
   <pubDate>Wed, 01 Oct 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>NutriSense v5</title>
   <link>index.php?w=apparaat&amp;id=351</link>
   <description>&lt;b&gt;Wat doet dit apparaat?&lt;/b&gt; 
Als je dit blog niet helemaal hebt gevolgd: lees dan eerst &lt;a href=&quot;index.php?w=apparaat&amp;id=341&quot; target=&quot;_blank&quot;&gt;hier&lt;/a&gt; wat de NutriSense is.

Ik ben vaak bezig met mijn project NutriSense. Dit is nu al versie 5 van het apparaat. Het voelt goed om grip te krijgen op mijn gezondheid en leefstijl, en dit apparaat helpt me daarbij. De NutriSense houdt precies bij wat ik eet en daarmee weet hij ook hoeveel calorieën en eiwitten ik per tijdstip van de dag binnenkrijg. Tabellen laten zien hoeveel calorieën ik in de ochtend, middag en avond eet. Maar dat is nog maar het begin. 

In dezelfde database komt ook mijn &lt;a href=&quot;index.php?w=apparaat&amp;id=350&quot; target=&quot;_blank&quot;&gt;slaap&lt;/a&gt; terecht, zodat ik kan terugzien hoe goed ik uitgerust ben, én ik sla er mijn bloeddrukmetingen in op. Zo ontstaat er een compleet beeld van mijn dagelijkse patronen. Met elke meting krijg ik meer inzicht: ik ontdek verbanden, herken patronen en kan bewuster keuzes maken. Er is ook een scherm om handmatig de bloeddruk (boven-, onderdruk en hartslag) in te voeren zodat ik die gegevens kan gebruiken om verbanden tussen voeding, slaap en bloeddruk te vinden.

&lt;b&gt;Spelen&lt;/b&gt;
De NutriSense is niet alleen een hulpmiddel is om data te verzamelen, maar het geeft een stukje &lt;i&gt;playfulness&lt;/i&gt; aan mijn dagelijks leven. Het scannen van een tag en meteen op het display zien hoeveel calorieën ik eet, voelt licht en speels, alsof ik een klein spelletje speel met mezelf. Dat maakt het makkelijker om vol te houden dan wanneer het alleen om cijfers en verplichtingen zou gaan.

&lt;b&gt;“Nee dank je, daar heb ik geen tag voor.”&lt;/b&gt;
De NutriSense helpt me om “nee” te zeggen wanneer iemand mij iets ongezonds aanbiedt. Ik kan eenvoudig antwoorden: “Daar heb ik geen tag van.” Dat klinkt luchtig en speels, maar het geeft me tegelijk een duidelijke grens. Zo werkt hij als een extra hulp bij het trouw blijven aan mijn eigen leefstijl.

&lt;b&gt;Versie 5&lt;/b&gt;
Alle kleine terkortkomingen van de vorige 4 versies van dit apparaat zijn verbeterd in versie 5. Onder meer en onder andere:
- Het display toont aantal calorieën van de dagdelen ochtend, lunch, avond en het totaal. 
- Display toont nu ook aantal eiwitten.
- Display toont aantal uren slaap van die dag.
- Bij het scannen van de tags toont hij rechtsboven het aantal calorieën van die maaltijd. Dit is superhandig want soms klik ik toch maar op de Cancel-knop als ik te veel denk te eten.
- Nieuwe gerechten toevoegen gaat simpel: maak een nieuwe tag (ik heb een stapeltje lege tags klaar liggen), scan hem en edit de database.
- Tags zijn helemaal vernieuwd en lekker groot met een afbeelding zodat ik niet per se de leesbril hoef op te zetten om te scannen.
- De syncknop die &lt;a href=&quot;index.php?w=apparaat&amp;id=345&quot; target=&quot;_blank&quot;&gt;versie 3&lt;/a&gt; nog had is vervangen door een tag. 
- De kast is wat meer stijlvoller (galaxy black met een frontplaat in marmerkleur).
- LCD backlight gaat na een tijdje automatisch uit zodat het midden in de nacht niet meer zo&#039;n fel licht is in de keuken.

&lt;b&gt;Foto&#039;s&lt;/b&gt;
In de linkerkantlijn zie je een paar foto&#039;s van dit apparaat:
- Foto van de &lt;a href=&quot;data/db351_Binnenkant.jpg&quot; target=&quot;_blank&quot;&gt;binnenkant&lt;/a&gt; met alle onderdelen zoals het grote LCD, Arduino R4 Wifi, RFID tagreader, schakelaars en buzzer.
- Ontwerp van de nieuwe &lt;a href=&quot;data/db351_Tags.jpg&quot; target=&quot;_blank&quot;&gt;tags&lt;/a&gt;. Deze kun je hier onder ook als PDF downloaden.
- De nieuwe tags in een compacte &lt;a href=&quot;data/db351_tags.jpg&quot; target=&quot;_blank&quot;&gt;taghouder&lt;/a&gt;.
- Een schermafdruk van het &lt;a href=&quot;data/db351_stats.jpg&quot; target=&quot;_blank&quot;&gt;backendsysteem&lt;/a&gt; (database). 

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db351_nutrisense-v5.ino&quot; target=&quot;_blank&quot;&gt;Code voor Arduino R4 Wifi&lt;/a&gt; 
&lt;a href=&quot;data/db351_Tags.pdf&quot; target=&quot;_blank&quot;&gt;Tags in PDF-formaat&lt;/a&gt;
&lt;a href=&quot;data/db351_Nutrisense-v5.scad&quot; target=&quot;_blank&quot;&gt;Behuizing (OpenScad) om te 3d-printen&lt;/a&gt;</description>
   <pubDate>Thu, 18 Sep 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>SlaapTracker II</title>
   <link>index.php?w=apparaat&amp;id=350</link>
   <description>De &lt;a href=&quot;index.php?w=apparaat&amp;id=348&quot; target=&quot;_blank&quot;&gt;Slaaptracker&lt;/a&gt; werkt goed: hij trackt mijn slaap. Maar hij moet toch anders. Na een dikke week in gebruik te zijn geweest kwam het volgende probleem boven:
Ik heb met een apparaat nu licht (de knoppen lichten op) in de slaapkamer gebracht, dat wil ik niet, het moet donker zijn. Ook al is het licht minimaal door de &lt;tt&gt;analogWrite()&lt;/tt&gt;, het is altijd te veel.

&lt;b&gt;Nieuwe schakelfunctie&lt;/b&gt;
De schakelaars moeten verschillende tactiliteit hebben: ze mogen niet op elkaar lijken, ze moeten anders aanvoelen. Dit moet omdat ze bij deze nieuwe versie van de tracker niet goed zichtbaar zijn in het donker.

Ik kies voor een wipwap-schakelaar en een drukknop. De drukknop klik je als je gaat slapen en de wipwap als je wakker wordt. Een LEDje knippert (gaat daarna weer uit zodat het donker blijft) om aan te geven dat de slaaptracking gestart/gestopt is.

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db350_slaap.ino&quot; target=&quot;_blank&quot;&gt;D1 Mini Arduinocode&lt;/a&gt;
&lt;a href=&quot;data/db350_SleepTrackerII.scad&quot; target=&quot;_blank&quot;&gt;Behuizing (Openscad)&lt;/a&gt;</description>
   <pubDate>Sat, 30 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>3D-Print Models</title>
   <link>index.php?w=app&amp;id=349</link>
   <description> Hoe krijg je in beeld wat je hebt?

Met 3D-Print Models. Een lokaal draaiende website waar je al je modellen mee kunt bekijken. Zoeken, alle modellen van een folder laden (zelfs recursief), enz. Elk bestaand OpenScad-, STL- of 3MF-bestand op je harde schijf wordt automatisch omgezet in een afbeelding. Extra mooi: als je er een keer een foto van hebt gemaakt dan wordt die foto getoond.

Handig: elke afbeelding heeft knoppen om het bestand meteen te slicen in Prusa Slicer of om het te openen in OpenScad.

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db349_source.zip&quot; target=&quot;_blank&quot;&gt;Broncode&lt;/a&gt; (PHP)</description>
   <pubDate>Fri, 29 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>De Slaaptracker</title>
   <link>index.php?w=apparaat&amp;id=348</link>
   <description>Inzicht in het slapen:
Als ik te veel eet, komt dat dan door te weinig slaap?
Welke producten eet ik als ik goed slaap, of als ik slecht slaap?
Hoe lang slaap ik eigenlijk met al die dutjes erbij opgeteld?

De Slaaptracker heeft de simpelse UX: druk knop als je je leesboek voor het slapen gaan dichtklapt en druk de andere knop zodra je weer wakker bent. Hij logt verder je hele slaap, in dezelfde database als de &lt;a href=&quot;/index.php?w=apparaat&amp;id=344&quot; target=&quot;_blank&quot;&gt;NutriSense&lt;/a&gt; zodat je de slaapdata kunt vergelijken met je eetgedrag.

&lt;a href=&quot;data/db348_sleepsense.ino&quot; target=&quot;_blank&quot;&gt;Arduinocode&lt;/a&gt; (voor D1 Mini)
&lt;a href=&quot;data/db348_sleepsense.zip&quot; target=&quot;_blank&quot;&gt;Broncode&lt;/a&gt; (OpenScadbestand voor behuizing en PHP-pagina&#039;s voor op de server)</description>
   <pubDate>Sun, 24 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>De Calorieënteller</title>
   <link>index.php?w=apparaat&amp;id=347</link>
   <description>Dit apparaat laat per dagdeel het aantal calorieën zien alsmede het totaal aantal calorieën van vandaag tot nu toe. En hij laat het aantal eiwitten (in gram) zien dat ik tot nu toe heb gegegeten.

Dankzij de &lt;a href=&quot;/index.php?w=apparaat&amp;id=344&quot; target=&quot;_blank&quot;&gt;NutriSense&lt;/a&gt; kan dit apparaat werken. Ik had alleen een PHP-bestand nodig voor op de NutriSense webserver en een Pythonscript voor op de Pimoroni Presto dat ik gebuik als display. Als ik nu &#039;s avonds een serie aan het kijken ben op de tv dan check ik even dit schermpje of het OK is om nog wat te snacken of niet: vandaag niet, denk ik. Had ik vanmorgen maar niet zoveel moeten eten.

&lt;b&gt;Download code&lt;/b&gt;
&lt;a href=&quot;data/db347_presto.php.zip&quot; target=&quot;_blank&quot;&gt;PHP-bestand&lt;/a&gt; (met een interessante SQL-query)
&lt;a href=&quot;data/db347_nutrisens.py&quot; target=&quot;_blank&quot;&gt;CircuitPython bestand voor het display&lt;/a&gt;

&lt;b&gt;Nieuwe versie&lt;/b&gt;
Na 2 weken gebruik een nieuwe versie gemaakt. Deze versie heeft een mooiere en betere UI (bovenste foto) en je kunt een update forceren door het scherm met je vinger aan te raken.
&lt;a href=&quot;data/db347_main.py&quot; target=&quot;_blank&quot;&gt;CircuitPython bestand&lt;/a&gt;</description>
   <pubDate>Wed, 20 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>Hangend systeem bij printen</title>
   <link>index.php?w=tip&amp;id=346</link>
   <description>Lang gezocht op internet (niet gevonden) en uiteindelijk na veel testen samen met ChatGPT gevonden: oplossing voor het probleem van hangend systeem elke keer als ik met Linux Mint iets print. Cinnamon hangt volledig, via een terminal zoals Ctrl-Alt-F1 werkt alles wel.

Volgens ChatGPT is de oorzaak dan dat het proces &lt;b&gt;cups-browsed&lt;/b&gt; (zorgt voor automatische netwerkprinter-detectie) Cinnamon laat vastlopen. 
Je kunt het permanent uitschakelen met systemd.

&lt;b&gt;Eenmalig stoppen (om te testen of dit inderdaad het probleem is)&lt;/b&gt;
&lt;pre class=&quot;line-numbders&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl stop cups-browsed&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;Permanent uitschakelen&lt;/b&gt;
Dat heb ik dus gedaan: &lt;pre class=&quot;line-numdbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl disable cups-browsed&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;line-numbders&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl mask cups-browsed&lt;/code&gt;&lt;/pre&gt;Uitleg: 
disable → voorkomt dat de service bij boot start.
mask → zorgt dat de service helemaal niet meer kan worden gestart (ook niet per ongeluk als dependency).

Als je later toch weer netwerkprinter-detectie wilt, dan kun je hem terugzetten met:
&lt;pre class=&quot;line-nudmbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl unmask cups-browsed&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;line-nudmbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl enable --now cups-browsed&lt;/code&gt;&lt;/pre&gt;</description>
   <pubDate>Sat, 16 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>NutriSense v3</title>
   <link>index.php?w=apparaat&amp;id=345</link>
   <description>Versie 3 van mijn NutriSense was nodig toen bleek dat ik altijd dezelfde portiegroottes eet. De weegschaal is niet meer nodig. Ik eet altijd een kom aardappelen, 200 gram groenten, enz.

Verdere verbeteringen:
- Extra groot LCD: 4 regels van 20 karakters. 
- Tiptoetsbediening. Zo is de kast makkelijk schoon te houden, is handig in de keuken.
- Je kunt nu een hele maaltijd scannen als een batch en dan de OK-knop aanraken om je hele maaltijd in een keer naar de server te uploaden. 
- Hij heeft lokaal de hele productentabel in EEPROM staan zodat hij geen roundtrip naar de server hoeft te doen als je iets scant.
- De kaartjes (RFID-tags) zijn ook verbeterd: elk kaartje toont het aantal calorieën en heeft linksboven een soort nutricscore: voedsel met een lage &lt;a href=&quot;https://www.forksoverknives.com/wellness/calorie-density-key-weight-loss/&quot; target=&quot;_blank&quot;&gt;caloriedichtheid&lt;/a&gt; is groen, overig voedsel oranje.
- Hij toont op het LCD niet alleen het totaal aantal calorieën van vandaag maar tevens het aantal calorieen van je laatste maaltijd.

Die laatste verbetering was leuk want ik wilde de database niet wijzigen (zodat v1 en v2 van de NutriSense nog steeds blijven werken) en daarom schreef ik onderstaande SQL query die bepaald wat de laatste maaltijd is die je hebt gegeten. In de PHP-code staat die in het bestand &lt;b&gt;&lt;tt&gt;maaltijd.php&lt;/tt&gt;&lt;/b&gt;.
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;WITH todays AS (
  SELECT *
  FROM logboek
  WHERE date(datumtijd) = date(&#039;now&#039;)
  ORDER BY datumtijd
),
gaps AS (
  SELECT *,
         CASE
           WHEN LAG(datumtijd) OVER (ORDER BY datumtijd) IS NULL THEN 1
           WHEN strftime(&#039;%s&#039;, datumtijd) - strftime(&#039;%s&#039;, LAG(datumtijd) OVER (ORDER BY datumtijd)) &gt; 900 THEN 1
           ELSE 0
         END AS is_new_group
  FROM todays
),
grp AS (
  SELECT *,
         SUM(is_new_group) OVER (ORDER BY datumtijd ROWS UNBOUNDED PRECEDING) AS gid
  FROM gaps
),
last_gid AS (
  SELECT gid
  FROM grp
  ORDER BY datumtijd DESC
  LIMIT 1
)
SELECT SUM(kcal) AS totaal_kcal
FROM grp
WHERE gid = (SELECT gid FROM last_gid);&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db345_arduino.ino&quot; target=&quot;_blank&quot;&gt;Code&lt;/a&gt; (voor Arduino R4 WiFi)
&lt;a href=&quot;data/db345_nutrisense.zip&quot; target=&quot;_blank&quot;&gt;Webserver&lt;/a&gt; (PHP-code en database)
&lt;a href=&quot;data/db345_Nutrisense-geenweeg-R4.scad&quot; target=&quot;_blank&quot;&gt;Behuizing&lt;/a&gt; (OpenScad)

&lt;b&gt;Wat kan ik hier nu mee?&lt;/b&gt;
Voor toekomstige projecten kan ik nu op mijn data analyses of machine learning algoritmiek loslaten zodat ik bijvoorbeeld het volgende krijg:
&lt;b&gt;Maaltijdanalyse&lt;/b&gt;: berekenen hoeveel een ontbijt/lunch/diner gemiddeld bijdraagt aan het dagtotaal.
&lt;b&gt;Waarschuwingen&lt;/b&gt;: melding op mijn telefoon als mijn maaltijd &lt;300 kcal is (te licht) of &gt;1100 kcal (te zwaar).
&lt;b&gt;Tijdsanalyse&lt;/b&gt;: welke tijden van de dag je het meest eet (bijv. avond-snacks). Of ik maak een grafiek met aantal calorieen op Y-as en tijd van de dag op X-as.
&lt;b&gt;Gewichtsmanagement&lt;/b&gt;: combineer kcal-inname met mijn streefgewicht en laat een AI tips geven wat ik dan meer/minder moet eten a.d.h.v caloriedichtheden.
&lt;b&gt;Mood-tracking-koppeling&lt;/b&gt;: noteren hoe ik me voel (moet ik dan ook een apparaat voor maken!) en dan kijken of voeding invloed heeft. Hetzelfde kan ik doen met slapen, als ik slecht/goed slaap wat is dan de relatie met mijn voeding?
&lt;b&gt;Machine learning&lt;/b&gt;: voorspellen wat ik waarschijnlijk bij mijn volgende maaltijd zal gaan eten.</description>
   <pubDate>Wed, 13 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>De NutriSense versie 2</title>
   <link>index.php?w=apparaat&amp;id=344</link>
   <description>Dit is versie 2, een verbeterde versie van de &lt;a href=&quot;index.php?w=apparaat&amp;id=341&quot; target=&quot;_blank&quot;&gt;NutriSense&lt;/a&gt;: een apparaat waar ik mee kan bijhouden wat ik elke dag eet. 

&lt;b&gt;Verbeteringen&lt;/b&gt;
- Een 16x2 LCD-scherm i.p.v. matrix - kan meer tekst tegelijk laten zien.
- Systeem toont duidelijker het gescande product in beeld - voorkomt vergissingen.
- Hij heeft een buzzer dat een piepje geeft bij een scan ter confirmatie.
- Buzzer geeft een irritante pieptoon als de server niet bereikbaar is. Zodat je weet dat hij niets heeft opgeslagen.
- Eventuele foutmeldingen m.b.t. de database worden getoond op LCD.
- Mooier weegschaalplatform (zonder zichtbare schroeven).
- Kleinere behuizing maar wel mooier doordat de teksten zijn geprint. Gedaan met de Prusa XL.
- Views voor overzicht per dag en totaal calorieën per dag.

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db344_v2.ino&quot; target=&quot;_blank&quot;&gt;Code&lt;/a&gt;
&lt;a href=&quot;https://marcelv.net/data/db341_schema.jpg&quot; target=&quot;_blank&quot;&gt;Schema&lt;/a&gt;

Eet smakelijk!

&lt;b&gt;Versie 3&lt;/b&gt;
Voor de toekomstige versie 3 denk ik aan een light-systeem zonder weegschaal. Het blijkt dat ik in de praktijk altijd porties eet die even groot zijn dus zou ik ook een systeem kunnen maken waarbij ik alleen maar een tag hoef te scannen (en niets meer hoef te wegen) - zo wordt het nog sneller allemaal!</description>
   <pubDate>Wed, 13 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>Soldeertinhouder</title>
   <link>index.php?w=3dontwerp&amp;id=343</link>
   <description>Dit is een verticale soldeertinhouder waardoor het afrollen van het tin makkelijker gaat. De houder zit stevig met 2 schroeven vast aan de kast waar ook de soldeerbout staat. Nooit meer last van labiele omvallende soldeertinhouders!</description>
   <pubDate>Mon, 11 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>Hue Schakelkastje</title>
   <link>index.php?w=apparaat&amp;id=342</link>
   <description>Op mijn bureau staat nu een nieuwe versie van de &lt;a href=&quot;/index.php?w=apparaat&amp;id=327&quot; target=&quot;_blank&quot;&gt;hoofdbediening&lt;/a&gt;. Ik heb veel apparaten die al dan niet automatisch aan- en uitgaan middels het 433MHz klik-aan-klik-uit-protocol maar ben die nu langzaam aan het vervangen door Philips Hue-schakelaars (werken stabieler). Zelfs mijn 3D-printers worden met Hue bestuurd (zie derde afbeelding).

Dit apparaatje gebruik ik om alles aan/uit te zetten vanuit de computerwerkhoek. Als ik even wegloop dan zet ik altijd een netwerkswitch, de monitor+geluid uit en ook heb ik een grote TL-balk die ik aan kan doen als ik moet solderen of een ander preciesie werkje moet doen.

Bekijk de broncode om te zien hoe simple Hue werkt.

&lt;b&gt;Download&lt;/b&gt;
&lt;a href=&quot;data/db342_Hue.ino&quot; target=&quot;_blank&quot;&gt;Broncode&lt;/a&gt; (bevat tevens info hoe alles aan te sluiten)
&lt;a href=&quot;data/db342_zopenscad.scad&quot; target=&quot;_blank&quot;&gt;Behuizing&lt;/a&gt; (OpenScad)</description>
   <pubDate>Mon, 11 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>De NutriSense - een eetdagboek</title>
   <link>index.php?w=apparaat&amp;id=341</link>
   <description>&lt;div class=&#039;klikbaar&#039;&gt;Mensen die letten op hun dieet - zoals ik - houden soms een eetdagboek bij. Ze schrijven gedurende de hele dag op wat ze eten zodat ze inzicht krijgen in bijvoorbeeld het aantal calorieën dat ze binnenkrijgen. Maar dat is veel werk. Zelfs met een &#039;handige&#039; app is het een administrafief rotklusje. Op de afbeelding hieronder zie je hoe ik dat deed: ik gebruikte een spreadsheet waar ik alles wat ik at in noteerde.

Nu is er de &lt;b&gt;NutriSense&lt;/b&gt;. Ik gebruik dit apparaat nu als eetdagboek. Volledig automatisch. Ik scan een tag en klaar: hij vult alles vanzelf in. Mijn hele eetgeschiedenis komt spontaan in een database. Ik hoef alleen maar een RFID-tag voor de lezer van de NutriSense te houden. 

&lt;div class=&quot;w3-row-padding&quot;&gt;&lt;div class=w3-half&gt;&lt;img src=&quot;data/db341_mijndagboek.jpg&quot; class=&quot;w3-image&quot; /&gt;&lt;br&gt;Toen: een spreadsheet&lt;/div&gt;&lt;div class=w3-half&gt;&lt;img src=&quot;data/db341_apparaatinwerking.jpg&quot; class=&quot;w3-image&quot; /&gt;&lt;br&gt;Nu: een apparaat dat ik heb gemaakt&lt;/div&gt;&lt;/div&gt;

&lt;b&gt;Scenario&lt;/b&gt;
Maak je eten klaar. Bijvoorbeeld: 1 potje tuinbonen, kom gekookte aardappelen en een snee roggebrood*. Vervolgens scan je de tags &quot;Tuinbonen&quot; en &quot;Roggebrood&quot;, je plaatst het kommetje gekookte aardappelen op het weegplatform van de NutriSense en scant de tag &quot;Gekookte aardappelen&quot;. Klaar! Alles is meteen gelogd en je kunt zonder vertraging gaan eten van je gezonde maaltijd.
&lt;div class=KLEIN&gt;*Dit is een maaltijd zoals ik vaak eet, WFPB-dieet. Ieder zijn eigen dieet natuurlijk.&lt;/div&gt;
Op het matrixdisplay van het apparaat staat het aantal calorieën dat je vandaag tot nu toe hebt gegeten.

&lt;b&gt;Scannen maar&lt;/b&gt;
De RFID-tags zijn ge-3d-printte kaartjes waar een RFID-sticker in is verwerkt. Om snel de juiste tag te vinden zijn ze geprint in diverse kleuren, per categorie voedsel een kleur:
Fruit (bessen, ananas): oranje
Aardappelen (gekookt, oven, zoete aardappel): geel
Groenten (bonen, tuinbonen, witte bonen, broccoli): groen
Brood &amp; granen  (roggebrood, volkoren brood, havermout, bami, macaroni): bruin

&lt;div class=&quot;w3-row-padding&quot;&gt;&lt;div class=w3-half&gt;&lt;img src=&quot;data/db341_calvandaag.jpg&quot; class=&quot;w3-image&quot; /&gt;&lt;br&gt;Al 416 calorieën gegeten vandaag&lt;/div&gt;&lt;div class=w3-half&gt;&lt;img src=&quot;data/db341_tags.jpg&quot; class=&quot;w3-image&quot; /&gt;&lt;br&gt;Tags&lt;/div&gt;&lt;/div&gt;
&lt;b&gt;Weegschaal&lt;/b&gt;
Op sommige tags zoals aardappelen, spruitjes, enz. staat een weegschaalsymbooltje. Die moet je wegen. In de NutriSense zit een weegschaal ingebouwd. Ik plaats mijn kommetje gekookte aardappelen (ik eet altijd uit kommetjes) op de weegschaal, scan de tag en klaar. Het gewicht van het kommetje is bekend dus hij weet precies hoeveel aardappelen ik eet.

&lt;b&gt;Bouw&lt;/b&gt;
Het was een leuk project vooral door de grote hoeveelheid verschillende modules die allemaal door één Arduinosketch worden aangestuurd. Het omvatte wel een aantal iteraties. Vooral de bevestiging van het matrixdisplay had nogal wat voeten in de aarde. Het is nu goed gelukt zonder dat ik hot glue hoefde te gebruiken. Ook werd alles van de binnenkant best warm, dat is nu opgelost door simpele ventilatiegaten toe te voegen. Alle elektronica is gemonteerd op het deksel zodat er geen draden van paneel naar kast hoeven te lopen.
De drukschakelaars die je op de foto&#039;s van het apparaat ziet zijn niet meer in gebruik, die waren van een eerder prototype.

&lt;img src=&quot;data/db341_bouw.jpg&quot; class=&quot;w3-image&quot; /&gt;

In het schema zie je dat zowel het display als de RFID-taglezer gebruik maken van de pennen D11 en D13 van de Arduino. Op internet zie je deze oplossing niet vaak terwijl het wel standaard zo bedoeld is voor apparaten met een zogenaamde &lt;a href=&quot;https://nl.wikipedia.org/wiki/Serial_Peripheral_Interface&quot; target=&quot;_blank&quot;&gt;SPI&lt;/a&gt;-aansturing. Werkt prima zo! 

&lt;img src=&quot;data/db341_schema.jpg&quot; class=&quot;w3-image&quot; /&gt;

Let wel dat de RFID-module gevoed moet worden met 3,3V anders gaat hij stuk. Het model van &lt;a href=&quot;https://www.hackerstore.nl/Artikel/229&quot; target=&quot;_blank&quot;&gt;Hackerstore&lt;/a&gt; is aan de datapennen 5V tolerant dus die werkt goed voor deze toepassing.

&lt;b&gt;Database&lt;/b&gt;
Zowel de lijst met producten (tags) als het eetlogboek worden opgeslagen in een SQLite database. Op een lokaal gehoste server bij mij thuis draait een Apache webserver met een PHP-applicatie die alles regelt. Ik heb ook nog de phpliteAdmin-app toegevoegd zodat je de data in de database kunt bekijken, bewerken en analyseren. 

&lt;img src=&quot;data/db341_backend2.jpg&quot; class=&quot;w3-image&quot; /&gt;

&lt;b&gt;Opbergdoos&lt;/b&gt;
Ik heb voor op het aanrecht er nog een mooie opbergdoos voor gemaakt. Alle tags (alles wat ik wel eens eet dus) passen hier netjes in. Mochten er meer tags nodig zijn in de toekomst dan kan ik die  erook in kwijt dankzij verschuifbare backplates. Dit idee heb ik afgekeken van de oude floppydisk-opbergdozen.

&lt;img src=&quot;data/db341_zopbergdoos.jpg&quot; class=&quot;w3-image&quot; /&gt;

&lt;b&gt;Download&lt;/b&gt;
Alle bestanden waaronder de Arduino-code, de PHP backend, de database en alles om de behuizing en het opbergbakje en de tags te printen staan in een zipbestand. Download &lt;a href=&quot;data/db341_NutriSense.zip&quot; target=&quot;_blank&quot;&gt;zipbestand&lt;/a&gt;.

&lt;b&gt;Vooruitblik&lt;/b&gt;
Na enige tijd in gebruik te zijn geweest ben ik van mening dat dit een super-apparaat is! Ik ga er nog een vervolgversie van maken denk ik met mogelijk de volgende verbeterpunten:
- Een LCD als display zodat er meer tekst tegelijk op kan zonder te scrollen. 
- Meer info op het display en op de tags zoals het aantal calorieën. Als dit op een tag staat helpt dit al bij de keuze &quot;wat zal ik eens eten?&quot;.
- Additionele feedback met audio (een buzzer of zo) zodat fouten sneller worden opgemerkt zoals bijvoorbeeld als je vergeet te wegen bij eten dat wel gewogen moet worden.
- Mooiere behuizing. Het oog wil ook wat.
- Blijf gebruik maken van dezelfde database zodat ik 2 werkende apparaten heb op verschillende plaatsen in huis.
- Meer statistieken of analyses met AI over mijn eetgedrag.&lt;/div&gt;
</description>
   <pubDate>Fri, 08 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>NS Matrixbord</title>
   <link>index.php?w=apparaat&amp;id=340</link>
   <description>Vroeger vond ik er niks aan: dot matrices. Ik vond ze maar saai want voor hetzelfde geld kon je een OLED-scherm of voor mijn apart een 16x2 LCD gebruiken als je iets wilt laten zien. Een OLED of LCD kan veel meer details laten zien dacht ik. Maar daar kom ik nu op terug want een dot matrix is behoorlijk handig voor mijn apparaten. Ze hebben namelijk een groot contrast - ook bij daglicht en zijn heel goed af te lezen vanaf een afstandje (ook zonder dat ik mijn bril op heb).

Daarom nu dit apparaatje dat voor de trein die ik &#039;s ochtends als forens neem de tijd laat zien met eventuele vertraging. En ook het aantal treindelen (de lengte van de trein) alsmede de temperatuur op het station waar ik vertrek. Dat laatste is handig in de winter omdat ik meestal zonder jas naar buiten ga behalve als het vriest.

&lt;div class=&quot;w3-row-padding w3-stretch&quot;&gt;&lt;div class=&quot;w3-half&quot;&gt;&lt;img src=&quot;data/db340_atrein.jpg&quot; class=&quot;w3-image&quot; /&gt;&lt;div class=&#039;KLEIN&#039;&gt;Vertrektijd en lengte van de trein&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;w3-half&quot;&gt;&lt;img src=&quot;data/db340_temp.jpg&quot; class=&quot;w3-image&quot; /&gt;&lt;div class=&#039;KLEIN&#039;&gt;Actuele temperatuur op het station&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;b&gt;De hardware&lt;/b&gt;
Een &lt;a href=&quot;https://www.hackerstore.nl/Artikel/1565&quot; target=&quot;_blank&quot;&gt;Arduino R4 Wifi&lt;/a&gt; en een dot matrix-array met 4 matrices: dat is alles wat er in zit. De firmware en de PHP-backend doen het meeste werk. Aan de &lt;a href=&quot;data/db340_nsmatrix.ino&quot; target=&quot;_blank&quot;&gt;Arduinocode&lt;/a&gt; kun je nog steeds goed zien hoeveel werk ik heb gehad om slechts 150 regels code te schrijven: het staat nog vol met uitgecommentarieerde stukken code of loggingsregels. 

&lt;b&gt;Het kastje&lt;/b&gt;
De behuizing is een verbeterde versie van die van de &lt;a href=&quot;/index.php?w=apparaat&amp;id=331&quot; target=&quot;_blank&quot;&gt;Dot Matrix 3D-printermonitor&lt;/a&gt;. Bij deze kun je de dotmatrixbalk (bestaande uit 4 matrices) zo in de behuizing schuiven: geen lijm nodig! In het &lt;a href=&quot;data/db340_behuizing.scad&quot; target=&quot;_blank&quot;&gt;OpenScad&lt;/a&gt;-bestand vind je complete model van deze geniale behuizing.

&lt;img src=&quot;data/db340_scad.jpg&quot; class=&quot;w3-image&quot; /&gt;
&lt;div class=&#039;w3-center&#039;&gt;Ontwerp behuizing in OpenScad&lt;/div&gt;

&lt;img src=&quot;data/db340_inbouw1.jpg&quot; class=&quot;w3-image&quot; /&gt;
&lt;div class=w3-center&gt;Kastje met deksel eraf zodat je de binnenkant ziet&lt;/div&gt;

&lt;img src=&quot;data/db340_displaydetail.jpg&quot; class=&quot;w3-image&quot; /&gt;
&lt;div class=w3-center&gt;Geniale bevestiging van dot matrix - (C) Marcelv&lt;/div&gt;

&lt;img src=&quot;data/db340_inbouw.jpg&quot; class=&quot;w3-image&quot; /&gt;
&lt;div class=w3-center&gt;Bovenaanzicht, binnenkant&lt;/div&gt;

</description>
   <pubDate>Fri, 01 Aug 2025 00:00:00 +0200</pubDate>
   </item><item>
   <title>Arduino quick-prototyping bord</title>
   <link>index.php?w=3dontwerp&amp;id=339</link>
   <description>Huisvest een breadboard en een Arduino (R3, R4, Leonardo).
Met 2 ingebouwde schakelaars en 3 LED-jes met voorschakelweerstanden. 

Dit scheelt in de netheid bij het prototypen omdat je voor alle schakelaars en LED&#039;s je een gemeenschappelijke massadraad hebt en je geen LEDjes en switches hoeft te prikken op je breadboard.</description>
   <pubDate>Wed, 30 Jul 2025 00:00:00 +0200</pubDate>
   </item></channel></rss>
