Nou, het is weer een tijd geleden, maar dat betekent niet dat ik stil heb gezeten.. Tijd voor een:
Update!
Om het kort te houden, er is veel verbeterd ondertussen en ook veel dingen heb ik goed kunnen testen en verfijnen

. Om precies te zijn, de robotstofzuiger kan een mooi rondje stofzuigen en daarna weer netjes via de netvoeding zichzelf keurig opladen tot hij vol is. Hoe of wat zal ik hieronder uitwerken.
Het vinden van het basisstation
Laatste keer dat ik wat plaatste was ik hier mee bezig.

De robotstofzuiger heeft twee infrarood sensoren (of eigenlijk infrarood-gevoelige weerstanden). Eentje zit aan de achterkant en eentje aan de zijkant. Het idee is dat de robotstofzuiger in de buurt van het basisstation is, er langs rijdt en dat de sensor aan de zijkant de infrarood led op het basisstation waarneemt. Op dat moment moet de robotstofzuiger stoppen en ongeveer 45 graden draaien totdat hij dezelfde infrarood led waarneemt aan de sensor aan de achterkant. Zodra dit zover is kan hij naar achter gaan rijden waarbij hij de infrarood led blijft volgen totdat hij gedocked is in het basisstation.
Ik heb beide infrarood sensoren aan een ADS1115 hangen, wat een Analog-to-digital converter is om analoog signaal te kunnen meten met de Raspberry PI. Ook heeft deze module een alert pin. Wat je kunt doen is hem instellen om de alert pin te triggeren als één van de analoge pinnen binnen een bepaalde waarde valt. Oftewel, wordt de infrarood led gezien, dan triggert de alert pin, die ik weer met een interrupt kan afvangen op de PI. Dit zorgt ervoor dat zodra de infrarood led gezien word, de raspberry pi DIRECT kan stoppen en beginnen met zijn volgende stap.
Na lang testen ben ik hiermee op een soort van werkbare situatie uitgekomen. Als de raspberry pi in de buurt is van het station werkt dit prima. Nadeel is wel, hij moet echt wel binnen een paar meter van het basisstation zijn, wil hij de IR led waarnemen...
Waar ik tegelijk mee zat is een stukje risico. Ik vind het toch best wel eng om een zelfbouw stofzuiger op goed geluk zijn basisstation te laten vinden, hem laten docken en laten opladen. En dan voornamelijk daarna constant aan de stroom laten hangen. Dat lijkt me qua verbruik niet helemaal ideaal en het geeft me ook niet zo'n fijn gevoel. Ik ben immers zelf dan niet thuis om in te grijpen als het ooit mis gaat (kortsluiting, ontploffende LI-ion accu's of wat dan ook)...
Met andere woorden, het dockingstation ga ik de komende tijd nog niet gebruiken. In plaats daarvan ga ik hem gewoon zelf opladen. Hij heeft namelijk ook een power connector aan de zijkant waarmee ik hem kan opladen. Zodra hij dan vol is kan ik hem gewoon zelf loskoppelen. Zodra ik dan wil dat hij een stofzuigrondje doet, leg ik hem op een willekeurige plek in de woonkamer en zet ik hem aan. Wanneer hij dan merkt dat wij niet meer thuis zijn begint hij zijn ronde en zodra hij klaar en de batterij bijna leeg is, sluit hij af en kan ik hem wanneer ik thuis kom weer opladen. Meer hierover straks in het stukje "Cutting the cord"

Opladen
Dan het opladen. Zoals jullie eerder konden lezen was dit best een lastig onderdeel voor me, want ik ben niet perse bekend met Li-ion batterijen, of batterijen en laadcircuits in het algemeen. Met veel tips en advies van hier en van mede-tweaker SA007 heb ik ondertussen toch een goed werkende oplossing. Zie hier een grafiek van pas geleden waarin de batterij netjes oplaad met een vast voltage en een vast vermogen:

