Gode ettermiddagselskere DIY! I dag skal vi sette sammen en enkel avstandsmåler på Arduino Pro Mini. Enheten er i stand til å måle en avstand fra 2 til 400 cm. Feilen til denne enheten kommer til bare +/- 1-5 cm, avhengig av den målte avstanden.
Verktøy og materialer
-Arduino Pro mini
Sensor HC-04
- Indikator på tm1637
-Wire (jeg har - MGTF 0.12)
-Programmator
-Plastisk hus
-Li-on batteri
-Liten bryter
- Ladetavle på TP4056
-Superkley
-Loddjern
-Pripoy
-Kanifol
Drill, drill, etc.
Trinn 1. Ordning:
I følge ordningen er alt enkelt, uten tillegg.
Trinn 2. Forberedelse av saken:
Først prøver vi på sensoren og borer to hull i 15 mm.
Deretter lager du et hull for en mikro-usb-kontakt med en 3-3,5 mm bor.
Vi velger en bor for diameteren på bryteren og boren.
På lokket lager vi et "vindu" for syv-segmentindikatoren (på bildet uten behandling), og vi avslutter alle ujevnheter med en fil.
Trinn 3. Firmware:
I skissen er variabler som kan justeres for deg fremhevet. All kode er kommentert.
#include // biblioteker for arbeid
#include
// ------------- For å konfigurere --------------------------------- --------------------------------
bool Lang = 0; // 0 - måle lengden fra sensoren
// 1 - måle lengden fra husveggen, som er motsatt av sensoren
usignert int korpus = 10; // avstand fra sensor til motsatt vegg (i centimeter)
#definere CLK 2 // pinner for å koble til
#definere DIO 3
#definere TRIG 4
#definere ECHO 5
// ------------------------------------------------ ----------------------------------------------
usignert int-impuls = 0; // variabler for beregning
usignert int sm = 0;
GyverTM1637 disp (CLK, DIO);
ugyldig oppsett () {
pinMode (TRIG, OUTPUT); // sett som en utgang
pinMode (ECHO, INPUT); // angitt som inngang
disp.brightness (7); // lysstyrke 0-7
disp.point (0); // slå av tykktarmen
disp.clear (); // fjern indikatoren
}
void loop () {
digitalWrite (TRIG, HIGH); // tilførsel 5 volt
forsinkelse Mikrosekunder (10); // forsinke 10 mikrosekunder
digitalWrite (TRIG, LOW); // server 0
impuls = pulsIn (ECHO, HØY); // måle pulslengden
sm = impuls / 58; // konvertere til centimeter
if (Lang == 1) {// sjekk innstillinger
sm = sm + korpus;
}
if (sm <= 2) {// null falske verdier
sm = 1;
}
if (sm> = 405) {
sm = 1;
}
int heltall = sm / 10;
int desimal = sm% 10;
desimal = desimal * 10;
disp.displayClock (heltall, desimal); // utgang til indikator
forsinkelse (300); // forsinkelse 0,3 sek. mellom verdiutgang
}
Deretter kobler du programmereren og blinker MK.
Trinn 4. Forsamling:
Siden enheten går på batteristrøm, trenger vi ikke ekstra lading. Derfor lodder vi lysdiodene og tilbakestillingsknappen på Arduino-brettet (for å redusere størrelsen).
Lim batteriet på kroppen på superlim. Vi limer ladebrettet på batteriet, installerer bryteren og lodder alt i henhold til ordningen.
Vi limer sensoren på saken og lodder alt i henhold til ordningen. Først var det en ide om å feste brettet på tosidig tape, men så ble det bestemt å legge det på superlim. Indikatoren kan skrus på eller limes på.
Trinn fem. Test:
Merk: det fjerde segmentet vil alltid vise 0. Dette er for å sikre at det siste segmentet ikke er tomt. Det viser seg at avlesningen er 270, da betyr dette at avstanden er 27 cm.
For å være sikker, kan vitnesbyrdet bekreftes med herskeren.