Infraroodsensor gebruiken met Arduino

Wat is een infraroodsensor (ook wel IR-sensor genoemd)?

Een IR-sensor is een elektronisch instrument dat IR-signalen scant in specifieke frequentiebereiken die zijn gedefinieerd door normen en deze omzet in elektrische signalen op de uitgangspin (doorgaans signaalpen genoemd). De IR-signalen worden voornamelijk gebruikt voor het verzenden van opdrachten via de ether op korte afstanden (meestal enkele meters), zoals waarmee u al hebt gewerkt op afstandsbedieningen van tv's of andere soortgelijke elektronische apparaten.

IR-communicatieprotocol

Elk signaal vertegenwoordigt een specifieke code. Elektrische signalen kunnen worden teruggezet naar de daadwerkelijke gegevens / code die de afzender heeft verzonden. Wanneer u op een knop op de afstandsbediening van uw tv drukt, genereert deze een signaal dat overeenkomt met de knopcode (bijv. Aan / uit, volume omhoog, enz.) En verzendt het voor een ontvanger (in dit geval uw tv). Zowel de afzender als de ontvanger kwamen een reeks codes overeen, zodat de ontvanger op basis van elke code weet wat hij moet doen. De manier waarop een code moet worden gemoduleerd (gemodelleerd), aangezien een signaal in verschillende standaards wordt gedefinieerd en elke sensorfabrikant gewoonlijk probeert een product te produceren dat daarmee compatibel is, zodat het in verschillende apparaten kan worden gebruikt. Een van de bekendste standaardprotocollen is van NEC. U kunt een korte geschiedenis van IR-protocollen vinden op Wikipedia onder de titel Consumer IR.

Stap 1: Hoe ziet een IR-sensor eruit?

IR-sensoren zijn verkrijgbaar op verschillende pakketten. Hier ziet u enkele typische verpakkingen voor een IR-ontvanger.

Stap 2: IR Sensor Breakout Board / module

Je kunt ze ook kopen als een IR-module / breakout-board op eBay, Aliexpress of Amazon. Dergelijke modules bevatten normaal gesproken een van de hierboven genoemde sensoren met een mooi breadboard-vriendelijk pakket samen met een LED die zou knipperen wanneer de sensor een signaal detecteert. Hierdoor merkt u of er gegevens worden overgedragen. Ik raad ten zeerste aan om met een van deze modules te beginnen.

Opmerking: als je een onbewerkte IR-sensor hebt, verandert er niets, behalve dat je het gegevensblad van de sensor moet controleren om er zeker van te zijn dat je hem correct bedraadt, want anders heb je misschien een mooie blauwe rook met een geur die zou duren voor een uur. Je weet wat ik bedoel ;)

Stap 3: Vereiste onderdelen en componenten

Hier vindt u de lijst met componenten die u nodig heeft om deze tutorial te voltooien:

eBay-links:

  • 1 x Arduino Uno: //rover.ebay.com/rover/1/711-53200-19255-0/1 ...
  • 1 x IR-sensormodule met afstandsbediening: //rover.ebay.com/rover/1/711 ...
  • 4 x 220 ohm weerstanden: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
  • 4 x LED: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
  • 8 x Dupont-kabel: //rover.ebay.com/rover/1/711-53200-3=4&too ...
  • 1 x soldeerloze breadboard: //rover.ebay.com/rover/1/711-53200 -...
  • 1 x mini breadboard (optioneel): //rover.ebay.com/rover/1/711-532 ...

Links naar Amazon.com:

  • 1 x Arduino Uno: //amzn.to/2uJfKy1
  • 1 x IR-sensormodule met afstandsbediening: //amzn.to/2uMS1eT
  • 1 x soldeerloze breadboard: //amzn.to/2uMC6gl
  • 4 x 220 ohm weerstanden: //amzn.to/2hbGiDs
  • 4 x LED: //amzn.to/2uMEtjy
  • 8 x Dupont-kabel: //amzn.to/2eXCvbT
  • 1 x mini breadboard (optioneel): //amzn.to/2vUelmC

Links naar Amazon.co.uk:

  • 1 x Arduino Uno: //amzn.to/2u8DXKD
  • 1 x IR-sensormodule met afstandsbediening: //amzn.to/2wagB8Y
  • 4 x 220 ohm weerstanden: //amzn.to/2uJCsGs
  • 4 x LED: //amzn.to/2u8nNRo
  • 8 x Dupont-kabel: //amzn.to/2vaLDQN
  • 1 x soldeerloze breadboard: //amzn.to/2u8nkP2
  • 1 x mini breadboard (optioneel): //amzn.to/2vaKtoc

Stap 4: IR-sensor verbinden met Arduino