Ondertussen is dit ook al weer verouderd. In bovenstaande test zie je dat de batterij netjes een stukje oplaad van ongeveer 15v tot 16.5v met een vermogen van 0.3A. Zodra hij het ingestelde voltage bereikt zie je dat het vermogen netjes afbouwt om hem echt vol te laden.
Ik heb expres gekozen voor 16.5v (16.8v is namelijk pas écht vol (4.2vx4 batterijen) omdat dat net wat veiliger is. Stel dat mijn meetapparatuur niet helemaal kloppend is, en hij toch verder oplaad dan 16.5v, dan is dat niet direct een probleem. Bovendien heb ik me laten vertellen dat wanneer je een li-ion cel niet volledig vol/leeg laadt hij vaker opgeladen kan worden voordat hij qua performance achteruit gaat. Dus ik lever iets vermogen per laadbeurt in voor meer vermogen op de lange termijn, prima wat mij betreft
Ondertussen heb ik het laadvermogen wel wat opgeschroeft. Dat is van 0.3A naar 0.6A gegaan, zodat een volledige laadbeurt van leeg naar vol zo'n 5 uur duurt. Dit is nog steeds een veilig laadvermogen.
Ohja, het grafiekje wat je ziet wordt door de raspberry pi in de robotstofzuiger zelf gegenereerd. Zo kan ik altijd precies bijhouden of alles naar wens is zonder dat met de hand te moeten meten

Cutting the cord
Dan terugkomend op eerder. Ik ga hem met de hand laden en wil graag wat meer veiligheid. Wat ik dan nodig heb en graag wil, is dat de robotstofzuiger zijn eigen stroom kan onderbreken. Wanneer hij klaar is met zijn stofzuigronde en de batterij bijna leeg is, wil ik graag dat hij naar een hoekje van de kamer rijdt en daarna doei zegt (bijv. via een berichtje naar mij via Telegram) en dan netjes afsluit en vervolgens dus echt fysiek de stroomtoevoer vanaf de batterij doorbreekt. Das prettig voor mijn gemoedsrust en naar mijn mening ook best een mooie oplossing.
Daarnaast moet de bestaande power knop bovenop het apparaat er voor zorgen dat de verbinding tussen batterij en stofzuiger weer verbonden wordt (oftewel hij dus weer aan gaat) én wil ik dezelfde power knop ook kunnen meten wanneer de stofzuiger gewoon nog aan staat, want ik wil hem natuurlijk ook op mijn eigen commando uit kunnen zetten.
Hiervoor heb ik het volgende schema bedacht:

Oftewel, zodra je de power knop indrukt maakt de batterij contact met de rest. Hierdoor gaat er 5v lopen naar het relay en gaat (via de hardware pull-up) het relay dicht. De power knop kan je nu dus loslaten en het circuit blijft gesloten. Dit totdat ik vanaf de Raspberry PI de GPIO switch die aan de relay vast zit waardoor hij zijn eigen stroom weer onderbreekt.
Tegelijk zorgt de PC817 (dat is een optocoupler) er voor dat wanneer de power knop ingedrukt wordt, dat de GPIO met ground verbonden wordt zodat ik op de Raspberry PI dit kan afvangen en kan beginnen met afsluiten.
Tenslotte heeft de raspberry pi de mogelijkheid om een GPIO naar HIGH of LOW in te stellen zodra hij helemaal afgesloten is. Dat zorgt er dus voor dat ik de stroom kan afsluiten na een nette shutdown.
Ledjes!
Daarnaast had ik nog een paar ledjes liggen die zowel rood als blauw konden branden. Deze heb ik aan de hoeken van het mainboard soldeerd en met een fijn schuurpapiertje opgeschuurd zodat ze diffuus licht geven. Dit geeft het volgende resultaat.
[
Video: https://i.imgur.com/tvdZBCV.gifv]
Best geinig. Het blauw pulserende licht heb ik nu ingesteld om te tonen zodra hij zichzelf aan het opladen is (in het echt zie je het geflikker in het licht niet, dat komt door de camera). Rood-blauw afwisselend doet hij zodra je met de hand hem bestuurt. Er zitten trouwens nog een paar rode leds op andere componenten zoals je wellicht opvalt die ik er nog af ga halen (step-down converter en het motorboardje).
Camera
Ook heb ik de camera geplaatst op de stofzuiger. Het is een gewone raspberry pi camera die ik met (veel) hobbylijm vast heb gezet op een bepaalde hoek. Vanuit deze hoek zit de bumper niet in het beeld en kun je (zodra de webpagina hiervoor af is) hem op afstand besturen terwijl je kunt zien waar je heen rijdt. Vooral een gimmick natuurlijk, maar wel erg cool.

Ik ga de lijm en de gaten er omheen nog wit schilderen trouwens, zodat het er wat netter uit ziet dan de gele lijm die je nu ziet.

En verder...
Hieronder zie je de eerste test met de stofzuigmotor in werking. Zoals op TV ook altijd gedaan wordt heb ik een paar snippers verstrooid en kijk ik of hij het opzuigt.
[
Video: https://i.imgur.com/66tLq92.gifv]
Werkt prima dus! (het boek was nodig omdat de batterij op dat moment niet in de stofzuiger zat, daardoor zit hij wat hoger op de vering. Het boek drukt hem in deze test ff wat meer plat naar de grond.)
Later heb ik ook maar eens hem getest op een verdieping die wel een stofzuigbeurt kon gebruiken. En na een 20 minuten stofzuigen is dit wat hij eruit haalt:

Best veel rommel dus. Zelfs op 'schone' vloeren weet hij na een tijdje toch best wat stof te verzamelen. Niet gek dus!
Tot slot
Dat was het weer voor nu. Mocht je de moeite hebben genomen om dit hele blok tekst te lezen, laat dan gerust weten wat je er van vind. Geeft mij ook nog het idee dat mijn posts nut hebben

.