Competitie de Roboti Lego la SCiKiDS Festivalul Stiintei 2018

Competitie roboti Lego

Pentru ca esti interesat de roboti si de SCIKiDS Festivalul Stiintei, vrem sa te anuntam ca am deschis inscrierile pentru competitia de roboti de anul acesta.
Competitia de roboti SCIKiDS se desfasoara pe 20 si 21 octombrie 2018, la Mega Mall, si curprinde doua probe:
LINE FOLLOWER LEGO
MINI SUMO LEGO
Pentru a participa la competitia cu premii de la RoboFun, trebuie doar sa completezi un formular online.
Detalii si inscrieri gasesti aici: http://scikids.ro/scikids-fest/scikids-festivalul-stiintei-editia-a-vi-a-2018/concurs-roboti-2018/
Te asteptam,

Imprimanta Robofun 20-20-20 – HOW TO

Inainte de a incepe acest articol, te rog sa citesti cu mare atentie cele de mai jos.

Imprimanta 3D se alimenteaza in priza de 220 V. NICIODATA si sub nici un motiv nu desface carcasa imprimantei, nu introduce obiecte metalice in zona sursei de alimentare. Daca observi probleme in zona sursei sau a firelor de conexiune la priza, deconecteaza imediat imprimanta de sub tensiune si returneaz-o pentru reparatii. PERICOL DE ELECTROCUTARE !

De asemenea, nu lasa niciodata imprimanta 3D sub tensiune (conectata la priza) fara supraveghere. 

 

Pasii pentru a pune in functiune o imprimanta 3D Robofun  sunt cei de mai jos :

  1. descarca si instaleaza Cura (software-ul care proceseaza modelul 3D si il face usor de inteles pentru imprimanta)
  2. descarca si instaleaza Repetier (software-ul care gestioneaza procesul de printare)
  3. pune imprimanta sub tensiune si testeaza ca totul este OK din punct de vedere mecanic si software
  4. calibreaza distanta de start pe axa Z, daca este cazul
  5. calibreaza orizontalitatea bed-ul, daca este cazul
  6. primul print

 

Cand vei termina filamentul, va fi necesar sa il schimbi, conform instructiunilor de mai jos.

1. Instalare Cura

Cura este acel software care analizeaza obiectul 3D (pe care il ai in format STL) si genereaza un cod sursa pe care imprimanta il intelege (in format gcode).

Mergi la adresa web https://ultimaker.com/en/products/cura-software/list si descarca “Version: 2.3.1” (pe 32 de biti sau pe 64 de biti, in functie de ce arhitectura ai la PC; daca esti in dubiu, alege 32 de biti, va functiona oricum). Sigur ca poti alege si versiuni mai noi, insa tutorialul de mai jos este creat pentru Cura 2.3.1 Am ales aceasta versiune pentru ca este ultima care mai suporta versiune de 32 de biti.

Deschide fiecare grup de setari din partea dreapta si asigura-te ca totul este ca mai jos.

Optiunile “Retraction Distance” si “Retraction Speed” probabil ca nu sunt vizibile by default. Este necesar sa accesezi optiunea “Configure Settings Vizibility” din meniul “Settings” si sa le activezi (fa o cautare dupa “retract” – introdu acest text in campul “Filter” si va fi simplu).

 

 

2. Instalare Repetier

Repetier este acel software care se ocupa efectiv de procesul de printare. Rolul lui este de a trimite progresiv codul gcode la imprimanta si a monitoriza parametri de printare.

Descarca “Repetier Host Windows 2.0.5” de la adresa – https://www.repetier.com/download-now/ . Sigur, poti descarca si o versiune mai noua daca vrei, insa tutorialul de mai jos este pentru versiunea 2.0.5

 

3. Teste preliminare imprimanta

A. conectare cablu USB

Folosind cablul USB primit o data cu imprimanta, conecteaza imprimanta la PC, ca in poza de mai jos.

