Vineri – Duminica : BlackFriday la Robofun

 

Orice comanda cu livrare prin curier (indiferent de valoarea comenzii), lansata in perioada vineri, 25 noiembrie, ora 0:00 – duminica, 27 noiembrie, ora 24:00, va primi complet gratuit :

  • 50 de RON in servicii de printare 3D (pe care ii poti folosi oricand vreme de un an)

 

blackfriday

 

Regulamentul promotiei Black Friday

  • comenzile ridicate de la sediul Robofun nu intra in aceasta promotie (ca sa se aplice promotia pentru tine, este absolut necesar sa lansezi o comanda in intervalul de mai sus, cu livrare prin Fan Courier)

 

  • este necesar ca in campul “comentarii comanda” sa ne spui ce carte doresti, dintre cele 3 carti de mai sus; daca nu ne spui, alegem noi pentru tine 🙂

 

  • livrarea imprimantei 3D castigate se va face cel mai tarziu pe 15 decembrie 2016 (suntem in urma cu stocul in acest moment)

 

  • poti folosi bugetul de 50 RON pentru a obtine obiecte printate la cerere din PLA de catre noi, oricand in anul care urmeaza. Bugetul poate fi utilizat la o singura comanda (chiar daca valoarea comenzii este mai mica de 50 de RON). Este necesar sa ne amintesti in campul “comentarii comanda” faptul ca ai facut o comanda de Black Friday si ca atare ai un buget de 50 de RON atunci cand lansezi comanda pentru serviciile de printare 3D.

 

Raspberry Pi ca server de timp

În lipsa unei conexiuni Internet un sistem bazat pe Raspberry Pi este incapabil să mențină ora și data exactă dacă se întrerupe alimentarea cu energie electrică. Cea mai simplă modalitate de a rezolva acest lucru este adăugarea unui modul RTC la placă (așa cum am arătat și în proiectul Conectarea unui RTC I2C la o placă Raspberry Pi). În cadrul acestui proiect vom prezenta o modalitate de a transforma un sistem Raspberry Pi în sursă de timp într-o rețea de sisteme fără conexiune Internet. Imaginați-vă o rețea de plăci Raspberry Pi, fără conectivitate Internet, care au nevoie de oră și dată exacte și, mai mult decât atât, acestea să fie sincronizate. Instalarea a câte un modul RTC pe fiecare sistem va rezolva problema orei și datei pe fiecare sistem în parte dar nu va asigura sincronizarea exactă între sisteme. Din acest motiv o soluție mult mai elegantă este instalarea unui singur modul RTC și sincronizarea prin rețea a celorlalte sisteme cu sistemul pe care este instalat modulul RTC.

1

Ca modul RTC vom utiliza un modul Sparkfun DeadOn RTC bazat pe circuitul DS3234 – circuit RTC extrem de precis și care are un sistem de compensare a frecvenței de ceas pentru variații de temperatură.

2

https://www.robofun.ro/module/module-rtc/real_time_clock_DS3234

Modulul RTC necesită o baterie de 3V / 12mm (CR1220 de exemplu) pentru a menține ora și data în lipsa alimentării cu energie electrică a sistemului – bateria nu este inclusă la cumpărarare modulului.

Interconectarea cu placa Raspberry Pi se face prin intermediul magistralei seriale SPI și necesită următoarele conexiuni: pinul SS al modulului se va conecta la pinul GPIO8, pinul MOSI la pinul GPIO10, pinul MISO la pinul GPIO8, pinul SCLK la pinul GPIO11, pinul VCC la 3.3V și pinul GND la GND (precum în schema următoare).

3

Pentru a comunica cu modulul este necesar să activăm comunicația SPI prin intermediul utilitarului raspi-config:

sudo raspi-config

4

5

6

 

După activarea comunicației SPI vom crea un fișier ds3234-rpi-overlay.dts în care vom introduce următoarele:

/dts-v1/;

/plugin/;

/ {

    compatible = “brcm,bcm2708”;

    fragment@0 {

        target = <&spi0>;

        __overlay__ {

            spidev@0 {

                status = “disabled”;

            };

            ds3234@0 {

                compatible = “ds3234”;

                reg = <0>;

                #address-cells = <1>;

                #size-cells = <0>;

                spi-max-frequency = <500000>;

            };

        };

    };

};

și pe care îl vom transforma cu ajutorul comenzii:

sudo dtc -@ -I dts -O dtb -o ds3234-rpi-overlay.dtb ds3234-rpi-overlay.dts

și să copiem fișierul rezultat în /boot/overlay/ (fișierele de lucru pot fi șterse ulterior)

