W dzisiejszym wpisie będę chciał opisać jak zrobić kontroler 4 scen, które będą sterowane za pomocą taniej klawiatury membranowej.
Można to będzie wykorzystać na wiele sposobów (min. odpalanie świateł za pomocą przycisków czy całych scen, które wcześniej sobie zaprogramujecie).
Potrzebne akcesoria:
1. Arduino Nano (może być mini czy inne ale ja używam Nano i na tym przykładzie mogę się wypowiadać)

2. Moduł nRF24L01+ 2.4GHz wireless (do kupienia np. w sklepie ElectroPark we Wrocławiu)
3. Kable do podłączenia (żeńsko – żeńskie lub żeńsko – męskie o ile posiadacie płytkę stykową)
4. 4.7uF/50V – Kondensator elektrolityczny

5. Klawiatura membranowa – 4 przyciski (do kupienia min. w sklepie ElectroPark we Wrocławiu)

6. Podłączona do Raspberrypi i zainstalowana w Domoticz bramka MySensors z mojego poprzedniego wpisu.
Następnie podłączamy nasz moduł Nrf24l do Arduino Nano jak na poniższym schemacie jak to było w przypadku Bramki i dodatkowo do pinów (D8, D7, D6, D5 i D4) podpinamy naszą klawiaturę membranową:

Gdy już wszystko zostało poprawnie podłączone podłączamy Nasze arduino do komputera, odpalamy oprogramowanie Arudino i wklejamy do nowo otwartego pliku poniższy kod: (jak to zrobić opisałem w poprzednim poście)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#define MY_DEBUG #define MY_RADIO_NRF24 #include <SPI.h> #include <MySensors.h> #include <Keypad.h> #define MY_NODE_ID 123 // or set to AUTO if you want gw to assign a NODE_ID for you. #define SN "Scene Controller" #define SV "3.0" #define KEYPAD_CHILD_ID 95 MyMessage scene(KEYPAD_CHILD_ID, V_SCENE_ON); MyMessage scene2(KEYPAD_CHILD_ID, V_SCENE_OFF); const byte ROWS = 4; const byte COLS = 1; char keys[ROWS][COLS] = { {'1'}, {'2'}, {'3'}, {'4'} }; byte rowPins[ROWS] = {6, 7, 4, 5}; byte colPins[COLS] = {8}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); byte lastState; void setup() { sendSketchInfo(SN, SV); present(KEYPAD_CHILD_ID, S_SCENE_CONTROLLER); keypad.addEventListener(keypadEvent); } void loop() { char key = keypad.getKey(); } void keypadEvent(KeypadEvent key) { switch (keypad.getState()) { case PRESSED: lastState = 1; break; case HOLD: lastState = 2; break; case RELEASED: int keyInt = key - '0'; if (lastState == 2) { send(scene2.set(keyInt)); } else { send(scene.set(keyInt)); } //break; } } |
Aby sprawdzić czy wszystko działa poprawnie wciskamy w programie Arduino przycisk w górnym prawym rogu szkicu o nazwie „Monitor portu szeregowego” i sprawdzamy czy Nasz kontroler scen zalogował poprawnie do Bramki Mysensors, którą wcześniej poprawnie zainstalowaliśmy w Raspberry pi w systemie Domoticz o czym pisałem tutaj.

Powodzenia! 🙂
Zostaw Komentarz