Nu toate cablurile USB sunt la fel de bune, asa ca pentru inceput, te rog sa folosesti cablul primit o data cu imprimanta. Mai tarziu, dupa ce printezi cateva zile, il poti schimba daca vrei, insa daca apar orice fel de probleme, intoarce-te la cablul USB original.Viteza de transfer este destul de mare, asa ca ai nevoie de un cablu care sa o poata suporta.

 

B. drivere si port USB

Ar trebui ca PC-ul sa vada automat imprimanta si sa creeze un nou port serial pentru comunicarea cu aceasta.

Deschide Control Panel, apoi Device Manager, si verifica sectiunea “Ports”. Ar trebui sa ai o inregistrare similara cu cea de mai jos. Probabil ca la tine numarul portului va fi mult mai mic (gen COM4, sau COM5).

Daca nu vezi o astfel de inregistrare in Device Manager, inseamna ca driver-ele nu sunt corect instalate. Ne poti contacta la adresa de email contact [at] robofun [dot] ro si te vom ajuta cu placere sa rezolvi problema.

C. conectare Repetier

Conecteaza imprimanta la 220 V, in priza. Inca o data, repet avertismentul de la inceput. NU deschide carcasa imprimantei si NU introduce obiecte metalice in zona sursei. Pericol de electrocutare !

Deschide programul “Repetier-Host”, instalat la pasul precedent.

Din meniul “Config”, alege optiunea “Printer Settings”. Selecteaza portul pe care l-ai vazut mai devreme in Device Manager, apoi selecteaza o viteza de transfer (Baud Rate) de 115200, si apasa OK.

Apasa butonul “Connect”, din stanga sus. Ar trebui ca eticheta butonului sa se schimbe in “Disconnect”, iar in partea de jos a ecranului sa vezi o serie de mesaje primite de la imprimanta, ca mai jos.

Daca nu vezi aceste mesaj, inseamna ca exista o problema si nu vei putea printa. Verifica inca o data in Device Manager numarul portului serial COM, si asigura-te ca este corect introdus in Printer Settings. Asigura-te ca viteza este de 115200. Daca nu reusesti, ne poti contacta la adresa de email contact [at] robofun [dot] ro si te vom ajuta cu placere sa rezolvi problema.

D. teste miscare din Repetier

Deschide tab-ul “Manual Control” (dreapta sus). Aceasta sectiune iti permite sa iti controlezi imprimanta manual, pentru teste.

Apasa “HOME X”. Ar trebui sa vezi ca axa X (hotend-ul) se misca. Apasa butonul “HOME Y”. Ar trebui sa vezi ca axa Y (bed-ul) se misca.

Daca nu se intampla asta, verifica daca imprimanta este in priza, si daca in priza chiar ai curent 🙂

 

 

E. teste incalzire din Repetier

In zona inferioara a tab-ul “Manual Control” vezi temperaturile curente ale bed-ului si ale extruderului. Ar trebui sa vezi temperatura ambianta in acest moment. Apasa pe icon-ul “INCALZIRE BED”, apoi apasa pe icon-ul “INCALZIRE HOTEND”, astfel incat sa nu mai fie taiate cu linie rosie. Vei observa ca si bed-ul si hotend-ul incep sa se incalzeasca.

 

F. test extrudare din Repetier

Dupa ce hotend-ul a atins 200 de grade (verifici temperatura afisata), apasa butonul “AVANS FILAMENT”. In functie de unde anume apesi, vei scoate 10 mm, 50 de mm sau 100 de mm de filament. Recomand sa apesi astfel incat sa scoti 50 de mm de filament. Motorul montat in partea de sus, cel care actioneaza extruder-ul va incepe sa se miste si vei observa cum filamentul iese prin hotend (este “extrudat”).

Miscarea filamentului trebuie sa fie continua, si la fel si curgerea filamentului topit prin hotend.

 