cp ds3234-rpi-overlay.dtb /boot/overlays/

În cazul în care comanda dtc nu este recunoscută trebuie să instalăm pachetul software device-tree-compiler:

sudo apt-get install device-tree-compiler

În final trebuie să ne asigurăm că fișierul /boot/config.txt conține următoarele două linii:

dtparam=spi=on

dtoverlay=ds3234-rpi

și să restartăm sistemul:

sudo reboot

După repornire vom verifica încărcarea modulului asociat RTC-ului:

pi@raspberrypi ~ $ lsmod | grep ds3234

rtc_ds3234              2088  0

și inițializarea corectă a acestuia:

pi@raspberrypi ~ $ dmesg | grep ds3234

[4.443480] ds3234 spi0.0: Control Reg: 0x1c

[4.443617] ds3234 spi0.0: Ctrl/Stat Reg: 0x88

[4.456070] ds3234 spi0.0: rtc core: registered ds3234 as rtc0

Din acest moment sistemul va utiliza modulul RTC ca sursă de timp. Inițializarea acestuia se va face cu ajutorul comenzii de scriere în memoria internă (sincronizarea de timp inițială):

sudo hwclock -w

iar verificarea se poate face cu ajutorul comenzii:

sudo hwclock -r

Pentru ca ora și data sistemului să fie disponibile în rețea este necesară configurarea unui server de NTP (Network Time Protocol). În general pachetul ntp este deja instalat în distibuția Linux a plăcii Raspberry Pi dar funcționează ca și client (sincronizează ceasul local prin intermediul rețelei Internet utilizând servere NTP publice). Pentru a activa caracteristica de server este necesară editarea fișierului /etc/ntp.conf, comentarea tuturor liniilor și înscrierea următoarei configurații (sau se poate înlocui fișierul cu totul):

driftfile /var/lib/ntp/ntp.drift

statistics loopstats peerstats clockstats

filegen loopstats file loopstats type day enable

filegen peerstats file peerstats type day enable

filegen clockstats file clockstats type day enable

Pentru activarea propriu-zisă a componentei de server sunt necesare următoarele linii (15 este rangul Stratum al serverului NTP, în cazul nostru este extrem de scăzut fiindcă sincronizarea nu se bazează pe un server extern):

server 127.127.1.0

fudge 127.127.1.0 stratum 15

Următoarele două linii sunt necesare pentru ca celelalte sisteme să poată interoga serverul (IPv4 și IPv6):

restrict -4 default kod notrap nomodify nopeer noquery

restrict -6 default kod notrap nomodify nopeer noquery

Vom permite interogările de pe sistemul local:

restrict 127.0.0.1

restrict ::1

și din rețeaua locală din care face parte sistemul (se presupune că este o clasă C de tipul 192.168.xxx.0/24):

restrict 192.168.xxx.0 mask 255.255.255.0 notrap

broadcast 192.168.xxx.255

După salvarea fișierului se va reporni serviciul ntp:

sudo /etc/init.d/ntp restart

și vom verifica starea serverului NTP:

pi@raspberrypi /etc $ ntpq -c rv 127.0.0.1

associd=0 status=0515 leap_none, sync_local, 1 event, clock_sync,

version=”ntpd 4.2.6p5@1.2349-o Mon Jul 25 22:35:28 UTC 2016 (1)”,

processor=”armv7l”, system=”Linux/4.4.38-v7+”, leap=00, stratum=16,

precision=-20, rootdelay=0.000, rootdisp=10.927, refid=…,

reftime=dc06888a.0d4b5241  Thu, Dec 22 2016 19:14:50.051,

clock=dc06888a.405fc437  Thu, Dec 22 2016 19:14:50.251, peer=55790, tc=6,

mintc=3, offset=0.000, frequency=-5.806, sys_jitter=0.000,

clk_jitter=0.001, clk_wander=0.000

Pe celelalte sisteme din rețea (sistemele client) se va edita același fișier /etc/ntp.conf , se va configura o directivă server cu adresa sistemului configurat ca server NTP (celelalte servere se pot comenta) și se va reporni serviciul ntp.

Configurația prezentată a fost testată pe sisteme rulând Raspbian GNU/Linux 8 (jessie), kernel 4.4.38-v7+ și ntp 4.2.6p5.

Materialul de față a fost inspirat de următoarele proiecte:

Raspberry PI and your SPI Real Time Clock (RTC)

http://www.sciencegizmo.com.au/?p=137

The Raspberry Pi as a Stratum-1 NTP Server

http://www.satsignal.eu/ntp/Raspberry-Pi-NTP.html