6 Juni 2025 –
Vondst bij Kruidvat – Denver Blue Kids Camera
Gisteren kwam ik bij het Kruidvat een Kids Camera tegen in de aanbieding voor € 9,99. Op de verpakking zag ik: 1080P-resolutie, 2″ display, scherpstelling met gezichtsherkenning, ingebouwde oplaadbare LiPo-batterij en uitbreidbaar geheugen met SD-kaart. “Foto’s, video’s maken en spelletjes spelen. Het kan met deze multifunctionele kindercamera. Let op: SD-kaart niet inbegrepen.” De prijs is aantrekkelijk, de camera is compact en heeft alle functies die nodig zijn om geautomatiseerd vogels vast te leggen bij een voederbak.



Eerste Inspectie
Ik besluit de camera te kopen en deze nader te bestuderen. Het doel dat ik voor ogen heb: een camera die eenvoudig te triggeren is, out-of-the-box werkt, foto’s opslaat op een uitleesbare geheugendrager, en die low-power aangestuurd kan worden. Op mijn werkbank haal ik de behuizing met vier schroeven los. De camera zit met twee kleine schroefjes aan de voorkant vast en is met een flexkabel aan de printplaat verbonden. In de voorkant zit ook een kleine speaker voor het foto-click geluid, het afspelen van video-audio en muziek in de ingebouwde audiospeler.
Benodigdheden en tools
– Denver Kids Camera
– 32GB SD card
– Breadboard lang 60 rows
– Adafruit QT-Py ESP32-S2
– Nakiplast modelleerklei voor bevestiging
– Weller soldeerstation WE1010 met soldeertin
– Wire-wrap draad en wire-wrap handtool
– 2x 4 row soldeerpinnen
– tuimelschakelaar
– USB-C stekker
– IPA/Bio Ethanos clear voor chipsresidu
– Fluke Multimeter
– Zijkniptang

Interne Opbouw
Op de printplaat zitten zes knoppen: op, neer, links, rechts, aan/uit en click. Deze dienen ook voor de bediening van het menu, zichtbaar op het 2″ TFT-scherm dat eveneens met een flexkabel verbonden is. Na het losschroeven van de printplaat zie ik aan de achterkant meteen twee testpads met de opdruk GND en TX. Dat is interessant, want GND staat voor ground (massa) en TX voor transmit. Verder kom ik een serie onderdelen tegen die mij helpen om de logica van de printplaat te doorgronden:
-Realink 2444T SoC (hoogstwaarschijnlijk de processor)
-25V01 Flash-geheugenchip, SPI NOR Flash-geheugen van 1 Mbit (128 kB)
-LP4051T LiPo charge controller voor het laden/ontladen van de accu
-TAGeP2 low voltage drop controller die te diepe ontlading van de LiPo voorkomt
-LCD panel en camera flat-cable connectors
-Tactile switches voor alle knoppen
-SD-kaartslot
-Resetknop
-MEMS-microfoon
-LiPo-accu 3.7V, 200mAh – 0,74Wh
-USB-C connector
-GND/TX testpads

Achtergrondinformatie via ChatGPT
Met behulp van ChatGPT 4.1 zoek ik meer gegevens over deze camera op. ChatGPT geeft aan dat deze camera valt binnen de categorie “kids camera/speelgoedcamera’s”, veel verkocht via AliExpress, Bol.com en Amazon. De hardware bevat waarschijnlijk een Realink 244T-compatibele SoC en een externe SPI Flash met firmware, meestal van 1Mbit of 2Mbit. Deze is eenvoudig te dumpen en terug te schrijven. De firmware is generiek en door een EOM/ODM ontwikkeld. De user interface en iconen zijn vaak direct zichtbaar of aanpasbaar in de firmware. Meestal is er geen zware beveiliging.