4. Calibrare pe axa Z

Este foarte important ca distanta dintre bed si hotend sa fie exact cat trebuie atunci cand incepe procesul de printare. Daca este prea mare, filamentul nu va adera la bed. Daca este prea mica, filamentul nu va avea loc sa iasa din cauza bed-ul. Acest lucru se regleaza din elementul din stanga.

Rolul lui este de a lovi in butonul mic, de culoare rosie, si de a semnaliza astfel pozitia de zero pe axa verticala. Este prins pe surub, astfel incat daca il rotesti spre dreapta, surubul se insurubeaza in prindere, iar elementul de reglaj se misca in sus. Daca il rotesti spre stanga, surubul se desurubeaza, iar elementul de reglaj de misca in jos. Atunci cand se misca in sus, el va lovi mai tarziu butonul, astfel incat distanta de start va fi mai mica. Cand se misca in jos, va lovi mai devreme butonul, deci distanta de start va fi mai mare.

Misca cu mana hotend-ul si bed-ul astfel incat hotend-ul sa se afle relativ in centrul bed-ul. Pune o coala de hartie obisnuita pe bed si apasa butonul “HOME Z”. Vei vedea ca hotend-ul incepe sa coboare. In momentul in care elementul de reglaj din poza de mai sus atinge butonul, hotend-ul se va opri. Foaia de hartie este prinsa intre hotend si bed in acest moment. Incearca sa o misti. Ar trebui sa o poti misca, dar cu un pic de rezistenta.

Daca este foarte bine fixata si nu o poti misca, inseamna ca distanta este prea mica. Apasa pe butonul “Z UP” ca sa misti axa Z in sus cu 10 mm, apoi roteste elementul de reglaj spre stanga, ca sa il deplasezi in jos (astfel incat sa loveasca mai devreme butonul) si apasa iar pe butonul “HOME Z”.

Daca foaia de hartie se misca liber, inseamna ca distanta este prea mare. Apasa pe butonul “Z UP” ca sa misti axa Z in sus cu 10 mm, apoi roteste elementul de reglaj spre dreapta, ca sa il deplasezi in sus (astfel incat sa loveasca mai tarziu butonul), si apasa iar pe butonul “HOME Z”.

Repeta pasii pana cand foaia de hartie se misca, dar cu un pic de rezistenta.

 

 

5. Calibrarea orizontalitatii bed-ului

Misca cu mana bed-ul si hotend-ul astfel incat sa duci hotend-ul in fiecare dintre cele patru colturi ale bed-ului, si repeta teste cu foaia de hartie de mai sus pentru fiecare colt. Ca diferenta, distanta o reglezi de data aceasta NU din elementul mobil folosit la pasul 4, ci direct din piulita de prindere a bed-ului din acel colt.

Bed-ul este prin pe arcuri, asa ca prin rasucirea piulitei de prindere poti ridica si cobori fiecare colt. Continua pana cand poti misca foaia de hartie relativ liber in fiecare colt.

 

6. Primul print

Descarca obiectul STL de aici – https://www.robofun.ro/docs/x-carriage.stl

Deschide Cura (instalat la unul dintre pasii anteriori)

Din meniul “File”, alege “Open File”. Selecteaza fisierul STL descarcat.

Apasa butonul “Save to File” (dreapta jos). Salveaza fisierul gcode unde vrei tu.

Deschide Repetier. Incarca fisierul gcode (butonul “Load”). Atentie mare la acest pas, incarca fisierul cu extensia .gcode si NU cel cu extensia .STL !

Apasa butonul “Start Print”.

Dupa ce hotend-ul se incalzeste la 210 grade, imprimanta va incepe sa printeze.

 

 

 

SCHIMBARE FILAMENT