Het opzetten van een IR-sensorverbinding met Arduino is heel eenvoudig. Naast de VCC- en GND-pin heeft de sensor slechts één uitgangspin die moet worden aangesloten op een van de digitale pinnen van de Arduino. In dit geval is het verbonden met pin 13.

Ik heb geprobeerd om zowel de IR-sensormodule als de onbewerkte IR-sensorconfiguratie te demonstreren. Zoals te zien is op afbeeldingen, is de positie van de VCC- en GND-pinnen op de sensormodule het tegenovergestelde van de onbewerkte sensor. Het is echter mogelijk niet het geval voor uw sensor, dus zoals vermeld in de vorige stap, moet u in het geval van het gebruik van de onbewerkte sensor eerst het gegevensblad controleren.

Stap 5: Zoek de code die overeenkomt met elke toets op de afstandsbediening

Om Arduino te programmeren om iets te doen wanneer u op een toets op de afstandsbediening drukt, moet u eerst de code hebben die overeenkomt met die toets. De sleutelcode is een nummer dat normaal gesproken als hexadecimaal wordt weergegeven. Elke afstandsbediening heeft zijn eigen set sleutelcodes, terwijl het mogelijk is dat twee controllers dezelfde code gebruiken voor verschillende doeleinden. Het hebben van verschillende sleutelcodes en het gebruik van verschillende frequentiebereiken, zorgt ervoor dat twee afstandsbedieningen van verschillende apparaten geen storing zouden hebben. Daarom reageert uw dvd-speler helemaal niet wanneer u van tv-kanaal verandert.

Om de codes voor uw IR-afstandsbediening te detecteren, moet u eerst een eenvoudige schets uitvoeren die probeert de code van de sensor te lezen wanneer u op een toets drukt en die via de seriële poort naar uw computer stuurt, waar u er toegang toe hebt met behulp van Serial Monitor-tools van Arduino IDE. Dit is wat de schets in bijlage bij dit gedeelte doet. Het is beter om op elke knop te drukken om de code te zien en de lijst met codes ergens op te schrijven, zodat u deze code in de toekomst niet opnieuw hoeft uit te voeren. De lijst met sleutelcodes die u als een tabel in de afbeelding ziet, zijn eigenlijk codes die ik heb ontvangen toen ik op knoppen op mijn goedkope IR-afstandsbediening drukte.

Je hebt ook toegang tot de daadwerkelijke broncode die op mijn Arduino-webeditor wordt gedeeld via ir-key-code-logger.

Opmerking : wees niet bang als je ergens een code zoals FFFFFF ziet. Het betekent dat je een knop een tijdje hebt ingedrukt. We komen er later op terug. Negeer ze voorlopig en focus op andere codes.

Bijlagen

  • ir-code-logger.ino Downloaden

Stap 6: Bedien een set LED's met behulp van een IR-afstandsbediening

Nu we voor elke knop een code hebben, is het tijd om ons te concentreren op de manier waarop we ze kunnen gebruiken. Normaal gesproken gebruik je de IR-afstandsbediening om commando's naar Arduino te sturen om bijvoorbeeld een lamp aan of uit te doen, een robot in een bepaalde richting te bewegen, iets op een LCD / OLED-scherm weer te geven, enz. Hier proberen we het proces te demonstreren met een eenvoudige schakeling bestaande uit 4 leds in verschillende kleuren. We willen ze allemaal aan- of uitzetten met een speciale knop van de IR-afstandsbediening. Zoals je op het schema kunt zien, moet je de Arduino op de volgende manier aansluiten op LED's en sensor:

Arduino GND -> IR-sensor GND.

Arduino VCC -> IR-sensor VCC.

Arduino 13 -> Signaaluitgang IR-sensor.

Arduino 2 -> Anode van de blauwe LED (kortere pin van de blauwe LED)

Arduino 3 -> Anode van de groene LED (kortere pin van de groene LED)

Arduino 4 -> Anode van de gele LED (kortere pin van de gele LED)

Arduino 5 -> Anode van de rode LED (kortere pin van de rode LED)

Arduino GND -> Kathode van alle leds via een weerstand van 220 ohm (langere pin van de leds)

Je kunt de code die overeenkomt met dit circuit vinden in het bijgevoegde bestand of op mijn Arduino-webeditor bij ir-led-control.

Bijlagen

  • ir-led-control.ino Downloaden

Stap 7: Problemen oplossen

Tijdens het opzetten van uw project en het volgen van de stappen kunt u veel rare situaties tegenkomen. Hier is de lijst met enkele veelvoorkomende fouten die u kunt krijgen als u met een IR-sensor werkt.


FFFFFF ophalen bij het indrukken van een toets

