Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Internet-verbonden infraroodreplicator

Componenten en benodigdheden

Deeltjesfoton
× 1
Adafruit IR-ontvangerdiode
× 1
Adafruit LED - Infrarood 950nm
× 1
Arduino UNO
× 1
Teensy 3.1
× 1
Microchip-technologie ATmega328
× 1
Microchip-technologie ATtiny85
× 1
Espressief ESP8266 ESP-01
× 1
Bluz DK
× 1
RedBear Duo
× 1

Apps en online services

porter

Over dit project

Enige tijd geleden ben ik begonnen met het decoderen van een infrarood AC-afstandsbediening met als doel een airconditioner via WIFI te bedienen.

Ik heb onderweg heel veel dingen geleerd en ik wilde die kennis met jullie allemaal delen voor het geval het je kan helpen bij toekomstige projecten (toekomstige ik:ik kijk ook naar jou). Ik heb een Particle Photon gebruikt, maar je kunt ervoor kiezen om een ​​andere MCU te gebruiken, aangezien de IRremote Arduino-bibliotheek (van Ken Shirriff) die in dit project wordt gebruikt, tal van andere ondersteunt. Hier is ook de officiële pagina.

Er is veel van informatie op die pagina, zorg ervoor dat u er een deel van leest voor een goed begrip van hoe IR-signalen werken, maar ik zal enkele belangrijke punten in het volgende gedeelte weergeven.

Wat achtergrondinformatie over IR-codes

Het volgende is een transcriptie van het originele bericht van de auteur:

Een IR-afstandsbediening werkt door de LED in een bepaald patroon in en uit te schakelen. Om interferentie van IR-bronnen zoals zonlicht of lichten te voorkomen, wordt de LED echter niet constant ingeschakeld, maar in- en uitgeschakeld met een modulatiefrequentie (meestal 36, 38 of 40 KHz). De tijd waarop een gemoduleerd signaal wordt verzonden, wordt een markering genoemd en wanneer de LED uit is, wordt een spatie genoemd.

Elke toets op de afstandsbediening heeft een bepaalde code (meestal 12 tot 32 bits) die eraan is gekoppeld en zendt deze code uit wanneer de toets wordt ingedrukt. Als de toets ingedrukt wordt gehouden, zendt de afstandsbediening meestal herhaaldelijk de sleutelcode uit. Voor een NEC-afstandsbediening wordt een speciale herhaalcode verzonden terwijl de toets wordt ingedrukt, in plaats van de code herhaaldelijk te verzenden. Voor Philips RC5- of RC6-afstandsbedieningen verandert er een bit in de code telkens wanneer een toets wordt ingedrukt; de ontvanger gebruikt deze schakelbit om te bepalen wanneer een toets een tweede keer wordt ingedrukt.

Aan de ontvangende kant demoduleert de IR-detector dit signaal en geeft een signaal op logisch niveau af dat aangeeft of het een signaal ontvangt of niet. De IR-detector werkt het beste als de frequentie overeenkomt met de frequentie van de zender, maar in de praktijk maakt het niet zoveel uit.

U bent nu klaar voor de volgende stap...

Bouw het IR-ontvangercircuit

Om infraroodsignalen te decoderen, hebt u een infraroodontvangerdiode nodig:

En je bouwt het ontvangercircuit zoals vermeld in de bibliotheek:

Hier is de pinout:

Mijn breadboard zag er uiteindelijk zo uit:

Voor nu, focus op het aansluiten van de ontvangerdiode (de zwarte) en vergeet de zender (de transparante) - we zullen er later voor zorgen.

Decodeer sommige IR-signalen

Aangezien het project de ontvangen codes via de seriële lijn zal dumpen, moeten we het op een computer aansluiten. Zet de Photon aan met een USB-kabel en sluit deze aan op een USB-poort van uw computer. Dit is een goed moment om de bijgevoegde firmware te flashen.

Open een console of terminal en gebruik de Particle CLI om de USB-poort te controleren.

OPMERKING: Als u de Particle CLI niet hebt geïnstalleerd, kunt u dit doen door de documenten hier te volgen.

In Ubuntu Linux moest ik dit typen om de seriële poort van de Photon te controleren:

$ sudo chmod 666 /dev/ttyACM0 $ partikel seriële monitor  

Afhankelijk van uw computer en besturingssysteem kan de poort een andere naam hebben en/of hoeft de chmod mogelijk niet te worden uitgevoerd.

OPMERKING: u kunt elke andere software gebruiken om gegevens op de USB-seriële poort van uw computer te ontvangen.

Als je dat hebt gedaan, kun je de afstandsbediening die je wilt decoderen richten op de IR-ontvangerdiode (de zwarte LED-achtige component). Begin met het indrukken van de knoppen erop en controleer wat er in de console staat.

Als alles goed gaat, krijg je zoiets als dit:

1FEA05F29168950,8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,5002,500,550,150,150,500,550,550,550,550,550,550,500,15050,500,550,550,500,500,550,1500,550,500 ,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 ,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0 ,0,0,0,0,0,0,END  
  • Eerste regel (1FEA05F) en derde regel:vergeet ze voor nu
  • Tweede regel:deze regel drukt het IR-commando af dat door de afstandsbediening is verzonden

Ons eerste gedecodeerde IR-commando

Laten we het hebben over het ontvangen IR-commando:

29168950.8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,550,450,500,500,550,550,450,550,500,500,550,550,450,550,500,500 

We kunnen de eerste waarde, 29168950 in dit geval, weggooien, aangezien de IR-bibliotheek het volgende aangeeft:"de ontvangstbuffer begint met de duur van de tussenruimte vóór de eerste markering ". Die duur maakt ons niet uit, aangezien het de tijd is die verstrijkt tussen onze tests, of de tijd die je nodig hebt om op een knop in de afstandsbediening te drukken.