Dupa primul print, urmeaza al doilea, apoi al treilea, si la un moment dat se termina filamentul. Operatiunea de schimbare este relativ simpla, cat timp urmezi exact pasii de mai jos.

  1. incalzesti hotendul la 210 grade (si astepti sa ajunga la temperatura asta).
  2. extrudezi circa 5-10 cm de filament (rotesti roata extruder-ului – manual sau din Repetier in sensul in care filamentul iese topit prin hotend). Acest pas este extrem de important. Dupa printul anterior, filamentul lichid s-a solidificat in hotend, in forma hotend-ului. Daca nu faci acest pas, atunci cand vei incerca sa il scoti, se va rupe. Scotandu-l prin hotend in forma lichida, te asiguri ca filamentul care a fost topit la pasul anterior si apoi solidificat este complet eliminat sub forma lichida.
  3. scoti complet filamentul din imprimanta (rotesti roata extruder-ului – manual sau din Repetier in sensul in care filamentul iese din imprimanta)
  4. indrepti noul filamentul la capat
  5. introduci noul filament si il cobori prin tubul de teflon pana la hotend, invartind roata extruderului.

Inainte sa apuci de treaba, urmareste neaparat si filmele de mai jos (cu sunet !)

 

 

 

 

 

 

Troubleshooting

1. PROBLEMA :

Obiectul nu se lipeste pe bed, sau se lipeste la inceput, dar in timpul printarii se dezlipeste

REZOLVARE:

Cel mai probabil distanta de start pe Z nu este cea corecta. Vezi mai sus sectiunea “4. Calibrare pe axa Z”. Daca este OK distanta, este posibil ca adezivul depus pe bed sa se fi uscat prea tare. Poti depune un nou strat de adeziv pe bed (vezi link ca sa intelegi despre ce adeziv vorbesc) . Poti deasemenea spala sticla (dupa ce o scoti din cele patru clame), o usuci, si abia apoi aplici adezivul.

2. PROBLEMA :

Avand hotend-ul incalzit la mai mult de 200 de grade, filamentul refuza sa curga.

REZOLVARE:

Cel mai probabil nu ai calibrat corect distanta de start pe axa Z, si curgerea filamentului a fost blocata de sticla de pe bed, datorita distantei extrem de mici intre hotend si bed (vezi filmele de la “4. Calibrare pe axa Z”).

Filamentul a fost fortat mai mult timp de catre surubul de transport, curgerea normala a fost blocata, si astfel filamentul a fost tocat de catre surub. Va trebui sa incerci sa il scoti si sa il pui din nou. Vezi filmul de mai jos.

 

 

 

Sistem logare functionare sistem ventilatie industrial

Obiectiv

Logarea functionarii unui sistem industrial de ventilatie. Ventilatorul folosit (deja instalat) este de 10 kW, alimentat la 220V. Cerinta este de a monitoriza functionarea acestuia de-a lungul timpului.

Hardware

Am ales sa folosesc urmatoarele :

 

Senzorul de curent non-invaziv

 

Un senzor de curent non-invaziv reprezinta o modalitate excelenta de a masura consumul unui aparat alimentat la priza de 220V.

Foarte scurt, bobina senzorului se trece in jurul unuia dintre firele de alimentare de 220 (nul sau faza), iar curentul alternativ de 220V induce in bobina senzorului un curent alternativ, care este masurat folosind placa Arduino, pe un rezistor de sarcina.

Un pic mai pe lung, tensiunea indusa in bobina este o tensiune alternativa, iar nivelele de tensiune sunt centrate pe zero (exista atat tensiuni pozitive, cat si negative). Arduino nu se descurca cu tensiuni negative. Solutia este un divizor de tensiune creat folosind 2 rezistoare de 10 K, si folosirea tensiunii de 2.5 V astfel obtinute pentru a centra tensiunea citita pe nivelul de 2.5V (in loc de zero).

Daca esti curios sa intelegi mai multe despre cum functioneaza senzorul, arunca un ochi aici – https://learn.openenergymonitor.org/electricity-monitoring/ct-sensors/interface-with-arduino?redirected=true

