Automatisk layout
af stemmesedler
af stemmesedler
Automatisering | Programmering
Jeg dvælede ved at alle landets 98 kommuner, ved hvert valg købte eksterne grafikertimer til layout af deres stemmesedler. Een ting er pris, men en anden ting er at stemmesedlers opbygning meget let snyder hjernen og layout-fejl her overses. Du kender det f.eks. fra ord der er stavet forkert.
Jeg lavede derfor en webløsning hvor automatik layouter alt. Det tager her et par sekunder at generere en trykklar fil, versus de 2-4 købte grafikertimer. Ovenstående er skabt ud fra en simpel Excel-fil.
Men det vigtigste her er at fejl nu undgåes, såsom manglende afkrydsningfelter. Det driller demokratifølelsen hos borgerne og skaber masser af støj på kommunalgangen. Potentielt påvirker det et partis stemmer.
Kommunefugl
Programmering | Elektronik | 3D‑print
En gave til et kollegakontor hos Herning Kommune. De ønskede sig en "Birdie" til tjek af Co2 i luften og jeg kom fnisende i tanke om, at der var en fugl i byvåbnet.
Hvis man ikke kender "Birdie", er det en fugl der "dør" når Co2 i luften kommer over en hvis grænse.
Træarbejde, 3D-print, programmering, sensor, diverse elektronik, lodning, skæreplotter, smil og fnis, var opskriften.
Næbbet roterer løst og hænger derved nedad, når fuglen drejer de 180 grader mod døden.
Planlægningsskærm med Google sync
Programmering | Google API | Elektronik
Når jeg går halvsøvningt ned af min trappe om morgenen, fanger en sensor bevægelsen og viser mig de næste dages aftaler, på en nu tændt skærm, pladask i hovedhøjde foran mig.
Ville have bedre overblik, uden alt "bulshittet" fra andre løsninger, så valgte selv at udvikle løs. Er udviklet i node.js/Electron og har integreret sync med Googles kalender-API.
Viser kun vågne timer og kun "I dag", "I morgen" og "i overmorgen" i timevisning - resten følger i en liste. Derudover er min opgaveliste vist til venstre, sammen med klokken samt vejret i 3 timers intervaller.
Kører jeg programmet på min pc, vises der yderligere muligheder; f.eks. tilføjelse/afslutning/tilpasning af opgaver og aftaler, samt at man kan trække opgaver fra opgavelisten ind på en given time, til adhoc og hurtig planlægning heraf.
Det matcher meget godt mine ønsker og det var ganske spændende at stykke sammen; især at få leget med Googles Kalender API.
Custom Busy-light
Programmering | Reverse Engineering | Elektronik | 3D‑print
Denne udfordrede mig. Ikke på bygning af enheden, men på neddykningen i usb-protokollen og programmeringen af dette.
Jeg ville nemlig - 1:1 - få enheden til at præsentere sig for computeren som en officiel enhed, så den kunne benyttes i eksisterende og officiel software.
Det betød direkte aflæsning på usb-kablet fra en købeenhed med en logic analyzer, lære koncepter som usb-descriptors og det generelle handshake der sker, når man isætter en usb-enhed. Og derefter afkode alt dette, så det kunne replikeres i min egen enheds programmering.
Det lykkedes heldigvis, men samtidig lærte jeg hands on, hvor usikkert usb er. Jeg ville kunne præsentere mig som hvilken som helst enhed; et tastatur, en printer, en lagerenhed; og få disse enheders rettigheder til systemet. Tastatur/mus er f.eks. aldrig(?) sikret sikkerhedsmæssigt og man ville kunne taste, eksekvere og kopiere løs, med brugerens egne rettigheder.
Auto-lock via persongenkendelse
Programmering | Machine Learning
Et stykke software jeg lavede, da den gode vane med at få låst sin computer når den blev forladt, ikke altid kom i spil.
Er lavet i node.js/Electron og bruger en machine-learning model backend i et Tensorflow-baseret bibliotek, til at se om der sidder en person bag skærmen ud fra en række parametre. F.eks max-afstand fra skærmen. FFmpeg bruges ligeledes backend, til at tage billeder via ens webcam.
Den låser computeren efter x sekunder, hvis der ikke sidder en bruger foran computeren.
På sigt vil jeg udvide den til, at man kan træne sin egen model ud fra egne billeder - on the fly. Altså så programmet derefter, kun genkender den ene person den er trænet på og så ellers låser computeren.
Automatisering
af luftrenser
af luftrenser
Automatisering | Programmering | Reverse Engineering | Elektronik
Ønskede at styre min - da manuelle - luftrenser med tidsplaner og triggere.
Med en god portion reverse-engineering af elektronikken, fik jeg påloddet yderligere relevant elektronik og ledninger, samt isat en microcontroller med WIFI som styring.
Programmerede en styring til aflæsning af nuværende tilstand og som kan lave "knaptryk" til hastighedsskift ol. Styringen er kodet inklusiv et lille API så det kan styres af anden software.
Det styres over wifi af Home Assistant, som sørger for at lade den køre op på max hastighed (jetfly!) 4 timer hver nat.
Niveauskift når jeg forlader hjemmet, er på tegnebrædtet.
Belyser til serigrafi
Programmering | Elektronik | 3D‑print
Manglede en UV-belyser - med timer - til når jeg legede med tøjtryk derhjemme. De er dyre og primært til industribrug, så hvorfor ikke bikse en selv?
Efter byggen kasse, boren af 600 mikrohuller, isætning af 300 UV-LED'er, endnu flere lodninger her og der og diverse tryl, kom jeg i mål. Pyh!
En microcontroller og hjemmestrikket kode herpå, blev hjernen som styrer timer, display, højtaler, knapper mm.
Opgradering af skæreplotter
Programmering | Reverse Engineering | Elektronik | 3D‑print
Skærmen til min meget gamle skæreplotter døde. En ny kunne muligvis skaffes, men den var dyr, viste blot et par tal og jeg havde længe tænkt at opgradere fra den gamle grønne monokrom-lcd til noget nutidigt.
Og hvorfor ikke ligeså tilføje trådløs "print" fremfor kablet, lagerplads, nyt frontpanel og andet brugbart, nu jeg var igang.
Det krævede den helt store omgang nørd. Det gamle skærmsignal skulle f.eks. helt low level oversættes til noget der kunne sendes til den nye skærm, så måtte aflæse bits direkte på skærmkablet og manuelt afkode logikken. Data modtaget via wifi, skulle sendes videre byte for byte serielt.
Tilføjede som bonus at skærejobsdataen (HPGL) blev oversat grafisk og vist på skærmen under skæring. Tilføjede også et menusystem og andet visuelt kræs.
Bredt funktionelt, er det som at have en fuldstændig ny maskine.
Opgradering af rullegardiner
Automatisering | Programmering | Elektronik | 3D‑print
Mine gamle manuelle rullegardiner trængte til motor og automatik.
Fik tilpasset en eksisterende 3d-model til rullegardiner, så det matchede mine egne behov samt mine rullegardiners udformning, fik isat en lille stepper-motor, lavet en fuga-kompatibel knap til indmuring, trukket kabler i væggen og programmerede styringen på en microcontroller.
Programmerede hertil et API så det kunne styres; udover manuelt med knapper i væggene.
Mine rullegardiner kører nu automatisk op ved solopgang og ned ved solnedgang, styret af Home Assistant via det API jeg lavede.