Vandaar dat van de ontvangen uitvoer dit is wat echt interessant is en wat het IR-commando vormt:

8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500,550,1500,550,500,550,500,550,500,550,1500,500,500,550,500,500,550,550,500,500,550,500,1500,550,1500,550,500,550,500,1500,550,1500,550,500,500,550,550,550,550,1500,550,450,500 

Die getallen vertegenwoordigen de duur van de infraroodpulsen in microseconden. Als we wilden, zouden we deze opdracht met de volgende code kunnen verzenden:

functie sendIt() { unsigned int ircommand[59]={8550,4000,550,1500,550,450,550,500,500,550,500,1550,500,500,500,500,550,500,500,500,550,500,500,500,550,500,500,1500,550,500,500,550,5000,550,500,500,500,550,550,500,500,5000,550,500,500,500,550,550,500,500,550,550,550,500,550,550,550,500,500 ,500,500,550,500,500,500,550,450,550}; irsend.sendRaw(ircommand,59,38); } 

Maar daarvoor moeten we het zendercircuit bouwen. Laten we dat nu doen.

Bouw het IR-zendercircuit

De eenvoudigste schakeling ziet er als volgt uit:

Deze schakeling geeft u echter slechts minder dan een meter bereik.

Als je kunt, bedraad dan een circuit zoals dit hieronder voor een verbeterd bereik (ongeveer 10 meter):

Dit is de zenderkant van mijn circuit:

Het IR-zendercircuit testen

Ik heb een aantal functies in de firmware toegevoegd om het volume op een Samsung TV te regelen. Dit is zodat u kunt testen of uw zendercircuit werkt als u een Samsung-tv in de buurt heeft.

Richt uw zender-LED op uw tv en druk op de functies sendSamsungVolumeUp() en sendSamsungVolumeDown().

OPMERKING: Onthoud dat u de camera van uw mobiele telefoon kunt gebruiken om te controleren of de IR-LED zendt, aangezien IR daar verschijnt:

De IR-commando's leesbaarder maken

Als we waarden rond 500 identificeren met een 0 en 1500 met een 1, waarbij deze selectie willekeurig is, en ook 3 toewijzen aan waarden boven 5000 en 2 aan waarden rond 4000, krijgen we de volgende weergave:

3,3,2,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1, 0,0,0,1,0,0,0,0,0,0,0,0,0,END 

Onthoud nu dat in deze totaal willekeurige codering:

  • 3 betekent een puls van 8500 microseconden
  • 2 betekent een puls van 4000 microseconden
  • 1 betekent een puls van 1500 microseconden
  • 0 betekent een puls van 500 microseconden

Waarom coderen in cijfers, vraagt ​​u zich misschien af?

Het helpt bij het visualiseren en vergelijken van commando's, hoop ik. Op deze manier wordt het gemakkelijker om pulsen te vergelijken die veranderen of hetzelfde blijven tussen verschillende commando's.

Voorbeeld:je wilt vergelijken wat er verandert tussen een commando om de temperatuur in te stellen op 18 en 19 graden in het geval van een AC-afstandsbediening? Makkelijker als je enen en nullen hebt.

Ik hou ook van dit formaat voor het opslaan van de IR-opdrachten in de firmwarecode. Vergeet niet om ze vlak voor het zenden om te zetten in pulsen (door de functie convertToPulseDuration() in de firmware aan te roepen).

Bronnen lezen

Ik heb een aantal sites gelezen om het onderwerp te begrijpen. Hier is een lijst van enkele van hen:

  • Reverse engineering van een airconditioner IR-afstandsbedieningsprotocol
  • Willekeurige afstandsbedieningen gebruiken met de Arduino IRremote-bibliotheek
  • deze thread in de Particle-community
  • Het IR-protocol van de afstandsbedieningen van airconditioners begrijpen
  • deze blog over adafruit

Conclusie

Met wat werk, een MCU en een paar componenten kun je veel van de afstandsbedieningen die je in huis hebt, decoderen en repliceren. Met enkele beperkingen kunt u hiermee al die apparaten bedienen vanaf uw telefoon, tablet, laptop, computer en zelfs enkele eenvoudige automatiseringen voor hen maken. Cool, hè?

Nu kun je nadenken over het toevoegen van Blynk, het maken van een app in het Ionic Framework, ermee praten met Google Now of Alexa, of het besturen met Porter.

Ik ben van plan deze kennis toe te passen om een ​​paar apparaten in huis te bedienen, en ik hoop in de toekomst meer beschrijvingen te maken. Blijf op de hoogte!

Update op 5 februari 2018:

Hier is een implementatie van dit project:een infraroodhaard die via internet wordt bediend.

Hulp nodig?

Als je professionele hulp nodig hebt bij je projecten, aarzel dan niet om me een bericht te sturen over je behoeften op [email protected]. Bedankt!

Code

infraroodReplicator
de broncodehttps://github.com/gusgonnet/infraredReplicator

Schema's


Productieproces

  1. Hoe goederenwagons zijn verbonden met internet
  2. Internet of Things en de rol van 5G in verbonden voertuigen
  3. Cyberbeveiliging en het internet der dingen:tijd voor biometrie?
  4. Internet of Things:een web van verbonden wereld
  5. Hoe kunnen we het onderwijs vergemakkelijken met het internet der dingen?
  6. Leap Motion lasertanks!
  7. UnifiedWater v1
  8. Pi-Arduino internetradio
  9. Mobiele stembus
  10. Verbonden luchtcompressoren, Industrie 4.0 en het internet der dingen
  11. Perslucht en gas A-Z Vlog:IOT, internet 4.0 en aangesloten compressoren