Daca nu, si tot ce vrei este sa obtii ceva functional, vezi mai jos.

Senzorul de curent este prevazut din fabrica cu un jack audio, cu trei pini de iesire (central, mijloc si camasa). O varianta simpla este sa tai jack-ul si astfel sa ai acces la cele trei fire. Din cele trei, doar doua sunt utile (conectate la bobina senzorului), al treilea nu este folosit. Ca sa iti dai seama care sunt cele doua fire pe care le vei folosi, cel mai simplu este sa folosesti un ohmetru. Cauta perechea de fire intre care masori o rezistenta de cateva sute de ohm (rezistenta bobinei). Intre oricare alte doua fire este o rezistenta extrem de mare.

Realizeaza circuitul de mai sus pe un breadboard, sau pe o placa cu gauri .

 

Arunca un ochi si aici, pentru ceva explicatii mai in detaliu – https://learn.sparkfun.com/tutorials/environmental-monitoring-with-the-tessel-2

Am folosit in plus si un LCD Shield pentru debug, sau pentru situatia in care nu imi functioneaza internet-ul si vreau totusi sa vad valoarea citita de senzor – https://www.robofun.ro/shield-lcd-16×2?search=lcd%20shield

Codul sursa

Este disponibil integral pe github – https://github.com/viorelspinu/senzor-curent, sau mai jos.

In codul de mai jos, va trebuie sa inlocuiesti TOKEN cu o valoare valida de identificare de senzor obtinut gratuit din http://iot.robofun.ro/ . Vezi si http://iot.robofun.ro/doc .

 

#include "LiquidCrystal.h"
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
#include "SPI.h"
#include "Ethernet2.h"
byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0xE1, 0xEE };
EthernetClient client;
char server[] = "iot.robofun.ro";

bool isInternet = true;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("START INTERNET..");

  if (Ethernet.begin(mac) == 0) {
    isInternet = false;
    lcd.setCursor(0, 0);
    lcd.print("                ");
    lcd.setCursor(0, 0);
    lcd.print("NO INTERNET");
  } else {
    isInternet = true;
    Serial.println(Ethernet.localIP());
    lcd.setCursor(0, 0);
    lcd.print("                ");
    lcd.setCursor(0, 0);
    lcd.print(Ethernet.localIP());
  }
}

int oldVal = 0;
long iotUpdateTime = 0;
void loop() {
  int val = readCurrent();

  if (val < 16) { val = 0; } if (oldVal != val) { if (oldVal == 0) { iotUpdateTime = millis(); sendIOT(oldVal); sendIOT(val); } if (oldVal != 0) { if ((millis() - iotUpdateTime) > 60 * 10000) {
        iotUpdateTime = millis();
        sendIOT(val);
      }
    }

    if (val == 0){
        iotUpdateTime = millis();
        sendIOT(oldVal);
        sendIOT(val);
    }
    
    oldVal = val;
  }

  Serial.println(val);
  lcd.setCursor(0, 1);
  lcd.print("     ");
  lcd.setCursor(0, 1);
  lcd.print(val);

  delay(10);
}


void sendIOT(int val) {

  if (isInternet) {
    String temp = "GET /api/v1/senzor/TOKEN/input?value=" + String(val) + " HTTP/1.1";
    char param[100];
    temp.toCharArray(param, temp.length() + 1);

    if (client.connect(server, 80)) {
      client.println(param);
      client.println("Host: iot.robofun.ro");
      client.println("User - Agent: arduino - ethernet");
      client.println("Connection: close");
      client.println();
      Serial.println("GET DONE");
    }
    client.stop();
  }
}

int readCurrent() {
  long minim = 1023;
  long maxim = 0;
  for (int i = 0; i < 500; i++) { int v = analogRead(0); if (minim > v) {
      minim = v;
    }
    if (maxim < v) {
      maxim = v;
    }
  }
  return maxim - minim;
}




