Als je mij niet kent, dit ben ik in 10 trefwoorden.
Ik hou van: Werner, Azerty & Querty, gadgets, Agora Software, Geox
Ik hou niet van: diabetes I, hernia, alcohol, afscheid
Wie deze blog een beetje gevolgd heeft, zag vaak de beide onderwerpen uit de titel - vaak gecombineerd - opduiken in de blogposts. Ik schreef een korte samenvatting van hoe dat nu gekomen is op de website geocachen.be
.
Het heeft enkele maanden geduurd, maar we zijn eindelijk klaar met de nieuwe mancave. De oude had een chronisch plaatsgebrek en dat heb ik enkel aan mezelf te danken. Door te veel nieuwe spullen te bestellen bij mijn favoriete Chinese site, liep ik vast op een groot probleem. Ik had geen plaats om de kleine spullen op te bergen en liet ze dan maar in enkele kartonnen dozen ongesorteerd liggen.
Dat is normaal niet zo'n onoverkomelijk probleem, ik ben van nature niet echt ordelijk (ahum!) maar dit was even anders. Ik bestel vooral nog mini kleine SMD elektronica, en je kan met het blote oog net zien dat je zo'n onderdeel in je hand hebt. De microcontrollers die ik nu gebruik zijn 4x4 mm groot en hebben 32 pinnetjes om te solderen. Dat wil ook zeggen dat je niet meer ziet wat er op staat zonder ze onder de microscoop te leggen. Als je in zo'n kartonnen doos met spullen elk ding moet vastnemen en onder de microscoop leggen, dan ben je je hobby meteen beu. Dat, samen met een winterdip en een gezondheid die tegenwerkt, heeft ervoor gezorgd dat ik al enkele maanden bijna niks meer deed in die oude mancave.
Vroeger:
Nu:
Nu is alles opgelost. Ik heb een grote kamer die ik niet meer deel met onze twee huisdieren, en ik heb meteen de bureau's die ik vroeger in mijn kantoor in Hoboken had opgesteld, weer aan elkaar gevezen. Het resultaat is een mooie U-vorm met enorm veel werkruimte maar vooral: met meer dan het dubbele aantal plastic bakjes. Het grote werk was dan ook niet de kamer inrichten, maar wel de bakjes vullen en als het kan elk bakje voorzien van het juiste opschrift. Da's best moeilijk omdat vele chips zelfs geen typenummer hebben, maar een andere nummer. Alles wat je kan doen is in je bestelhistoriek naar de foto's kijken en hopen dat je alle nummers terugvindt.
Die moeilijke oefening deed ik dus met deze blauwe bakjes. Alles wat intelligent is, zit nu in een blauw bakje. Simpele vuistregel, toch?
De rode en groene zijn niet veranderd, dat houdt het overzichtelijk voor mezelf. Het is geen goed systeem, want er zitten dus ook intelligente dingen in de groene bakjes. Maar dat was nu eenmaal de simpelste en duidelijkste weg. Die oude spullen gebruik ik vaak niet meer omdat alles kleiner werd met de jaren.
De rest zit in de grijze bakjes en die spreken vaak voor zich. Dat er een stappenmotor of een zonnepaneeltje in ligt, moet je eigenlijk niet echt aangeven. Maar een tiental soorten Oled displays of ledmatrixjes hebben toch best per soort hun eigen plek.
Het gereedschapsbord is ook nieuw, het was een afdankertje uit den Brico. Je ziet dat niet meer, maar de platen waren schots en scheef en dus heel goedkoop ;-).
De oude soldeerbout (rechts) is vervangen door een soldeerstation (links) en een heteluchtblazer. Het station beschermt kleine chips tegen oververhitting en de hetelucht gebruik ik als de dingen zo klein worden dat je ze niet meer ziet. De truuk is dan om alles onder de microscoop te leggen, soldeerpasta erop en alles warmblazen in de hoop dat alles goedkomt. Meestal lukt dat zelfs ook nog !
Een Chinees Androidje doet dienst als beeldscherm voor de microscoop uit hetzelfde land. Met de specificaties zou de kenner schaterlachen, maar als je het als vergrootglas gebruikt, doet het alles wat ik nodig heb.
Trouwens, ook de oude mancave bestaat gewoon nog, alleen durf ik daar nog geen foto van posten ;-)
Alles wat te maken heeft met boren, zagen, schuren, dus eigenlijk alles wat afval of stof achterlaat, zal ik in de oude mancave blijven doen. Het gereedschapsbord hangt er nog, het lijkt nu meer op een werkplek van een garagist dan die van een elektronicanerd.
Kort en goed: me very happy! Tijd om al die plannen in mijn hoofd ook weer echt uit voeren !
I need four original waypoints for my new geocache, this is number three. I made a promise to myself to always make electronic waypoints and as this is my third multicache, I'm not planning on breaking that promise yet. Now, the idea of my new multi is to go a bit further. For the final, it means using some motors and servos. For the waypoints, it means that this time I want them to really blend into the background.
I started off with this fake plant, now I'm trying to get all electronics needed to get the information displayed to the cacher in a snail house. First, let's not worry about being waterproof because it simply isn't. I may take a leap in the dark and try to place it in the woods as is. That means the pcb with display and battery is only wrapped into a heat shrink sleeve which is glued into the snail house. That's only possible if it sustains humidity, but I'm guessing that this will work.
Actually, my other caches contain all electronic waypoints in waterproof containers, but they often fail. Someone forgets to tightly close the cap or the plastic wears off, leaving the electronics exposed. I noticed that the electronics have never failed for that reason (they do fail for a lot of other reasons ;) ) but not because of humidity.
I always use plastic spray on my finished pcbs, including the batteries. The other components I use now (like Oled displays) will sustain bad weather for a long time. Again, these things are not meant to last for years, I'm glad they last one year. As a final test, I hold my finished projects under the water tap and check if they make it. Until now, they always do.
That said, this is the new challenge. I no longer use magnetic switches, so visitors won't need a magnet to activate the snail (well.. the display). I use a tilt switch, so turning them over will start the show. After it has shown its info, the chip will fall asleep and only activate when there's movement. So it doesn't matter how you place it back. I would prefer face down but I know better than that. Also, these things cannot be secured by a lock or a small chain, so they can be easily ripped. We'll see about that, I plan on making a few extra and I never had things ripped before.
I'm planning a new geoache and the idea for the final stash is to place an ammobox with a lock. This way I can make sure that not all visitors who find the box, will be able to open it. In fact, if you don't know how to achieve the key, you won't be able to reach the logbook in the box.
Next to the hiding place, a birdhouse will hide the key. It will take some effort to make this failsafe, but that will not be the main issue. The key will be released by some intelligent circuitry that understands your "secret knock". I'm thinking something like: knock x times, wait a bit and then y times. With x and y being some numbers of the last few waypoints.
The main issue is making the motor failsafe, and this is my first effort. I think the result is great, it's strong and fast enough to let the key come out of the birdhouse fast enough (12 seconds down, 17 seconds up, the 'up' speed needs more torque and has a lower pulses per second).
I'm using a bipolar stepper motor with reduction gears. The 24 volts will be supplied by a DC-DC convertor that boosts one or two 18650 batteries (so 3.7V or 7.2V) to 24 volts. I tried one model and it works great. I can easily draw 2A current out of one battery, or 1A out of 2 batteries to make a strong enough 24V power supply that should last for 2 to 4 hours 'motor movement'.
I made this construction with a 10cm shaft holding a spindle that winds up a small chain with a key attached at the end. The shaft can rotate freely due to the two ball bearings. The rigid shaft coupler connects the shaft to the motor. This video shows how it works:
Dat er af en toe echte superdeals tussenzitten op AliExpress, dat weet ik al even. Maar deze is echt uitzonderlijk. Een microscoop echt die naam waardig die fantastisch mooi helder beeld geeft. Het leuke is dat de camera een eindje blijft verwijderd van je object en dat maakt het in mijn geval ideaal om te solderen.
De optische specs zijn heel goed, maar de technische niet. Dat is wellicht de reden waarom men hem voor 16 dollar hier van de hand doet. Maar in mijn atelier heb ik nu net geen behoefte aan een hoge resolutie scherm, en dan is die 800x600 pixels meer dan voldoende. De optische vergroting is immers loepzuiver en de ledverlichting kan je in helderheid regelen zodat je beeld meer helderheid krijgt dan wat ik door een echte (enkel optische) microscoop zie.
This geocache waypoint is supposed to really blend into the background. The fake plant is available in many geocache webshops and it comes in many different shapes. Not only the container may vary, you can also pick a plant that will suit its purpose best in the setting you have in mind. Off course, when you buy it, it comes with a small logbook and a tiny pencil to log the cache.
But my plans are usually a bit more nerdy so this thing was the ideal container for a design I had actually laying around for more than a year now. The major problem was that I just could not get ANY pixel light up in these Oled displays (dutch) that I bought in a major shopping mood.
Recently I made some serious progress in that area, especially with connecting them to Attiny 45 and Attiny 85 microcontrollers. I still use the Arduino environnement to program this, it's not necessary in this design but the vast library collection keeps me hanging on to this platform.
Anyway, this is the final result and I'm really pleased with it. I think the logo is really cool and I added an extra container to keep it a bit safe in the soil and even more important: its second container has some strong magnets glued in. These magnets will activate the magnetic switch on the lower side of the container with the display inside.
This is how it works:
Soldering
I've been improving my soldering skills for some time because these designs really need it. The Attiny 85 on this pcb is the really really small QFN package. It's only 4 by 4 millimeters in size, and it comes with 20 pins, 5 pins on each side of the chip.
The 'normal' SMD version has actual pins you can touch with a soldering iron, 1.27mm apart. This package was meant to be used with a reflow oven. There's no actual pins on the side, only on the bottom of the tiny chip. Instead of 1.27 mm , they're only 0.5 mm apart.
Now I don't have a reflow oven and I'm not planning on buying one in the near future. So I had to do this with a regular soldering iron. I bougth a soldering station with a tiny J-shaped tip and that really does the job. I actually heat the pcb pads instead of the ones on the chip. First of all, you really need a station and not a normal soldering iron. The pins on the pcb are so tiny that a slight touch of even a 25 Watt soldering iron just wipes away the small tracks.
My pcb software (freepcb) did not have a layout for this chip, so I took the datasheet and created my own. Its pads are only 0.25 by 0.80 mm. In real life, this is a really really small amount of copper and especially those pads that are not connected immediately detach from my pcb when you overheat them. With the soldering station and je J-shaped soldering iron, I keep the heat below 300°C and never had that problem again. It still takes some time, some boards and even a few chips before I got my first one really working. I have to kinda guess where the pads are, solder them one row at a time and then look through a microscope to see if they are aligned at all four edges. That took some time and practice.
PCB design
There's a tiny problem with my pcb designing technique. I used to design my own pcb, print two copies on a transparent sheet with a laser printer and glue them on top of eachother. That's a really cool way of making a 100% black pcb design which never fails. If your laser printer would leave out some tiny black dots because your room is a bit dusty (which nerd room isn't?), that does not cause any problem because you have a backup sheet on top. The chance of your printer failing to do its job on the exact same dot twice is almost non-existent.
The problem is: you have to get both sheets on top of each other 100% aligned. In this pcb design, the smallest distance between pads is 0.2 mm. It's just not humanly possible to get this design aligned on the whole sheet (I print at least 4 or 5 pcb's on one sheet, that's still a small board).
So I decided to skip that step (so only use one sheet) and try to work through the problem of the UV light touching the photoresist pcb at places that I can't predict. It worked out pretty well, it's now a combination of three things:
a smaller exposure time to UV light (2 minutes instead of 2.5 ... 3 min before)
exactly measuring off your developing solution (6 units of water + 1 unit of 10% NaOH-solution - dutch link)
The etching tank gives me a 100% control over the etching process. This is SO important when working with these tiny pcb designs. You can see the etching process happening before your very eyes, which makes it easy to get the pcb out exactly one minute after you see the image appearing. When I think it's done, I wait one extra minute. When I look under the microsope, I can see that I need this minute to completely get all copper off, if I wait another minute, some existing 6 mils traces (= 0.23 mm) will start to dissolve. The etching solution actually runs under the copper pads after a while.
As you can see, it works out pretty well.
Only this one design (out of five) had a minor defect.
I do have to check them visually before soldering, measuring them out is just too hard.
The 14 pins connector of the Oled display was also a problem. The freePCB software can't handle smaller distances than 0.1 mm. The pads are 0.625 mm apart, which makes it impossible.
So I just created my own 14 pins connector with 0.60 mm spacing, and every 4 pins I add one at 0.70 mm. If you look in detail, it looks odd, but in real life it's just about perfect (note that the picture is a 15 pins connector from another display, 0.65mm apart, skip every 2 pins, but you get the idea, right?).
Software design
As I said, it's actually an Arduino sketch which makes things happen here. I'm not putting any code here just because I don't have one single working all purpose solution. I'll be happy to mail some code if you're interested. But there were a few major obstacles.
First off all, most of the small Oled displays on this blog (and anywhere else) are driven by an I2C interface. That's a bit of an issue when using Attiny 85 chips, because these chips don't really support the interface. They do have some basic pins that can act as an I2C interface with an extra library (I use TinyWireM , M stands for Master).
Since I only have 8kB of program memory, there's just no way to use a library to drive the display (all my monochrome Oleds have a SSD1306 chip). That means I had to write my own code. It basically sends existing bitmaps that are hardcoded into program memory to the display. I actually wrote the whole Verdana 12 alphabet (uppercase and lowercase) in MS paint and copied all characters one by one. I just had to make sure my bitmaps are a multiple of 8 in height, since I'm writing bytes vertically to the display. I did the same thing with the numbers in Verdana 28. As a result, I get a nice readable font of 16 pixels high (so two lines on this 128 x 32 display) and really clear and big numbers to display coördinates of 32 bits in height (one scrolling line on this display).
One definition of one charcter would look like this:
The PROGMEM keyword is very important, it keeps this static data in program memory, otherwise it would be stored in the SRAM of the Attiny chip, which is only 512 bytes big. Its program memory (flash memory) is 8kB (see Arduino link about memory usage).
The array represents a bitmap of the character 'm' , font Verdana 12 , copied to a bitmap of 13 pixels width and 16 pixels height. This nice tool does the conversion of a monochrome bitmap to an array style notation like we need (beware of the different variable declaration that is generated).
As for now, my software only allows Verdana 12 characters to be displayed with Verdana 28 numbers. An Attiny 85 has some extra space available for a logo, the '45 does not. It even crashes when I write more than 5 lines of text in total (tricky: the compiler never says it's out of memory when adding arrays to your program memory, it compiles perfectly and then crashes once and a while. Very amusing. Not.). Although this may seem a bit of a limitation, I think it's just awesome that a tiny controller can do these amazing things with a bit of code :)
Voor een nieuwe geocache had ik het idee om een "reverse cache" te maken. Dat wil zeggen dat je de schat meteen vindt, maar hij is op slot. Je neemt de schat dus mee op pad en je doet een wandeling zoals je dat in een normale multi-cache zou doen. Het grote verschil is dat je geen GPS meer gebruikt, de doos die je vast hebt zal zelf instructies geven om telkens naar een volgend waypoint te gaan. De klassieke manier is dat de doos een aantal keer zegt hoe ver het nog is. Maar ik dacht aan enkele varianten zoals enkel de richting aangeven, af en toe zeggen "ga wat meer naar links/rechts" of woorden gebruiken zoals "koud, lauw, warm, heet" om aan te geven of je bijna aan het volgende punt bent.
Dat wil dus zeggen dat de doos redelijk slim moet zijn, minimum moet er een kompas, een GPS en een scherm in zitten. Dat heb ik dit weekend uitgetest en de resultaten zijn echt verbazend goed. Vooral van de GPS dan, met het kompas heb ik nog wat problemen omdat het te gevoelig is voor magneten in de buurt.
Maar de GPS zat nooit meer dan 3 meter naast mijn 'dure' Garmin, en dat woord 'duur' kan je hier ook schrijven als je een GPS in den Aldi had gekocht. De GPS module kost in China immers maar een goeie 10$ dus dat is bijna te verwaarlozen. De kompas chips kocht ik bulk aan 4$ voor 20 stuks, dat kan je dus helemaal negeren.
Ik heb de GPS getest in een voor mij heel bekende omgeving omdat ik wou weten of bomen veel invloed hebben op de resultaten. Je verwacht toch ergens addertjes onder 't gras als je zo'n goedkope Chinees in huis haalt. Maar die zijn er dus niet ! :)
Ik ben er goed mee weg, met die displaytjes. Onder het motto: wat ik in China koop, wil ik nu ook zoveel mogelijk gebruiken, heb ik een andere limiet opgezocht: het dunste elektronisch waypoint.
Het doel was om het waypoint niet meer dan één centimeter diameter te maken. Omdat ik een behuizing nodig heb, zocht ik een doorzichtige plastic slangetje van één centimeter dik (binnenmaat). Dan volstaat een gat van 14 mm om de cache te verbergen en dat is iets wat makkelijk moet lukken.
De componentjes moesten dus ook juist gekozen worden. Er is geen plaats voor de microcontroller die ik normaal gebruik, dus deze is kleiner. Het displaytje is 9.5mm hoog. De batterij is de kleinste knoopcel die ik vond (9mm diameter) en ze zou in theorie 3 uur moeten meegaan (3u display 'aan' wel te verstaan). Het gele rondje is die batterij, ik kan er ook makkelijk twee of drie op elkaar monteren.
Dit keer koos ik opnieuw voor de magneetschakelaar, maar ook de kwikschakelaar was hier een optie. Nu nog die vier andere soorten displays proberen ;-)
UPDATE 27/3/2015
Ik heb de software van de Attiny aangepast. Het belangrijkste deel van het batterijverbruik (4 à 5 mA) ging naar de Attiny, terwijl de display (afhankelijk van de tekst die je toont) slechts 2 à 3 mA gebruikt. De Attiny gebruikt dus 2x zoveel als de display. Ik heb nu de Attiny in slaapmode gezet elke keer als ie tekst heeft getoond. Dus tijdens de pauze tussen de regels (telkens 2 of 4 seconden) gebruikt de Attiny geen stroom meer. Dat wil zeggen dat de levensduur van de batterij bijna drie keer langer zal zijn. Volgens de specs van de batterij is het nu dus 9u i.p.v. 3u (de batterij is 30mAh).
Het was alleen een kwestie van tijd natuurlijk vooraleer het zou lukken om zo'n mooi beeld dat je van een Oled display krijgt, ook in een potje van glucosestrips te proppen.
Let wel, niet enkel een kwestie van tijd, ook van veel moeite. Het was behoorlijk frustrerend om te merken dat van alle modellen die ik in huis had, er geen enkele display paste. Toch zijn ze allemaal heel klein, maar de onderkant van zo'n potje is nu eenmaal heel krap. Het is dus uiteindelijk de allerkleinste geworden die nog net voor het Chinese nieuwjaar geleverd werd. Daarna is het drie weken kinkloppen op AliExpress.
Ik moest alles in super kleine versies aankopen, zo was de microcontroller niet bedoeld om met de hand te solderen, maar het is gelukt. Het display'tje heeft een diameter van slechts 0.49 inch, dat is zo'n 1.2 cm. Ik krijg er wel makkelijk de nodige tekst op en wat er niet op kan, kan je laten scrollen. Da's het grote voordeel ten opzicht van een 7-segment potje. Een ander voordeel is dat je er allerhande andere tekst kan meegeven en uiteraard zijn er al nieuwe plannen in die richting.
Het potje werkt nu niet meer met een magneet, maar wel met een kwikschakelaar. Hij start dus als je het potje rechtop houdt en gaat weer in slaap als ie zijn zeg gedaan heeft. Er is dus geen probleem met hoe je het potje weer terug legt: zolang ie stil ligt, zal ie slapen.
Eén groot nadeel aan bestellingen in China: ze duren en duren en duren...
Het is alweer meer dan een maand geleden dat ik muziek in een doosje probeerde te stoppen, iets wat toen slecht afliep. De testen met de D/A convertor waren slecht omdat alles veel te traag ging.
Ik bestelde dus andere modellen en die arriveerden vorige week. Meteen was duidelijk dat op z'n minst het formaat van de chip past in mijn plannen: een zo klein mogelijk doosje dat muziek maakt of coördinaten uitspreekt in bosrijk gebied.
Het oude concept van mijn MP3 potje had nadelen en onder het motto: wat je zelf doet, doe je beter is dit een schot in de roos.
Hier is het dus om te doen, om deze grafiek. De oscilloscoop toont het resultaat van mijn testprogrammaatje dat draait op een Arduino Mini. Ik heb een sinusgolf in een lijst gestopt en gebruik nu 128 stapjes om één golf (op en neer) weer te geven. Er is geen vertraging ingebouwd, dus wat je hier ziet is de maximumfrequentie die mogelijk is met de Arduino en de Max522 seriële D/A convertor. Omdat de seriële verbinding nu SPI is in plaats van I2C, kan ie nu veel hogere snelheden aan.
De golf heeft een frequentie van ongeveer 450 Hz. Dat wil zeggen dat ik grofweg 60.000 samples per seconde seriëel kan versturen. Als je weet dat het met de vorige chip, door het trage I2C protocol slechts 3 à 4000 was, is dit natuurlijk een wereld van verschil.
Muziek is natuurlijk nooit zo'n perfecte sinus, maar als je weet dat een CD speler met 44.000 samples per seconde werkt, zit ik nu toch wel heel goed. Het is natuurlijk nog maar één kanaal, of ik al dan niet stereogeluid ga voorzien zal afhangen van het geheugen dat ik vrij heb (de chip heeft 2 kanalen, dus het kan wel). Het vorige MP3 potje deed dat ook niet, en wees nu eerlijk: zo belangrijk is het niet als verstaanbare coördinaten je doel zijn. Een CD speler gebruikt ook 16 bits per sample en deze chip slechts 8. Maar geef toe, de golf is bijna perfect.
Dat wil zeggen dat de klank dat normaal ook zal zijn :)
Project drie van drie in één productief weekend was het belangrijkste. Het gaat dus al een tijdje over Oled displays hier, dat heb je misschien gemerkt. Het belangrijkste is dan dat alles moet passen in het doe-het-zelf plaatje, en dat liet te wensen over.
Wat je meestal moet doen is een semi-kant-en-klare display kopen zoals ik dus ook al deed voor mijn geocache waypoint in de verkeerspaal. Dat is fijn als het vast zit in een verkeerspaal en je dus per definitie enige diefstalbeveiliging hebt. Als je een potje onder een boom wil verstoppen, is dat niet zo.
Het punt is dus dat alles zo klein, zo goedkoop en zo goed als mogelijk reproduceerbaar moet worden. Dan voldoet een kant-en-klaar printje niet. Daarom dus dit project nummer drie: de Oled display die ik op één eigen ontworpen printje met alle nodige mini SMD componentjes zelf moet solderen. Zoals je ziet is het fijn werk, de display heeft een connector waar de contacten 0.7mm uit elkaar liggen. Dat wil zeggen dat je ze niet meer per stuk met een soldeerbout kan aanraken. Dan moet je dus andere manieren proberen.
Maar dat valt al bij al reuze mee eens je wat geoefend hebt :)
Project 2 van 3 uit een productief weekend is ook klaar. Er waren al heel wat maten en vormen van 7-segment displays hier te zien en enkelen worden ten velde ook vaak gespot door geocachers. Maar tot nu toe slaagde ik er niet in om een 8 cijferige display zo klein te maken dat die bruikbaar is.
Je kan zo'n display met printplaat overal krijgen, dus daar zit niet echt een probleem. Het probleem zit hem in het feit dat die dan nog te groot zijn voor een PETling container van 2.2 cm doorsnede. Net dat is belangrijk als je de display niet wil inbouwen in een vaste constructie, maar gewoon ergens wil verstoppen ten velde. En die display die je koopt, daar zit nog geen besturing in. Je zou er een Arduino aan moeten koppelen en dan wordt je doos al snel veel te groot (en te duur en dus diefstalgevoelig).
Tot nu was er geen manier om een pcb layout zo klein te maken dat alles op één printplaatje past waar net nog een batterij aan vastzit en die net klein genoeg is om nog mee in het plastic 'flesje' te stoppen. Er is enkel plaats voor één microcontroller en die moet veel uitgangen hebben. De Attiny 2313 is een stokoud model, maar de SMD versie is net klein genoeg om in de fles te stoppen. Slechts 2 kB geheugen vroeg heel wat discipline in programmeren, ik heb 40 bytes vrij ;-)
De truuk zit hem hier: de printplaat die ik gemaakt heb, gaat nog net één stap verder dan wat normaal mogelijk is als je ze zelf maakt. De koperen verbindingen bovenaan en onderaan zijn al op de dunst mogelijke maat (10 mil = 0.254mm), maar ze liggen nu op de helft van de mogelijke afstand van elkaar (dus geen 10 mil, maar nog slechts 5 mil = 0.127 mm uit elkaar). Toen ze ontwikkeld en geëtst was, moest ik dus ook met een fijn mesje de baantjes nog eens onder mijn mini microsoopje vrijmaken, want ik zat echt duidelijk op de limiet van wat mijn etsproces aankan.
Maar het lukt, en belangrijk: het is reproduceerbaar. Nu was slechts één op vier printjes gelukt, maar ik ken nu de truuken van de foor om dat gemiddelde op te voeren.
Soit, het is het resultaat dat telt. En dat werkt ! :)
Het eerste project is gelukt en dat is uiteraard heel fijn. Een tijdje was ik al op zoek naar goeie manieren om een Oled display te gebruiken in een geocache, maar eerdere pogingen liepen op niks uit.
Er was vooral heel wat programmeerwerk nodig. Dat komt vooral omdat ik beperkt ben in de mogelijkheden van kleine microcontrollers die ik wil gebruiken. Het doel is immers ook dat het ooit in een potje past waar ooit glucosestrips in zaten. En daar past geen Arduino in, ik mikte dus op een kleine microcontroller (Attiny 85) en een seriële verbinding naar de display. Die strenge eisen hebben me verplicht om het wiel opnieuw uit te vinden softwaregewijs, er bestaat immers geen goeie library die alles al voorgekauwd heeft en waarmee ik simpel kon zeggen: laat nu eens coördinaten zien op dat schermpje.
Hoe het dan wel moest? Tja, alle enen en nullen zelf naar het scherm sturen hé. Dat vraagt wat tijd en denkwerk en daar ging eerder al een heel weekend aan op. Dit weekend ging op aan drie ontwerpen voor de hardware waarvan dit dus het eerste is dat werkt. De volgende uitdaging is hetzelfde model van scherm, maar dan zelf gesoldeerd op één printplaatje. Het maakt alles zot goedkoop, alleen die connector solderen maakt me zenuwachtig.
Maar de verkeerspaal in mijn Rondje Vlaanderen geocache in Zwijndrecht zal binnenkort dus al oplichten met dit schermpje :)
I wrote this little tool because nothing seemed to do the job. I use freeware software to create my own PCBs (Printed Circuit Boards), and the freeware software comes with a major imperfection. It's actually written to create CAD files and send them online to a company that produces PCBs. I guess the author never bothered to create a normal 'Print' button because it's not of great use when working with PCB manufacturers.
However, I kinda like making my own stuff, usually there's no rocket science projects in my collection. Mostly small projects, but that doesn't mean the pcbs are always straightforward. The last one I wanted to create had an OLED display with a 30 pin SMT flex connector that needs to be soldered right on the pcb. That's a major issue if you don't have a 'Print' button.
I usually just made a printscreen and pasted it into Paint. Then, after a few tries, I could always resize it in Paint and then go and try to fit the most challenging component on the transparent sheet that comes out of my regular laserprinter. Two of these sheets aligned perfectly on top of each other create great results, but this time it's a no-go: the connector is just too small, its 30 pins are at 0.65 mm interval, leaving only a few hundreds of a millimeter error margin.
This tool gave me the answer. It's very straightforward to use: just open a bitmap image (created in any PCB design program) and mark two points in the image of which you know the exact distance. Any pcb has items which you can pinpoint at exact distances, say 100 mils, or any larger multiple. The larger the distance you can check, the better the result.
The tool lets you mark two points at the exact location (let's say two pins of an IC or a standard connector on the board), and then converts the image to the exact DPI needed for your type of printer. All you need to do is supply the DPI of the printer and hit 'Print'. As you can see on this macro image of a SMT Attiny 85 microcontroller, it's right on the spot. I still need to try that connector, though.
The tool can be downloaded here:
CLICK HERE TO DOWNLOAD
(unzip the file in any folder and run the executable, it's not a setup file)
This is a small instruction video:
UPDATE
OK, you have to admit, this is pretty amazing! I drew up the first draft of my pcb with the OLED display with 30 pins connector. I got it perfect the first time. I use FreePCB to create the pcb and then printscreened it. Then opened it in my resize tool and marked two points of the attiny chip. It fits amazingly well!
OK, It's not a pcb yet, but that shouldn't be any problem :)
Is dat alweer zo lang geleden dat ik die Oled displays in huis haalde? Zo'n display hoorde nog even bij mijn plan toen ik mijn Rondje Vlaanderen geocaches ging verstoppen. Maar omdat ik de displays niet op tijd aan de praat kreeg, bleven ze liggen.
Nu was er een andere aanpak. De displays die ik had liggen, werkten dus niet. Veel had toen te maken met mijn beperkte kennis over seriële verbindingen met microcontrollers, I2C en SPI. Als iets niet meteen werkt, moest ik meteen de handdoek in de ring gooien. Zonder enige echte datasheet (die hebben de meeste Chinezen nu eenmaal niet in huis) is het trouwens ook niet makkelijk om zoiets aan de praat te krijgen.
Gelukkig was er van de week opnieuw een Shopping Festival. In de praktijk wou het zeggen dat de displays nu met 65% korting werden verkocht. Dat wil zeggen dat de 'gemakkelijke' versies - die met een printje aan vastgemaakt - nu goedkoper zijn dan de industriële versies in bulk. Het kwam neer op een paar dollar per stuk, het juiste bedrag ben ik kwijt.
Belangrijkste is: het werkt meteen! En dit gebruik ik als basis om de vorige loten aan de praat te krijgen. Er is zo'n simpel principe van eliminatie: iets dat werkt kan je stap voor stap afbreken tot het niet meer werkt. Dan weet ik wat ik mis in de 'naakte' versies die ik in april aankocht. Maar voor alle veiligheid heb ik de stock van deze displays die één Chinees in zijn garage op de Shopping Festival dag had liggen meteen leeggemaakt. Hij stuurt er 16 op naar België. Die werken dus al zeker :)
Minstens één verkeerspaal in Zwijndrecht ziet er binnenkort dus lichtjes anders uit.
Als je heel goed kijkt toch :)
Ik wil muziek maken! Het is te zeggen, zoals met mijn Mp3 potje wil ik muziek of spraak die vooraf is opgenomen, opnieuw afspelen ergens in een bos.
Maar ik heb dat potje al, dus waarom iets veranderen dat werkt? Omdat het niet zo goed werkt, en omdat alles beter kan. De batterij laat het te snel afweten en de grootte van het potje irriteert me. Ook het feit dat er een SD kaartje in zit, zit me niet lekker. Kleine SD-kaartjes van 128Mb vind ik hier nergens meer en de Chinese versies zijn onbetrouwbaar.
Ander en beter, dacht ik dus. Maar het alternatief onder het motto: "wat je zelf doet, doe je beter", is in dit geval een behoorlijke uitdaging. Om te beginnen ga ik dus geen MP3 module meer gebruiken zoals vroeger. Zo'n module is voorgeprogrammeerd om muziek te spelen die op een SD kaartje staat. Het enige dat mijn potje doet is met een aparte microcontroller de module besturen als er een magneet in de buurt komt.
Nu moet het dus anders. Ik ga zelf een module maken die geheugen heeft om de muziek op te slaan en een D/A convertor om de digitale signalen hoorbaar te maken door MP3 oortjes. Omdat dat allemaal nieuw is voor mij, was dit de eerste stap. Een Chinees verkocht 20 D/A covertors voor een dollar en dat boeide me. Ik ging er vandaag mee aan de slag en weet nu waarom ie die prijs hanteerde.
Uiteraard gaat het zo niet in een potje, we zijn slechts in de experimenteerfase. Links zie je een mini Arduino en rechts de beruchte Chinees (PCF8591). Het is een chip met 4 A/D convertors en één D/A convertor. Hij heeft dus te veel pinnen en is nog te groot voor wat ik echt nodig heb. Maar dat is nu even het minste van mijn zorgen.
De chip doet de D/A coversie serieel, dat wil zeggen dat de Arduino links muziek data zal doorgeven door twee draadjes. Daar zit dus meteen de belangrijkste reden om deze chip niet te gebruiken. De seriële interface kan 100kbps versturen, wat op zich best veel is. Maar als ik 8 bits nodig heb per sample (het blijken er 9 te zijn), kan ik dus 11000 bytes per seconde versturen. Dat is behoorlijk weinig als je weet dat een CD speler er 44100 verstuurt. Ik zal dus geluiden met een frequentie boven 5500 Hz niet kunnen afspelen en dat is een probleem. Nu sta ik niet te springen om CD kwaliteit in een bos te brengen, maar enkel spraak onder de 5500 Hz klinkt al niet mooi meer. De 's' klanken worden 'sj' klanken en het verschil tussen een 't' en de 'p' zal vervagen.
Toch moest ik even proberen wat ie kon. Geef toe, dit is een mooie zaagtand die de Arduino heeft verzonnen. Hij is samengesteld uit 512 waarden van 0 tot 255 en weer terug naar 0. De vorm is goed, maar je hoort niks. Dat komt omdat alles zo traag gaat dat ie maar 5 Hz is. Je hoort dus niks. Nu is dat geen punt, want ik moet voor één vorm nooit 512 waarden gebruiken, een CD speler kan dat ook niet.
Ik kan 50 waarden proberen zoals hier, maar er loopt iets mis. De chip heeft een soort datamodus (die heb ik nodig) om enkel data te versturen over de bus. Je stuurt enkele bytes om te zeggen dat ie in die modus moet werken, en alles wat je dan stuurt, moet ie als data beschouwen.
En dat doet ie dus niet! Je ziet dat de vorm kleine hoekjes heeft, zo zouden er dus 50 moeten komen. Maar in de helft geeft ie het op, en daardoor is de golf plots onderbroken. Ik kan dus maximaal een 20 of 30-tal bytes sturen in deze modus, en dan zou ik weer twee bytes moeten sturen om opnieuw te starten. Maar dan zijn er dus kleine hiaten elke 20 of 30 samples. En dat zal je zeker horen als een constante ruis. Het alternatief is die modus niet gebruiken (zoals de eerste foto), maar dan beperk ik het aantal samples tot 3000 à 4000 per seconde, en dat is waardeloos. Spraak van 1.5 à 2 kHz kan je echt niet maken, een goed oor kan tot 15 kHz horen.
Soit, ik kan er dus niks mee doen en een volgende lading chips is onderweg. Ze zijn veel kleiner en de seriële bus is een SPI bus. Die is niet beperkt in snelheid tenzij de snelheid van de Arduino me parten speelt. Maar daar gaan we even niet vanuit.
Oh ja, ze zijn ook veel veel duurder, die andere chips. In plaats van twintig voor één dollar heb ik er maar twee voor één dollar.
Ik moet toegeven, ik heb me even laten gaan in het soldeerkamertje. Dat komt eigenlijk vooral omdat je nu eenmaal niet één klein printplaatje kan maken, in dit geval staan er 9 op één vel.
Er waren er al een paar in gebruik van de twee vellen, en als ik de 'afval' verwijder (helaas heeft meestal elk vel wel één of meer mislukte ontwerpjes), hield ik er dus twaalf over.
Niet dat ik ze zelf allemaal in gebruik ga nemen, een aantal zijn bedoeld voor een andere geocacher. En de rest hou ik als reserve nu ik merk dat zo'n potje in de natuur niet altijd met zachte hand wordt behandeld.
Nu had ik een mooi plan om de 7-segmentpotjes die niet voor mezelf bedoeld zijn programmeerbaar te maken. Die van mij zijn dat ook, maar er is een groot verschil tussen de originele software in het geheugen branden en enkel de coördinaten aanpassen aan de plek waar de potjes moeten liggen. Ik kan dat combineren in één beweging, maar als ik de potjes overhandig is dat niet meer zo. De geocacher zou de ontwikkelomgeving moeten installeren en heel wat know-how moeten hebben over compileren en uploaden en zo.
Met deze programmer lukt dat dus allemaal. Het is niet meer dan een extra klein printje met één chip en een toetsenbordje, maar het geeft genoeg flexibiliteit om coördinaten vast te programmeren per potje. Er is één grote 'helaas'! Het werkt niet. Het is te zeggen, alles werkt perfect zolang ik beide printplaatjes (zowel de programmer als het 7-segment potje) aan de 5V voeding van een USB verbinding heb hangen, vanaf het moment dat alles op de 3V batterij van het 7-segment potje zelf hangt, geeft ie geen kik meer.
Dat is heel vreemd, want beide chips zijn voorzien om vanaf 2,8V perfect te functioneren. Ik weet inmiddels dat 2,3V ook al genoeg is, wat mij dan nog meer de wenkbrauwen doet fronsen. Er is immers buiten de spanning geen enkel verschil tussen de twee opstellingen.
En dat is heel vervelend, want ik weet dus niet hoe dit verder moet. Ik wou alles veel makkelijker maken, maar dat zo lukt dus niet. Een extra voeding of een USB verbinding enkel om ze te programmeren zouden een optie zijn die misschien kan werken, maar het originele idee om alles eenvoudig te maken verliest dan wat van zijn pluimen.
OK, dus dit is echt wel de moeilijkste tot nu toe. Ik wil een mini lichtkrantje maken dat maximum 6.7 centimeter breed is. Zoveel plaats heb je slechts in deze verkeerspaal en dat is in dit geval de belangrijkste beperking. Met lichtjes van 2mm per stuk kan je een krant maken van 24 bij 7 en dan heb je dus echt wel een hoop verbindingen nodig.
Door het grote aantal lichtjes komt er ook heel wat meer aan te pas dan één microcontroller zoals ik dat tot nu toe een beetje gewend was. Er zijn vijf microchips nodig om er tekst op te krijgen, 't is te zeggen als mijn ontwerp werkt. Dat is nu het nadeel: je kan van zo'n ding nooit een proefopstelling maken omdat de chips te klein zijn en de verbindingen gewoon te talrijk. Het gaat sneller om gewoon meteen de print te maken en dan zien of je origineel idee ook in de praktijk werkt. Hoewel, alleen al het ontwerp op de PC kostte al twee dagen tijd. Gelukkig heb ik dat :)
Ik was al eventjes op de sukkel met mijn 7-segment potjes. Niet dat ze niet goed werken hoor, integendeel. Maar ook mijn versie 2.0 had geen goede mogelijkheid om de coördinaten te programmeren. Ik had eerst wel één klein drukknopje voorzien, maar dat bleek al lang onhandig en niet betrouwbaar te zijn.
Nu is het wel gelukt, er hoort nu zowaar een echte 'programmer' bij. Misschien moet ik de versienummer nog eens verhogen dan ;-)
Het principe is simpel: het 7-segment potje heeft een kleine connector onder de display zitten. Via die connector kan ik de microcontroller verbinden met de PC en de software opladen. Het probleem is dat de software meteen de coördinaten bevat die het potje aan de geocacher gaat tonen. Nu speelt dat voor mij niet zo'n rol, want ik kan programmeren wat ik wil. Maar als ik iemand anders potjes wil doorgeven, dan zou ik elke keer de coördinaten vast moeten programmeren voor de CO (cache owner) en hij zou die ook nooit meer kunnen aanpassen.
Dat is dus bij deze opgelost. Een tweede microcontroller met extra software 'praat' nu met het potje. Via een toetsenbord kan de CO de coördinaten ingeven die het potje daarna kan tonen in een bos.
Als je een nerd bent en/of gewoon wil snappen hoe dat nu werkt, kan je verder lezen ;-)
In principe is het heel simpel om twee microcontrollers met elkaar te laten spreken. Ze doen dat met een interne SPI bus, een seriële bus die enkele pinnetjes bezet houdt van de chip. Daar zat nu net het grote probleem: ik heb alle pinnetjes, inclusief die van de bus, al in gebruik om de display aan te sturen. Daarom moest ik iets anders verzinnen en dat had heel wat voeten in de aarde.
Ik moest een manier verzinnen om de twee microcontrollers met elkaar te laten praten (de eerste hangt aan het toetsenbord en de tweede aan de display) terwijl de tweede ook coördinaten toont. Zoiets kan nooit omdat die pinnetjes nu eenmaal bezet zijn, de display hangt eraan vast. Maar ik kan onze ogen een beetje voor de gek houden door de display eventjes te doven en dan een korte puls te sturen naar de eerste.
Om zoiets te doen zonder ongelukken, heb ik een logic analyzer nodig. Ik probeerde het eerst zonder, maar dat gaf ongelukken (lees: kortsluitingen). Ik moest immers een strakke timing aanhouden omdat de twee microcontrollers op dezelfde draadjes spanning gaan zetten. Als ze dat samen doen, ontploft de boel (bij wijze van spreken hé).
Omdat ik zo'n logic analyzer niet kan betalen, kocht ik deze Chinese versie van 9$. Het ding is geniaal in zijn eenvoud en toch extreem krachtig in prestaties. Er kunnen acht kanalen aangesloten worden die je kan bekijken op je PC met bijgeleverde software. Ik moest maar twee kanalen zien, dus dat volstaat.
Dit eerste scherm toont het signaal van twee pinnetjes die de chips dus delen. De pinnetjes worden in chip 2 dus ook gebruikt om de display te besturen. Af en toe schakelt de display uit en stuurt ie een korte puls naar chip 1. In de 'normale' toestand zie je een blokgolf op kanaal 0 & 1. Dat komt omdat de display niet op volle kracht werkt, hij wordt gedimd om de batterij te sparen. Af en toe komt dus die puls die je aan de rechterkant ziet verschijnen (het witte balkje met enkele extra pulsen).
Met de logic analyzer kan ik die puls erg vergroten en dan zie je dit. De puls wordt herkend door de eerste chip en die geeft nu een antwoord in vier stappen. Dat zijn de vier witte balkjes die volgen.
Zo één balkje ziet er zo uit. Kanaal 0 geeft 8 pulsen als kloksignaal en kanaal 1 heeft nu seriële data op de stijgende flank van de klok. Als je nu een nerd bent en snapt dat de lsb eerst werd verstuurd, dan weet je normaal dat hier het getal 8 werd verstuurd ;-)
In de praktijk wil dit zeggen dat chip 2 altijd korte pulsen uitstuurt tussen de coördinaten. Die zijn zo kort dat je ze niet ziet. Maar als je chip 1 verbindt met de kleine connector, ontstaat er een gesprek tussen de twee chips. Via het toetsenbord kan je intikken wat chip 1 moet vertellen aan chip 2. Die zal dat opslaan in zijn EEPROM geheugen zodat dat nooit verloren gaat.
Er moest iets belangrijk veranderen aan de MP3 potjes die ten velde liggen in Niel en Zwijndrecht. De ene had al na tien dagen een platte batterij en de andere was plots verdwenen. Ik kan weinig verhelpen aan diefstallen, het is wel zo dat Zwijndrecht geen mogelijkheid had om het potje te verankeren met een ketting zoals de andere waypoints dat wel hebben. Maar fundamenteel moesten ze gewoon veel betrouwbaarder zijn. Als het nog eens verdwijnt, moet ik dat ook anders aanpakken.
Zo ziet de nieuwe constructie eruit. Ik ga niks meer verlijmen omdat het toch kapot gaat. Er komt dus nu een stuk aluminium aan te pas om de print vast te houden en tevens de connector voor de hoofdtelefoon toegankelijk te maken. De connector is nu trouwens een goedkoop Chinees model, en geen Belgische met schroefdraad.
Ik redeneerde eerst dat die met schroefdraad beter zou zijn, maar nu blijkt dat de connector toch loskomt, is dit beter. Hij is verankerd in de printplaat met meer dan zijn soldeerpunten, dus qua stevigheid zit dat wel goed.
Het probleem van de batterij is uitgeklaard. Om te beginnen was de eerste batterij er eentje "uit de doos" en dat is helemaal geen goed idee als die doos uit China komt. De batterij geeft de volledige spanning weer als je ze uitmeet, maar in werkelijkheid is ze minder dan 20% opgeladen. Ik merkte nu dat na 2 volledige cycli de batterijen echt goed zijn. De nieuwe modellen gaan vier uur mee als ze muziek maken en vijf jaar in slaaptoestand. De eerste tijd heb ik gemeten, de tweede is uiteraard theoretisch ;-) Er is een tweede probleem met de module zelf waardoor de spanning zelf snel zakte, maar dat is ook opgelost.
Er zijn ook aanpassingen aan de elektronica. Naast de microchip die de software bevat, zijn er nu vijf SMD componentjes nodig. Twee daarvan zorgen dat je met een flinke tik op de box de muziek niet laat starten, zoals dat eerst zonder magneet dus kon. Nu kan ik dat zeggen omdat de eerste versie toch nergens meer ligt ;-)
Maar de belangrijkste aanpassing is gebeurd in de printplaat zelf en in de software. Een zenerdiode en een grote weerstand verlagen de batterijspanning zodat de chip die spanning als een nauwkeurig getal kan inlezen door een ingebouwde A/D convertor. Hij zal dus zelf weten wanneer de batterij plat gaat, en laat dat ook horen zoals ik dat hier al eens had uitgetest. Een Engelsman zal zeggen hoeveel spanning de batterij nog geeft als die erg laag wordt. Ik reken een beetje op de bezoekers om dat dan ook te melden.
Dit is het resultaat. Het potje is enkel waterdicht als de dop erop zit, maar eigenlijk was dat al zo. Ik probeerde wel om een mooi plastic dopje te voorzien dat waterdicht verlijmd was, maar dat is onzin. Er is immers altijd het gat van de connector zelf, dus waarom die moeite nog doen. De print is trouwens behandeld met plasticspray en ik test ze uit door ze onder de kraan te houden. En ja, ze blijft dus werken!
Mijn "making of" filmpje van vroeger moest dus ook een update krijgen :