- Tarvittavat komponentit
- APDS9960 RGB- ja eletunnistin
- Piirikaavio
- Koodin selitys
- Eleohjatun kosketuksettoman noston testaus
Tänä Coronan pandemian aikana hissistä on tullut korkean riskin paikka, jossa kaikki koskettavat samoja painikkeita. Monissa paikoissa ihmiset ovat löytäneet temppuja estääkseen kosketuksen hissipainikkeisiin, kuten käyttämällä pumppauspaperia, hammastikkuja tai saniteettipyyhkeitä nostopainikkeiden painamiseen.
Joten jatkamme aiempia Corona-turvallisuusprojekteja, kuten Automaattinen puhdistuslaite, kontaktiton lämpötilan seuranta ja Sosiaalinen etäisyysilmaisin, aiomme rakentaa eleohjatun hissin prototyypin Arduino Nanon avulla.
Tämä kontaktiton hissi käyttää Arduino Nanoa, APDS9960-eleanturia ja OLED-näyttömoduulia. Tämän elepohjaisen ohjauspaneelin avulla voit hallita hissiäsi helposti tekemällä ele. APDS9960-anturia käytetään eleiden lukemiseen. YLÖS- ja ALAS-eleitä käytetään lattianumeron asettamiseen, vasen ele on sulkea hissin ovi ja siirtää hissiä lattianumeron mukaan ja Oikea ele käytetään oven avaamiseen.
Tarvittavat komponentit
- Arduino Nano
- OLED-näyttömoduuli
- APDS9960 RGB- ja eletunnistin
- Leipälauta
- Neulalangat
APDS9960 RGB- ja eletunnistin
APDS9960 RGB- ja eleentunnistusmoduuli on pieni aloituslevy, jossa on sisäänrakennettu APDS-9960 -anturi, UV- ja IR-estosuodattimet, neljä erillistä eri suuntaan herkkää diodia ja I2C-yhteensopiva liitäntä. Tätä anturia voidaan käyttää ympäristön valon ja värin mittaamiseen, läheisyyden havaitsemiseen ja kosketuksettomaan eleentunnistukseen. Sen eletunnistusalue on 10-20 cm, ja sitä voidaan käyttää ohjaamaan mikro-ohjainta, robottia ja monissa muissa projekteissa.
Ominaisuudet:
- Käyttöjännite: 2,4 V - 3,6 V
- Toiminta-alue: 4-8 tuumaa (10-20 cm).
- I2C-liitäntä (I2C-osoite: 0x39).
- Ympäröivä valo ja RGB-väritunnistus, läheisyys
- Tunnistaminen ja eleiden havaitseminen optisessa moduulissa
- I2C-väylän nopean tilan yhteensopiva käyttöliittymä, jonka tiedonsiirtonopeus on enintään 400 kHz.
Piirikaavio
Piirikaavio kosketuksettomalle hissille APDS9960: lla on annettu alla.
Yhdistämme Arduino Nanon APDS9960-anturin ja OLED-näytön kanssa. Sekä APDS9960-anturin että OLED-näytön VCC- ja GND-nastat on kytketty 3,3 V: n ja GND: n Arduinoon. Kun APDS9960-anturin ja OLED-näytön SCL- ja SDA-nastat on kytketty Arduinon A5- ja A4-nastoihin.
OLED & APDS9960-nasta |
Arduino Nano Pin |
VCC |
3.3v |
GND |
GND |
SCL |
A5 |
SDA |
A4 |
Tältä näyttää Arduinoa käyttävän eleohjatun hissin täydellinen asennus:
Saat lisätietoja OLED-näytöstä ja sen liitännästä muihin mikrokontrollereihin seuraamalla linkkiä.
Koodin selitys
APDS9960: ta käyttävän kontaktittoman hissin täydellinen koodi on annettu sivun lopussa. Tässä selitämme joitain tärkeitä koodin osia. Tässä ohjelmassa aiomme käyttää APDS9960- ja Adafruit_SH1106-kirjastoja . APDS9960-kirjaston voi ladata Arduino IDE: ltä. Lataa kirjasto siirtymällä Sketch> Library Manager> Search ja kirjoittamalla sitten Arduino APDS9960. Vaikka Adafruit_SH1106-kirjasto voidaan ladata täältä.
Joten aloita koodi käynnistämällä kaikki tarvittavat kirjastot. Adafruit_SH1106.h on muokattu versio alkuperäisestä Adafruit-kirjastosta.
#sisältää
Määritä seuraavilla riveillä muuttujat nykyisen kerroksen ja kerroksen numeron tallentamiseksi mihin käyttäjä haluaa mennä.
int floornum = 0; int nykyinen kerros = 0;
Syötä sen jälkeen YLÄNUOLI, ALANUOLI, Avaa ovi ja Sulje ovi -kuvien bittikartat. Kuvan HEX-koodi voidaan luoda käyttämällä muunninta, kuten Image2cpp. Jos haluat lisätietoja Image2cpp: n käytöstä , seuraa tätä Arduino QR-koodigeneraattorin opetusohjelmaa.
const allekirjoittamaton merkintä PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, …………………………… ………………………………………………………..}; const allekirjoittamaton merkki alas PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, …………………………… ………………………………………………………..}; const allekirjoittamaton merkki ovenavaus PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xe0, ………………………… …………………………………………………………..};
Että asennus () funktio, alusta Serial Monitor siirtonopeus 9600 virheenkorjausta varten. Alusta sitten seuraavilla riveillä OLED-näyttö ja APDS9960-anturi aloitusmenetelmällä () seuraavasti:
Sarjan alku (9600); if (! APDS.begin ()) {Serial.println ("Virhe alustettaessa APDS9960-anturia!"); } Serial.println ("Eleiden tunnistaminen…"); display.begin (SH1106_SWITCHCAPVCC, 0x3C);
Kun olet alustanut näytön ja anturin, tyhjennä näyttöpuskuri clearDisplay () -menetelmällä ja aseta fonttikoko ja -väri menetelmillä display.setTextSize () ja display.setTextColor () .
display.setTextSize (2); display.setTextColor (VALKOINEN); display.clearDisplay (); display.display ();
Sisällä void loop () , jatkuvasti tarkistaa onko ele tehtiin. Jos kyllä, lue sitten elearvot ja tarkista, mikä ele se on (YLÖS, ALAS, OIKEA, VASEN) ja tulosta vastaava lukema sarjavalvontaan. YLÖS- ja ALAS-eleitä käytetään asettamaan kerroksen numero, johon käyttäjä haluaa mennä. Vasen ele on sulkea hissin luukku ja siirtää hissiä lattianumeron mukaan, kun Oikea ele käytetään oven avaamiseen.
if (APDS.gestureAvailable ()) {int ele = APDS.readGesture (); kytkin (ele) {tapaus GESTURE_UP: Serial.println ("Havaittu YLÖS ele"); display.clearDisplay (); floornum ++; koti 1(); tauko; tapaus GESTURE_DOWN: Serial.println ("Havaittu ALAS-ele"); display.clearDisplay (); floornum -; koti 1(); tauko; tapaus GESTURE_LEFT: Serial.println ("Havaittu vasen ele"); display.clearDisplay (); alkaa(); tauko; tapaus GESTURE_RIGHT: Serial.println ("Havaittu OIKEA ele"); display.clearDisplay (); koti 1(); tauko; oletus: tauko; }
Home1 () funktiota käytetään piirtää kotiin näyttö hissiä. Tämä koostuu ylänuolesta, alanuolesta, Avaa ovi, Sulje ovi -merkeistä ja nykyisestä kerroksen numerosta. drawBitmap () -toimintoa käytetään kuvien piirtämiseen OLED-näytölle. Syntaksi drawBitmap () funktio on esitetty alla:
drawBitmap (int16_t x, int16_t y, bittikartta, int16_t w, int16_t h, väri);
Missä:
int16_t x, int16_t y ovat OLED-näytön X- ja Y-koordinaatit
bittikartta on bittikartan nimi
int16_t w, int16_t h ovat kuvan korkeus ja paino.
void home1 () {display.setCursor (101,23); display.println (floornum); display.drawBitmap (23, 0, ylöspäin, 40, 18, VALKOINEN); display.drawBitmap (26, 46, alakohta, 40, 18, VALKOINEN); display.drawBitmap (0, 15, oviaukko, 29, 30, VALKOINEN); display.drawBitmap (60, 15, suljettu, 29, 30, VALKOINEN); display.display (); }
Start () funktiota käytetään siirtää hissin ylös- tai alaspäin. Tätä varten nykyistä kerrosnumeroa verrataan kerroksen numeroon, johon käyttäjä haluaa mennä. Jos kerrosluku on suurempi kuin nykyinen kerrosnro. tällöin hissi liikkuu ylöspäin ja jos kerrosluku on pienempi kuin nykyinen kerrosnro. silloin hissi liikkuu alaspäin. Hissi pysähtyy, kun sekä nykyinen kerros nro. ja kerros nro. ovat samat.
void start () {while (floornum> currentfloor) {Sarja.println ("menossa YLÖS"); currentfloor ++; display.drawBitmap (0, 0, ylös, 100, 64, VALKOINEN); display.setCursor (101,23); display.println (currentfloor); display.display (); display.clearDisplay (); viive (2000); } while (floornum <currentfloor) {Sarja.println ("menossa alas"); nykyinen lattia -; display.drawBitmap (0, 0, alas, 100, 64, VALKOINEN); display.setCursor (101,23); display.println (currentfloor); display.display (); display.clearDisplay (); viive (2000); } if (floornum == currentfloor) {Sarja.println ("saavutettu"); display.clearDisplay (); koti 1(); Sarja.tulos (currentfloor); }}
Eleohjatun kosketuksettoman noston testaus
Kun laitteisto ja koodi ovat valmiita, liitä Arduino Nano kannettavaan tietokoneeseen ja lataa koko alla oleva koodi. Kuten näet oletusarvoisesti, OLED näyttää Hissi-käyttöliittymän.
Aseta nyt lattia haluamaasi paikkaan kädelläsi ylös tai alas, kuten alla olevassa videossa näkyy. Tee sitten vasen ele kuitata hissin siirtyminen kyseiseen kerrokseen. Jos haluat pysäyttää nostimen, tee oikea ele kädelläsi.
Tämän projektin täydellinen video ja koodi on annettu alla. Toivottavasti pidit tämän projektin rakentamisesta. Jos sinulla on kysyttävää tästä projektista, jätä ne kommenttiosioon.