I2C

Uit Nodo Wiki
Ga naar: navigatie, zoeken

Dit onderwerp wordt nog nader uitgewerkt.


UnderConstruction.jpg

Toepassing

I2C is een wijze waarop diverse soorten apparaten met elkaar verbonden kunnen worden om zo, via een tweedraads verbinding met elkaar te kunnen communiceren. Het is een industriestandaard die veel wordt gebruik en ook wel bekend is onder de naam TWI (Two Wire Interface). De Nodo ondersteund eveneens I2C communicatie. I2C kan worden gebruikt om:

  • Nodo's onderling met elkaar te verbinden;
  • Nodo's te verbinden met eigen toepassingen die b.v. ontwikkeld zijn op een Arduino;
  • Nodo's verbinden met andere apparaten zoals LCD-displays, RaspBerry PI, Temperatuursensoren, relaisboard, etc. ect

. Er zijn duizenden soorten I2C devices op de markt. Veelal is er een klein stuk aanvullende software (Plugin) nodig om het apparaat samen te laten werken met een Nodo. Echter Nodo's kunnen out-of-the-box direct zonder enige toevoeging van hardware of software via I2C met elkaar samenwerken.

De I2C-bus

Een I2C verbinding is een bus-systeem. Meerdere apparaten kunnen zo direct met elkaar worden verbonden.


I2C-Bus.png


I2C communicatie is een relatief snelle vorm van communicatie. De verbindingswijze is ook zeer goedkoop, want er is alleen een draagverbinding tussen de apparaten nodig. Alle apparaten op de bus hebben een eigen adres. In principe kan ieder apparaat toegang krijgen tot alle andere apparaten op de bus. Een apparaat is doorgaans een master of een slave, maar ook meerdere masters op een bus is mogelijk. Er is wel een beperking; De lengte van de verbindingsdraden. Verbindingsdaden met een lengte tot een meter geven zelden problemen. Daarboven zal gebruik gemaakt moeten worden van I2C range-extenders. Deze zijn goed verkrijgbaar en maakt het mogelijk om afstanden tot 100 meter te overbruggen.

De bus bestaat uit drie lijnen:

  • SDA: Dit is de lijn waar de data over getransporteerd wordt;
  • SCL: De klok lijn. Nodig om de pulsen waaruit de data uit is opgebouwd te kunnen otrafelen;
  • GND: Massa of de nul.

De SDA en SCL lijnen moeten met een weerstandje worden verbonden met de +5 volt. Heb je een NES, dan is hier al in voorzien. Gebruik je andere shields dan is een weerstand van 4K7 een goede start, maar het is mogelijk dat je deze iets lager moet kiezen. In het schema hierboven zie je dat een lagere waarde is gekozen. Ben je voornemens om je Nodo's te voorzien van I2C aansluitingen of zelfs een I2C-bus door je woning te leggen, dan is het verstandig om ook een +5Volt lijn mee te nemen, dan hoeven niet alle afzonderlijke apparaten te worden voorzien van een eigen voeding. Natuurlijk moet de voeding dan wel in staat zijn om alle apparaten van voldoende stroom te kunnen voorzien.

Nodo's koppelen

Nodo's via I2C met elkaar te verbinden heeft vele toepassingen of voordelen:

  • Koppelen van Nodo's vergroot de mogelijkheden om bepaalde taken specifiek toe te kennen aan een Nodo terwijl een andere Nodo dan vrij blijft voor luisteren naar events;
  • Door Nodo's te stapelen kunnen eventlists uitgebreider worden;
  • Specifieke taken toekennen aan Nodo's kan het beheer vereenvoudigen (modulariteit)
  • Minder communicatie via RF/IR zorgt voor minder drukte in de ether waardoor er minder kans is op verstoringen bij de aansturing van draadloze schakelaars en missen van events.
  • Inzetten van zeer uitgeklede nodo's die geen RF, IR of Ethernet hebben.

Verbinden van Nodo's is zeer eenvoudig. Verbind SDA aan SDA, SCL aan SCL en GND aan GND. That's all. Meerdere Nodo's kunnen zo gelijktijdig met elkaar worden verbonden. De Nodo Ethernet Shields (NES) beschikt over een separate I2C aansluiting die is voorzien pull-up weerstanden. Heb je een eigen nodo gemaakt, dan wel even de SDA en SCL lijnen met een weerstand van 4K7 verbinden aan de +5volt. Zodra de Nodo's zijn gereboot, zullen zij zich automatisch bij elkaar bekend maken via de I2C bus en events uitwisselen zoals dat ook plaats vindt via IR of RF. I2C comunicatie is echter veel sneller en betrouwbaarder.

Zie ook: