Close Menu
magazin Mehatronikamagazin Mehatronika
  • English
  • Početna
  • Industrija
  • Recenzije
    • Industrijska oprema
    • SBC računari
    • Razvojni sistemi
    • STEM
    • Mrežna oprema
    • Displeji
    • Dodaci
    • Alati
    • Muzička oprema
    • Pametni uređaji
  • Edukacija
  • Novosti
  • Lifestyle
    • Događaji
    • Intervjui
  • Stručni tekstovi
  • Forum
Facebook X (Twitter) Instagram LinkedIn
Trending
  • Inovativna rešenja za optimizaciju potrošnje energije u industriji
  • magazin Mehatronika: nagradni konkurs #0003
  • Danfoss iC2-Micro
  • Haiwell IoT i Cloud nikada nisu bili dostupniji i jednostavniji
  • P-KUBE Krome sigurnosna ručka
  • Ispitivanje EV punjača
  • Radionica o WSCAD softveru
  • INNOMOTICS elektrifikuje veliki rudarski pogon u Čileu
  • Srpski
    • Srpski
    • English
LinkedIn Facebook X (Twitter) Instagram
magazin Mehatronikamagazin Mehatronika
  • Početna
  • Industrija
  • Recenzije
    • Industrijska oprema
    • SBC računari
    • Razvojni sistemi
    • STEM
    • Mrežna oprema
    • Displeji
    • Dodaci
    • Alati
    • Muzička oprema
    • Pametni uređaji
  • Edukacija
  • Novosti
  • Lifestyle
    • Događaji
    • Intervjui
  • Stručni tekstovi
  • Forum
magazin Mehatronikamagazin Mehatronika
Home»Stručni tekstovi»Zephyr RTOS devicetree overlay za mikroE RELAY click
Stručni tekstovi

Zephyr RTOS devicetree overlay za mikroE RELAY click

mikroE-1370 RELAY click je praktičan relejni click modul koji ovde koristimo sa Connexio Stratus razvojnim sistemom za nRF9160 SiP LTE-M/NB-IoT modem i GNSS
By Aleksandar Dakić26/03/2025Updated:26/03/20257 Mins Read
photo: magazin Mehatronika

mikroE RELAY click je ekonomična ekspanziona ploča u click standardu koja na sebi ima dva Omron G6D releja SPST-NO tipa. Omron G6D je malih dimenzija 6.5 × 17.5 × 12.5 mm u plastičnom kućštu. Sposoban je da prekida tok struje do 5 A, a kao kontrolni signal koristiti se napon do 5 VDC. Maksimalni prekidačni napon je 250 VAC i 30 VDC. Proizvođač garantuje 300.000 operacija sa maksimalnom strujom kroz teminale od 2 A.

photo: magazin Mehatronika

Pločica dolazi u standardnoj kartonskoj kutiji i uredno je urađena. Odmah se uočava opsesija prema detaljima koja inače izdvaja sve mikroE proizvode, bez obzira na njihovu cenu. Od šesnaest pinova na click ploči, za upravljačke signale za kontrolu rada releja se koriste samo dva, označeni sa RL1 i RL2. Uz jedanaest nepovezanih (NC), tu su i još dva GND i jedan 5 VDC pin. Sve što nam je potrebno je ploča sa microBUS konektorom, ali se može koristiti i klasični protoboard, budući da je razmak između niza hedera na mikroE click pločama u standardu.

Uz dva releja, svaki kontroliše jednu liniju, na ploči se nalazi po jedna pripadajuća LED dioda. Desni relej 1 ima crvenu, a levi relej 2 žutu. Tu je i dodatna zelena PWR koja označava da je mikroE click pod radnim naponom. Naime, da bi funkcionisao, potrebno je dovesti 5 VDC na pripadajući pin označen sa 5V, kao i povezati GND. Kontrolni naponi na pinovima RL1 i RL2 su 3 VDC i njih ćemo u ovom mini projektu dovesti sa Conexio Stratus razvojnog sistema. Cena RELAY click-a je $22,00.

photo: magazin Mehatronika

Conexio Stratus sa nRF9160 SiP-om smo opisali u posebnoj recenziji ranije. U međuvremenu se pojavio i upola jeftiniji naslednika Conexio Stratus Pro sa nRF9161 SiP-om kojeg smo takođe upoznali. Kako nemamo Conexio Stratus Shield sa microBUS konektorom, odlučili smo se za stariji nRF9160 model čija je cena oko $180,00.

Conexio Stratus modeli su open source LTE-M/NB-IoT/GNSS Cellular-IoT razvojni sistemi baziran na seriji Nordic Semi nRF91xx SiP-ova koji se mogu napajati i baterijski uz prikupljanje energije u polju, usled svoje izuzetno male potrošnje. Stoga su odlično rešenje za sve aplikacije praćenja i nadgledanja mobilnih objekata sa svetskom pokrivenošću.

photo: magazin Mehatronika

Za razvoj aplikacija na Conexio Stratus razvojnim sistemima je predviđen Zephyr RTOS. Zephyr hostuje Linux fondacija, open source RTOS je u pitanju i razvijen je sa idejom da se podrži što veći broj različitih procesora/razvojnih sistema/platformi kako bi se omogućio unificiran razvoj embedovanih rešenja i skratilo vreme timovima potrebno da se proizvod razvije i predstavi na tržište. Iako trenutna verzija 4.1 zvanično pokriva preko 750+ sistema, Conexio Sratus nije među njima. Međutim, Conexio tim je dao sopstveni Zepyr firmware-SDK koji se koristi za razvoj aplikacija uz Visual Code Studio. Za flešovanje, nije potreban dodatan programator, već se Conexio Stratus može programirati iz terminala preko USB-C kabla. Postupak instalacije, konfiguracije i korišćenja dali smo u samoj recenziji.

Kontrola rada releja radi se jednostavnim dovođenjem 3 VDC napona na neki od pinova. Ako pogledamo Conexio Stratus Shield videćemo da su CS i PWM pinovi na mikroBUS-u kontrolni pinovi za releje 2 i 1. Iz šeme vidimo da je CS povezan sa P0.18 GPIO nRF9160, dok je PWM „otkačen“. Ovo znači da Shield nećemo moći da koristimo za kontrolu releja 1. Da stvar bude još gora i 5V je „otkačen“ pa ni sam RELAY click ne može da se pravilno napaja.

photo: magazin Mehatronika

Nažalost, nepovezanost PWM pina, kao i NC umesto 5V na istom hederu su velike upotrebne mane ovog Shield-a i time je drastično smanjen broj mikroE click ploča koje se mogu koristiti. Dalji rad smo morali da nastavimo na protoboard-u.

Conexio Stratus & Extender Board V2.0
photo: magazin Mehatronika

Povezali smo P0.18 i PL2, a P0.17 sa PL1 pinom. Doveli 5 VDC i GND na RELAY click i zasijala je zelena LED, što znači da je sve korektno plarisano. Da bismo upravljali relejima, potrebno je da softverski upravljamo P0.17 i P0.18 pinovima, što znači da je potrebno dodati ova dva pina u devicetree overlay kao izlazne led pinove. Pogledamo li u fajl conexio_stratus_common.dtsi koji se nalazi u direktorijumu conexio-firmware-sdk/boards/conexio/stratus u firmware-SDK direktorijumu. Videćemo da je postojeći plavi LED povezan na P0.3 na ploči i odmah primećujemo i alias za taj čvor.

/ {
	leds {
		compatible = "gpio-leds";
		blue_led: led_0 {
			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
			label = "Blue LED";
		};
	};

        aliases {
		led0 = &blue_led; /* For user programmable purpose */
	};
};

Kako nije dobra praksa menjati osnovni devicetree, napravićemo sopstveni overlay. U root direktorijumu projekta kreiramo direktorijum boards i u njemu devicetree overlay fajl koji smo mi nazvali conexio_stratus_ns.overlay. Ime može biti bilo koje, ali ekstenzija mora biti .overlay.

/ {
	
	leds {
		compatible = "gpio-leds";
		relay_1:relay1 {
			gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
			label = "Relay 1";
		};
		relay_2:relay2 {
			gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
			label = "Relay 2";
		};
	};


	aliases {
		relay1 = &relay_1; /* For user programmable purpose */
		relay2 = &relay_2; /* For user programmable purpose */
	};
};

U bazičnom modu dodajemo opise za dva izlazna noda relay1 i relay2 na 17 i 18 GPIO pinu. Definisaćemo i aktivan status izlaza kao HIGH u ovom slučaju. Odmah ćemo dodati i aliase koji su zgodni pri pisanju programa. Njih ćemo iskoristiti za dobijanje indetifikatora čvora svakog od relejskih kontrolnih pinova.

#define RELAY1 DT_ALIAS(relay1)
#define RELAY2 DT_ALIAS(relay2)

Nakon toga ćemo inicijalizovati same GPIO linije i konfigurisati ih kao izlaze sa LOW nivoom.

static struct gpio_dt_spec relay1 = GPIO_DT_SPEC_GET(RELAY1, gpios);
static struct gpio_dt_spec relay2 = GPIO_DT_SPEC_GET(RELAY2, gpios);

gpio_pin_configure_dt(&relay1, GPIO_OUTPUT_LOW);
gpio_pin_configure_dt(&relay2, GPIO_OUTPUT_LOW);

Upravljanje stanjem na pinu vršimo komandom gpio_pin_set_dt u kojoj referenciramo izlaz i definišemo njegovo trenutno stanje, poput primera ispod.

gpio_pin_set_dt(&relay1, LED_ON);
gpio_pin_set_dt(&relay2, LED_OFF);

U skladu sa svim rečenim modifikovaćemo button demo program koji dolazi sa Conexio Stratus firmware-SDK-om i dobijamo finalni funkcionalni main.c. Program na početku oba releja stavlja u stanje prekida. Nakon pritiska na taster koji je ugrađen na Conexio Stratus ploči, prvo se zatvara relej 1, zadržava jedno vreme u tom stanju, a nakon toga on prekida liniju i zatvara se relej 2. Na kraju oba releja su otvorena i kroz terminale ne teče signal.

/*
 * Copyright (c) 2025 Conexio Technologies, Inc.
 * Author: Rajeev Piyare <rajeev@conexiotech.com>
 * 
 * Modify by magazin Mehatronika 
 * 
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/kernel.h>
#include <zephyr/sys/printk.h>
#include <zephyr/logging/log.h>
#include <zephyr/drivers/gpio.h>
/* Include the dk button library */
#include <dk_buttons_and_leds.h>

#define GPIO_NODE DT_NODELABEL(gpio0)
#define ZEPHYR_USER_NODE DT_PATH(zephyr_user)

/* The devicetree node identifier for the "led0" alias. */
#define LED DT_ALIAS(led0)
#define RELAY1 DT_ALIAS(relay1)
#define RELAY2 DT_ALIAS(relay2)

static struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED, gpios);
static struct gpio_dt_spec relay1 = GPIO_DT_SPEC_GET(RELAY1, gpios);
static struct gpio_dt_spec relay2 = GPIO_DT_SPEC_GET(RELAY2, gpios);

static const struct device *gpio_dev;

LOG_MODULE_REGISTER(app);

/* Set the sleep time */
#define SLEEP_TIME_MS 	1000
#define LED_ON_TIME_MS 	2000

#define LED_OFF 0
#define LED_ON !LED_OFF

/* Define the button handler function */
static void button_handler(uint32_t button_states, uint32_t has_changed)
{
	/* Check for the button state */
	if (has_changed & button_states & BIT(CONFIG_BUTTON_EVENT_BTN_NUM - 1)) {
		printk("Button pressed\n");
		/* Blink the LED on Stratus board */
		gpio_pin_set_dt(&led, LED_ON);
		gpio_pin_set_dt(&relay1, LED_OFF);
		gpio_pin_set_dt(&relay2, LED_OFF);
		k_msleep(LED_ON_TIME_MS);
		gpio_pin_set_dt(&led, LED_OFF);
		gpio_pin_set_dt(&relay1, LED_ON);
		gpio_pin_set_dt(&relay2, LED_OFF);
		k_msleep(LED_ON_TIME_MS);
		gpio_pin_set_dt(&relay1, LED_OFF);
		gpio_pin_set_dt(&relay2, LED_ON);
		k_msleep(LED_ON_TIME_MS);
		gpio_pin_set_dt(&relay1, LED_OFF);
		gpio_pin_set_dt(&relay2, LED_OFF);
	}
}

void init_led(void)
{
	gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE);
	gpio_pin_configure_dt(&relay1, GPIO_OUTPUT_LOW);
	gpio_pin_configure_dt(&relay2, GPIO_OUTPUT_LOW);
}