Wanneer u op een knop drukt, merkt u misschien dat het meestal een code als FFFFFF meldt. Dit gebeurt wanneer u op een knop drukt en deze een tijdje ingedrukt houdt, zelfs voor een korte periode. Het scenario is dat wanneer u in eerste instantie op de knop drukt, de IR-afstandsbediening de knopcode verzendt en zolang u de knop ingedrukt houdt, wordt het verzenden van FFFFFF herhaald, wat betekent dat de gebruiker nog steeds op de onlangs gemelde knop drukt. Dat zou ok zijn. Je kunt ze gewoon weglaten. De eigenlijke code is de code die u kreeg vlak voor FFFFFF op de seriële monitor.


IR-sensor reageert helemaal niet en het lijkt warm te worden!

Schakel de stroom uit !!! Als u zeker weet dat de schets van de keycode-logger correct is, is het probleem mogelijk te wijten aan de verkeerde installatie van uw draden. Het scenario dat mij overkwam, was dat ik voor mijn IR-module (degene die aan het bord was bevestigd) de VCC en GND op de tegenovergestelde manier had aangesloten (omdat ik niet de juiste kleuren gebruikte voor mijn aansluitdraden). Hierdoor verbrandde de sensorcomponent en ontstond er een mooie blauwe rook. Ik kocht een pakket onbewerkte IR-sensoren en probeerde het te vervangen en nu werkt het als een charme :). Helaas heb ik dezelfde fout gemaakt toen ik aan het testen was met de onbewerkte IR-sensor en deze keer gebeurde er niets behalve dat de sensor warm werd. Controleer dus altijd het circuit voordat u de stroom inschakelt!


Soms detecteert de sensor een code die ik nog nooit eerder heb gezien

Dit is een van de meest voorkomende problemen. Dit komt waarschijnlijk door een van de volgende redenen:

  • U richt uw IR-afstandsbediening niet rechtstreeks op de sensor

Dit zal leiden tot een aantal nieuwe codes (meestal langere codes) die je nog nooit eerder hebt ontvangen en die normaal gesproken niet overeenkomt met de lengte van de codes die je al hebt. Denk er dus aan om de afstandsbediening altijd op uw sensor te richten.

  • Je gebruikt een goedkope IR-afstandsbediening (zoals degene die ik in deze tutorial gebruikte)

In plaats van goedkope, onvoorspelbare afstandsbedieningen te gebruiken, kunt u hetzelfde scenario proberen met de afstandsbediening van uw tv of dvd-speler of een IR-afstandsbediening van alle apparaten die u heeft. Ze hebben normaal gesproken een goede signaal- / hardwarekwaliteit (en zijn natuurlijk duurder) en op basis van mijn ervaring werken ze normaal gesproken goed, zelfs als je je afstandsbediening niet rechtstreeks op de sensor richt.


Hoe weet ik of een gelogde code geen afval is

De codes worden normaal gesproken weergegeven in hexadecimaal formaat. Als je ze converteert naar de corresponderende binaire waarde, zul je merken dat de binaire representatie van de laatste byte de negatie is van de byte die daarvoor komt. Als je dit weet, kun je dit in je code controleren om er zeker van te zijn dat de code die je hebt ontvangen ook daadwerkelijk geldig is of niet. Als u bijvoorbeeld FF7A85 hebt, is de binaire weergave ervan als volgt:

 1111 1111 0111 1010 1000 0101 

Van links naar rechts is elke batch van 4 cijfers representatief voor een teken in het oorspronkelijke hexadecimale nummer. Zoals u kunt zien, is de batch die overeenkomt met 7 0111 en de batch die overeenkomt met 8 1000, wat de exacte ontkenning ervan is. Met ontkenning bedoel ik dat alle nullen 1 s zouden zijn en dat alle 1 s zouden worden vervangen door nullen. Hetzelfde geldt voor de volgende die A (1010) en 5 (0101) is.

Stap 8: Wat nu te doen?

Nu is het jouw beurt. Het is allemaal aan je fantasie om te zien wat je kunt doen met deze kleine, eenvoudige sensor in je hand. Hier zijn enkele ideeën om mee te beginnen:

  • Gebruik de IR-afstandsbediening van een van de apparaten die je thuis hebt (tv, stereo, etc.) en probeer deze te gebruiken in je Arduino-project
  • Probeer alle LED's tegelijk in te schakelen door op een toets te drukken en schakel ze vervolgens uit met een andere toets
  • Gebruik de omhoog / omlaag-knop van de afstandsbediening om de LED's één voor één in / uit te schakelen totdat ze allemaal aan / uit gaan
  • Creëer een stoplicht met leds en bedien het met je afstandsbediening
  • Als u een kleine DC-motor bij de hand heeft, probeer dan te starten / stoppen of verander de draairichting via de IR-afstandsbediening
  • U kunt de afstandsbediening van uw tv gebruiken om uw robot te bedienen of om sommige sensoren / actuatoren erop in / uit te schakelen

Laat me bij opmerkingen weten wat je zou doen (of je hebt het al gedaan) met IR-afstandsbediening.

Verwante Artikelen