Arduino Reed modul je senzor magnetického pole. Reed modul kromě samotného Reed spínače obsahuje také operační zesilovač, odporový trimr a další pomocné součástky. Zmíněným trimrem pak lze nastavit úroveň citlivosti detekce magnetického pole. Pro napájení celého vstupního modulu můžeme použít napětí jak 3,3 V, tak i 5 V z Arduina. A další výhodou je také přítomnost indikačních LED diod na modulu nebo předvrtaný otvor pro zjednodušení instalace.
Pro úspěšné propojení Reed modulu s Arduino deskou je nutné zapojit 3 propojovací piny. Propojíme VCC s 5 V Arduina, GND se zemí Arduina a D0 s pinem 2. Pro datový pin D0 lze také využít ostatní piny Arduina, ale je nutné tuto změnu provést také v programu. Avšak pro využití detekce přerušení má každá Arduino deska využita jen některé piny, například pro Uno to jsou piny D2 a D3.
Ukázkový kód obsahuje na svém začátku nastavení čísla vstupního pinu. V podprogramu setup pak nejprve nastavíme komunikaci po sériové lince a následně nastavíme datový pin Reed modulu jako vstupní a zároveň zapojíme detekci přerušení pomocí funkce attachInterrupt, kde 0 znamená pin D2 = int0 (D3 = int1), detekce jméno podprogramu, který se vykoná a FALLING typ detekované hrany. Nekonečná smyčka loop pak pro ukázku obsahuje pouze tisk času od zapnutí napájení každou vteřinu. Podprogram detekce, který se vykoná v případě detekce přerušení, vždy vytiskne informace o detekci magnetického pole po sériové lince a poté se pokračuje v nekonečné smyčce.
// Arduino Reed senzor magnetického pole // nastavení čísla vstupního pinu const int reedPin = 2; void setup() { // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); // inicializace digitálního vstupu pinMode(reedPin, INPUT); // nastavení přerušení na pin 2 (int0) // při klesající hraně (log1->log0) se vykoná program detekce attachInterrupt(0, detekce, FALLING); } void loop() { // pro ukázku se každou vteřinu vytiskne // zpráva o počtu vteřin od zapnutí Arduina Serial.print("Cas od zapnuti: "); Serial.print(millis()/1000); Serial.println(" vterin."); delay(1000); } void detekce() { // pokud je aktivován digitální vstup, // vypiš informaci po sériové lince Serial.println("Detekce magnetickeho pole!"); }
Po nahrání ukázkového programu do Arduino desky s připojeným Reed modulem dostaneme například tento výsledek:
Cas od zapnuti: 1 vterin. Cas od zapnuti: 2 vterin. Cas od zapnuti: 3 vterin. Cas od zapnuti: 4 vterin. Detekce magnetickeho pole! Cas od zapnuti: 5 vterin. Detekce magnetickeho pole! Cas od zapnuti: 6 vterin. Detekce magnetickeho pole! Cas od zapnuti: 7 vterin.
Arduino Reed modul je šikovný detekční senzor, pomocí kterého můžeme velice jednoduše detekovat magnetické pole v okolí. Například by se dal využít do zařízení pro třídění materiálů či do vlastnoručně vyrobeného spínače bez pohyblivých částí. Co se týká minimální vzdálenosti detekce magnetického pole, ta záleží na síle magnetu či zařízení vyzařující magnetické pole. U hodně silných magnetických polí pak výrobce udává možnou detekční vzdálenost až 1,5 metru.
Seznam použitých komponent:
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
http://dratek.cz/arduino/1299-reed-spinac-modul-magnetron-pro-arduino-1462954576.html