Sådan bygger du et infrarødt kamera derhjemme for mindre end $ 100 (del 2)

Det er et stykke tid, siden jeg har skrevet det første kapitel i denne artikel. Men nu foran det nye år har jeg endelig nok tid til at afslutte det, jeg har lovet for længe siden.

Så her går vi ...

Lad os først se hurtigt på det primære skema i vores termiske billedsystem.

Hvordan du kan bemærke, at der er tre hovedknudepunkter i dette skema:

  • Laserpointer-modulknude
  • IR-sensor MLX90614DCI-knude
  • Servos knude
Du kan læse om hver knude i mit forrige kapitel i denne artikel

Som forsyning blev brugt den bærbare computer og tilsluttet alle disse ting gennem COM (USB) -porten, som giver os 5 V DC og 0,5 A (USB 2.0) eller 0,9 A (USB 3.0) afhængigt af hvilken USB-port, der ville blive brugt.

Skemaudvikling:

  • 3.3V - bruges til forsyning af IR-sensoren og forbindes gennem pull-up-modstande hver 4.7kOhm til udgangene SDA og SCL
  • 5V - bruges til levering af servoer.
  • D8 - er ansvarlig for at dreje vinklen på den vandrette servo.
  • D9 - er ansvarlig for vinkel på den lodrette servo.
  • A4 - forbindes til IR-sensorens SDA-kontakt
  • A5 - forbindes til IR-sensorens SCL-kontakt
  • GND - er ansvarlig for forankringen af ​​systemet

Okay, nu når vi regner ud med hardwaredelen, fortsæt derefter med at oprette software til vores termiske billedbehandling. Fra starten planlagde jeg at implementere softwaredel som webprojekt med brug af React, men for at lette udviklingen brugte jeg en standard Windows-form.

Men lad os gå tilbage til Arduino.

For at begynde at læse sensordata skal du downloade Adafruit_MLX90614 fra GitHub-arkivet. Efter bare omdøbe den ukomprimerede mappe Adafruit_MLX90614, og kontroller, at mappen Adafruit_MLX90614 indeholder Adafruit_MLX90614.cpp og Adafruit_MLX90614.h.

Placer bibliotekmappen din arduinosketchfolder / biblioteker / mappe. Du skal muligvis oprette undermappen biblioteker, hvis det er dit første bibliotek. Genstart IDE.

Når al forberedelse ville være gjort, kan vi begynde at arbejde med kernen i vores mikrokontrollersoftware.

Så dybest set kan vi opdele vores program i tre mindre dele:

  • Variabler definition
  • opsætning ugyldig
  • sløjfe tom

Ikke noget specielt…

I variabeldefinitionsdelen inkluderer vi bare nogle yderligere biblioteker, som vi vil bruge i næste trin og definerer selvfølgelig de to variabler for vores servoer, en til vores IR-sensor og en til, som opfordrer til gentagelse for at gentage vores scanningsalgoritme, indtil det ville være havde brug for.

Ved opsætnings-tomrum tildeler og knytter vi simpelthen variablen til ægte stifter af Arduino.

Og til sidst sidst en loop-ugyldig del, hvor placeret den vigtigste logik i vores system. Kort sagt, vi har 3 løkker inde her. Den første arbejder, indtil scanning foregår og afsluttes, når man gentager sig falsk.

Den anden sløjfe er ansvarlig for vandret bevægelse og udfører 60 trin 1 ° hver af dem på grund af de tekniske egenskaber ved brugte servoer.

Det samme fungerer for den tredje sløjfe, der er ansvarlig for lodret bevægelse, men i dette tilfælde vil servoen kun gøre 45 trin.

Efter hver afsluttet lodret sløjfe returneres den første servo til den oprindelige lodrette position 65 °, og alt starter fra starten.

Ved afslutningen af ​​scanningen ser du i dit serielle monitorvindue matrixen 60-45 størrelser, hvor hver af 2700 målinger ville være relateret til den temperatur, som sensoren får i hvert øjeblik af tiden.

Og baseret på denne matrix kan du blot opbygge det ønskede termiske billede.

Jeg tilføjede små forsinkelser (100ms og 50ms) til forbedring af billedkvaliteten, hovedformålet var at foretage en pause mellem to målinger for at give sensor få mere nøjagtige data indtil denne periode. Du kan øge eller reducere disse værdier i henhold til dine behov.

Med hensyn til desktop-delen af ​​softwaren er alt ret simpelt, alt hvad vi har brug for for at hente dataene fra COM-port og vise dem i farver i henhold til de modtagne temperaturer. Jeg har ikke anført koden på grund af det faktum, at det ville være et dusin linjer med kode, men hvis du er interesseret i, hvordan den blev implementeret af mig, skal du kontrollere depotet på min Github.

Så da vi var færdige med softwaredelen, er det på tide at prøve vores termiske billedoptager i aktion. Som et scanningsobjekt brugte jeg flasken med koldt vand, som blev placeret ved bordet. Hvordan vi kan se til det rigtige billede de mest sete røde farver, hvilket betyder, at temperaturen uden for det scannende objekt er højere end ham selv. Blå farve angiver det kolde vand inde i flasken, og små pletter med grøn og gul-orange viser områderne med opvarmning af vand.

Så alt ser logisk ud i det mindste for mig, du kan prøve at scanne, hvad du vil, bare husk, at scanning skal udføres nøjagtigt i retning af objektet, ellers kan du fange nogle tredjeparts temperaturpladser med høj eller lav temperatur , der kunne rodet dit termiske billede.

venstre - rigtigt billede; højre - termisk billede

Ahhhh… glemte næsten ikke at vise, hvordan denne smukke ser ud.

Den smukke

Jeg håber, at denne artikel vil være nyttig for alle, der i øjeblikket prøver at gøre det samme eller bare vil gøre det i den nærmeste fremtid.

Hvis du nød denne historie, skal du klikke på knappen og dele for at hjælpe andre med at finde den! Efterlad en kommentar nedenfor.