Sistem IOT monitorizare temperatura si umiditatea solului

 

Obiectiv 

Am dezvoltat acest sistem pentru un prieten care are o casa la tara, unde are o mica gradina. Nu locuieste acolo tot timpul, si vrea sa stie daca este sau nu cazul sa irige gradina.

Arhitectura

Ca sa aiba acces la date de oriunde, am ales sa trimit datele in Internet folosind http://iot.robofun.ro .

Mai jos este graficul temperaturii, in timp real :

http://iot.robofun.ro/public/senzor/8rr6e9r8sag76t0vnkrcrnp4ml

In acest moment datele masurate sunt publice. Intra pe http://iot.robofun.ro si foloseste “Testeaza Cont Demo”.

Pentru nodul care face efectiv masurarea valorilor am ales :

Arduino Pro Mini 3.3 V https://www.robofun.ro/arduino_pro_mini_328_8mhz 

  • am ales asta pentru ca este o placa care consuma extrem de putin in sleep mode, ceea ce imi permite sa o alimentez pe baterii

Modul Radio RFM69  – https://www.robofun.ro/sparkfun-rfm69-breakout-434mhz-

Senzor Umiditate Sol https://www.robofun.ro/soil-moisture-sensor

Senzor de Temperatura Inlantuibil Brick – https://www.robofun.ro/senzor-temperatura-inlantuibil-brick-DS18B20-motherboard

Senzor de Temperatura DS18B20+ – https://www.robofun.ro/senzor-temperatura-DS18B20

  • am ales senzorii de temperatura inlantuibili pentru ca folosind doar 3 fire pot monta oricat de multi senzori (pe aceleasi 3 fire).  Distanta intre Arduino si senzori poate ajunge la cateva sute de metri.

Cutie 6 baterii AA – https://www.robofun.ro/cutie-6-baterii

As fi putut sa pun direct un modul wifi si sa renunt la WIFI, dar m-am gandit ca poate in viitor voi vrea sa extind sistemul cu mai multi senzori pus in zone in care nu bate WIFI-ul din casa.

 

Pentru gateway (sistemul catre trimite valorile in cloud) am ales :

Arduino YUN  – https://www.robofun.ro/arduino_yun

Sunt multe lucruri care imi plac tare la acest dispozitiv :

  • este foarte robusta, de fiecare data a mers exact cum trebuie, in toate proiectele unde am folosit-o; libraria este bine scrisa, simplu de folosit
  • are atat conectivitate WIFI cat si prin fir de retea
  • setarea datelor de retea WIFI se face foarte foarte simplu, fara sa fie nevoie sa reprogramez placa; acest punct a fost unul esential pentru mine, pentru ca era cam aiurea sa ii cer amicului sa-mi dea parola lui de WIFI ca sa o pun eu in cod; folosind Arduino YUN, te conectezi la o retea generata chiar de placa si din interfata web de configurare (intri folosind telefonul mobil intr-un site web) setezi tot ce vrei; un exemplu mai clar aici – https://www.youtube.com/watch?v=9-hPhWHWnvs 

Modul Radio RFM69  – https://www.robofun.ro/sparkfun-rfm69-breakout-434mhz-

  • pentru receptia datelor trimise de nod