Standaardisatie en hackingmogelijkheden
Van deze camera’s zijn miljoenen stuks gemaakt, vaak met dezelfde basisfirmware en hardware. De SPI Flash is standaard en makkelijk uit te lezen met een Raspberry Pico, ESP32 of CH341. De firmware is doorgaans niet versleuteld: teksten, iconen, menu’s en soms geluiden zijn aanpasbaar met een hex-editor. Er is een servicemenu aanwezig dat de hardware-ID toont en mogelijk toegang geeft tot extra opties. De printplaat heeft in ieder geval GND/TX-testpunten voor UART, en mogelijk ook ISP, wat debugging makkelijker maakt.
Eerste experimenten
Alles werkt nog, ook na het loshalen van printplaat, TFT-scherm, camera en speaker. Als het lukt de originele firmware van de SPI-chip te kopiëren, deze te editen met een hex-editor en eventueel te manipuleren met Python, C of Arduino IDE, heb ik vertrouwen dat ik aanpassingen kan doen in de menu’s, teksten of zelfs iconen. Misschien lukt het zelfs om verborgen functies te activeren. Natuurlijk is er het risico de camera te ‘bricken’ bij een fout tijdens het editen, dus ik begin met een goede back-up. Voor nu blijf ik uit de buurt van assembler/disassembler hacks, dat ligt buiten mijn huidige kennis. Z80 assembler ken ik nog wel uit mijn beginjaren met computers. Een eerste zoektocht levert geen hits op over de Realink T2444 SoC, maar wie weet vind ik later nog wat.
Aanpak en Stappenplan
De stappen die ik ga nemen:
-Inzicht krijgen in het stroomverbruik van de camera in rust en actief
-De sequence achterhalen om vanuit rust een foto te maken
-Bepalen hoeveel foto’s op een standaard SD-kaart passen
-Draadjes solderen aan de 25V01 SPI ROM
-Verbinden van de SPI ROM aan een Raspberry Pico of ESP32
-De inhoud van de SPI uitlezen en opslaan als firmwarebestand
-In de firmware logische blokken vinden met een hex-editor
-Geheugenblokken voor plaatjes, teksten, iconen en geluiden vaststellen
-De firmware wijzigen met een hex-editor
-Gewijzigde firmware terugschrijven naar de SPI ROM
-Camera weer testen en wijzigingen controleren
-Knoppen vastsolderen
-Een vogelvoederbak ontwerpen
-Camera-printplaat, -lens en TFT-scherm integreren
-Bewegingssensor (PIR, radar of IR-beam) integreren
-Vogelvoederbak 3D-printen
-Testen en in gebruik nemen
-Menu en Extra’s

In het menu kan ik tijd en datum instellen, dus is er waarschijnlijk een Real Time Clock of een andere methode om tijd vast te houden in de SoC. Hierdoor krijgen foto’s automatisch een timestamp. Opvallend is dat de camera na een vaste tijd automatisch uitgaat; deze setting is in het menu aanpasbaar. Na het opstarten kan ik niet direct een foto maken: het fotomenu moet eerst actief zijn. Misschien kan een externe processor, zoals een Raspberry Pico of ESP32, deze sequence elektronisch triggeren via de tactile switches.
Breadboard en Uitlezen
Na wat twijfelen heb ik de camera volledig uit elkaar gehaald en op een breadboard gemonteerd. Met een fijne soldeerbout heb ik acht wire-wrap draadjes aan de SPI ROM-chip gesoldeerd en via printpennen toegankelijk gemaakt. De speaker is aangesloten en ik heb een mogelijkheid gemaakt om GND/TX via UART uit te lezen. Vervolgens heb ik een Adafruit QT-Py ESP32-S2 op het breadboard gezet waarmee ik de SPI ROM ga uitlezen. De verbinding tussen de 25V01 SPI ROM en de ESP32-S2 maak ik met dupontstekkers.
SPI Flash | QT Py ESP32-S2 |
---|---|
1 CS# | A0 (GPIO1) |
2 MISO | MISO (GPIO37) |
3 WP# | 3V |
4 GND | G |
5 MOSI | MOSI (GPIO35) |
6 SCK | SCK (GPIO36) |
7 HOLD# | 3V |
8 VCC | 3V |
Uitlezen met Arduino IDE
Voor het uitlezen van de SPI ROM schrijf ik een programma in de Arduino IDE, waarin ik de aansluitingen en geheugengrootte definieer (FLASH_SIZE = 131072 voor 1Mbit). Met SPIClass selecteer ik de SPI bus. In de procedure dumpFlashHex lees ik de hele SPI ROM uit en dump deze via de seriële monitor naar mijn scherm op 115200 baud. Omdat de dump maar één keer hoeft, plaats ik dit in de Setup().
Resultaten en toekomst
Na het compileren van de code gaat de QT-Py ESP32-S2 direct aan de slag. Ik zie de JEDEC ID en krijg een complete dump van de SPI ROM via de seriële poort. Nog even opslaan als platte hex-dump voor verdere analyse en bewerking met een hex-editor.

Reflectie en leerervaring
Het onderzoeken van deze camera en het uitpluizen van de onderdelen geeft mij inzicht in de logica die door de ontwerpers is toegepast, en hoe een SoC samenwerkt met een externe SPI ROM. Door de tools en methodes voor het aanpassen van SPI ROM chips te leren, voeg ik een nieuw stuk kennis toe aan mijn skill-set. Dit kan van pas komen bij toekomstige reverse engineering projecten, of bij het aanpassen van ECU’s en consumentenelektronica. Kortom: een boeiende en waardevolle ontdekkingstocht die mij helpt bij het bouwen van een vogelvoederbak, zodat ik straks precies kan vastleggen welke vogel wanneer langskomt bij het eindresultaat van dit project.