int main(void)
{
	printk("Button and Blink sample app for %s\n", CONFIG_BOARD);

	gpio_dev = DEVICE_DT_GET(GPIO_NODE);
	if (!gpio_dev) {
		printk("Error getting GPIO device binding\r\n");
		return false;
	}


	/* Initialize the LED pin */
	init_led();

	/* Initialize the button handler */
	dk_buttons_init(button_handler);

	while (1) {
		k_msleep(SLEEP_TIME_MS);
	}

	return 0;
}

NAPOMENA: Za praktičnu proveru softverskih rešenja korišćeni su Conexio Stratus i mikroE RELAY click koje smo dobili od proizvođača za potrebe pisanja recenzija.

  • About
  • Latest Posts
Aleksandar Dakić
Follow me
Aleksandar Dakić
Editor-in-chief at magazin Mehatronika
Aleksandar je osnivač magazina Mehatronika.

Sa pozadinom u električnom inženjeringu i dugom istorijom rada u stručnim časopisima, on se fokusira na ključnom sadržaju magazina Mehatronika i stoji iza brojnih inicijativa.
Aleksandar Dakić
Follow me
Latest posts by Aleksandar Dakić (see all)
  • Inovativna rešenja za optimizaciju potrošnje energije u industriji - 26/06/2025
  • magazin Mehatronika: nagradni konkurs #0003 - 25/06/2025
  • Danfoss iC2-Micro - 25/06/2025
Conexio
Previous Article1 Hz je novi trend
Next Article Moćnije simulacije i poboljšani korisnički interfejs sa FANUC ROBOGUIDE v10

Related posts

Inovativna rešenja za optimizaciju potrošnje energije u industriji

26/06/2025

Kako se nositi sa momentom inercije u aplikacijama koje zahtevaju precizno pozicioniranje?

26/04/2025

Node-RED: Upravljanje GPIO signalima na Orange Pi 4A

11/04/2025

MQTT server uz Node-RED na Radxa Cubie A5E

20/03/2025

Open Source rešenje za praćenje stanja senzora u pametnom domu uz Home Assistant i Elecrow W5

14/03/2025

Conexio Stratus Pro recenzija

8.8 07/12/2024
Kompanije
ABB akYtec Armsom Auma Automatika Banana Pi Beogradski Sajam Bosch Rexroth CADCAM Data CHIRON Croatia CircuitMess Danfoss DFRobot Digilent Dossis Eaton Elcom Media Elecfreaks Elecrow Electronic Design Elektromont ELESA+GANTER EMP EMT elektro ENEL Valjevo EP-Solutions ePlan Eurocom EXOR ETI Fanuc Faulhaber Festo Fox Electronics Gamax Gomo Design Hennlich Hidraulika HMS ICM Electronics ICOP INEA SR IvDam Process Control Kinco electronics LattePanda Libre Computer Lilygo magazinMehatronika malina314 Mean Well / ASIKO Melco-Buda Metronik Microsoft Mikro Kontrol Milk-V Mitsubishi Electric Momentum National Instruments Neminik Neofyton NVIDIA OM SISTEM Orange Pi PCBWay Pickering Radxa Raspberry Pi Recom Rittal Samsung Schneider Electric Schunk Seeed Studio Servoteh Siemens SM Automation Sobel Soldered staubli STMicroelectronics SunFounder Tectra / Megger teenage engineering Tehnogama TeLa elektrik TI LaunchPad Tipteh TRC pro Trim Triton Engineering UMBRAmatik Unicom Uno-Lux Processing Uno Lux NS URAM System Vesimpex VETS Weidmuller Wurth Elektronik Yaskawa Yokogawa
Distribuciju štampanih izdanja srednjim školama omogućile kompanije
Facebook X (Twitter) Instagram LinkedIn
  • Politika privatnosti
  • Uređivačka politika
  • Kontakt
  • Media kit
  • Slanje jedinica za recenziju
  • Pretplata
  • Elektronska izdanja

magazin Mehatronika - Agencija “Gomo Design”
Stanoja Glavaša 37, 26300 Vršac, Serbia
+381 60 0171 273

© 2025 magazin Mehatronika by Gomo Design.

Type above and press Enter to search. Press Esc to cancel.

Koristimo minimalne kolačiće da bismo obezbedili najbolje iskustvo na sajtu.PrihvatamPolitika privatnosti