Arduino Pro Mini 3.3 V https://www.robofun.ro/arduino_pro_mini_328_8mhz 

  • dat fiind ca modulul radio functioneaza maxim la 3.3V, iar Arduino YUN functioneaza la 5V, am mai folosit inca un Arduino Pro Mini 3.3V pentru interfatare; Arduino Pro Mini este conectat la modulul radio (3.3V ambele), iar apoi trimite datele printr-o conexiune SoftwareSerial catre Arduino YUN. Dat fiind ca doar trimite date catre YUN (si nu si receptioneaza date inapoi), este OK din punct de vedere al nivelelor de tensiune. “1” logic este trimis de catre Arduino Pro Mini ca 3.3V, iar YUN interpreteaza si el tot ca “1” logic acest nivel, chiar daca functioneaza la 5V.

 

  • folosirea unui Arduino Pro Mini pe post de convertor de nivel logic (asa cum am facut eu) nu este chiar cea mai desteapta idee 🙂 Iti recomand sa folosesti un device special gandit pentru asta – https://www.robofun.ro/logic-level-convertor-4-canale-bidirectional . Daca folosesti un logic level convertor poti sa faci transmisie radio in ambele sensuri (si de la nod catre YUN si de la YUN catre nod). Eu nu l-am folosit pentru ca in momentul in care am realizat proiectul nu am avut unul la indemana.

 

Nodul care citeste datele

Conexiunile Arduino Pro Mini – modul radio

Senzorul de temperatura (motherboard – https://www.robofun.ro/senzor-temperatura-inlantuibil-brick-DS18B20-motherboard) l-am conectat cu pinul DQ la pinul 6 digital Arduino Pro Mini. GND si 5V le-am conectat la GND, respectiv 3.3 V (chiar daca pe placa este specificat 5V ca tensiune de alimentare, senzorul merge foarte OK si la 3.3 V).

Senzorul de umiditate a solului l-am cuplat pe pinul analogic 0 (VCC la 3.3 V, GND la GND si SIG la pinul analog 0 al placii Arduino Pro Mini).

Sistemul l-am alimentat folosind cutia de baterii (pinii GND si RAW).

Pentru a citi nivelul bateriei (ca sa stiu cand trebuie sa le schimb), am realizat un divizor de tensiune 1:3. Am folosit 3 rezistoare de 100 de K inseriate (legate unul in continuarea celuilalt). Capetele extreme le-am legat la pinul RAW si la pinul GND. Pinul analog 7 (se afla pe zona interioara a placii Arduino Pro Mini) l-am conectat dupa primul rezistor (numarand de la GND). Vezi poza de mai jos.

In acest mod voltajul bateriei (de 9V) este redus de 3 ori, pana la cel mult 3 V, astfel incat tensiunea sa poata fi citita de catre Arduino Pro Mini.

 

Codul sursa pentru nod

Codul sursa pentru nod este bazat pe exemplu Node din libraria pentru modulul radio RFM69.

Este disponibil integral, aici – https://github.com/viorelspinu/iot-sol-umiditate/blob/master/nod/nod.ino

Gateway-ul

Pentru gateway (sistemul care primeste datele prin radio si trimite in Internet) am folosit un Arduino Pro Mini + un modul radio RFM69 pe post de receptor radio, si un Arduino YUN pentru a trimite in Internet.

Am conectat pinul digital 8 al placii Arduino Pro Mini cu pinul digital 8 al placii Arduino YUN pentru a putea trimite datele receptionate prin radio de catre Arduino Pro Mini catre Arduino YUN.

Disclaimer :

  • folosirea unui Arduino Pro Mini pe post de convertor de nivel logic (asa cum am facut eu) nu este chiar cea mai desteapta idee 🙂 Iti recomand sa folosesti un device special gandit pentru asta – https://www.robofun.ro/logic-level-convertor-4-canale-bidirectional . Daca folosesti un logic level convertor poti sa faci transmisie radio in ambele sensuri (si de la nod catre YUN si de la YUN catre nod). Eu nu l-am folosit pentru ca in momentul in care am realizat proiectul nu am avut unul la indemana.

 

Codul sursa Arduino Pro Mini din gateway este disponibil integral, aici – https://github.com/viorelspinu/iot-sol-umiditate/blob/master/gateway/gateway.ino

 

Codul sursa Arduino YUN din gateway este disponibil integral, aici – https://github.com/viorelspinu/iot-sol-umiditate/blob/master/yun/yun.ino