DS485 - Concentratore per sensori di temperature DS18B20

Il DS485 è una scheda Linux embedded in grado di raccogliere dati da un gruppo di sensori di temperatura digitali 1-wire DS18B20 e inviarne i dati su bus RS485, WiFi o LAN. La scheda è disegnata sul modulo SOM Arietta G25.

Software

Linux Kernel e rootfs

La microSD della DS485 è stata realizzata compilando il Kernel 4.9.79

Il dts utilizzato è questo:

La distribuzione Linux usata è la Debian Jessie 8.8 contenuta nella immagine disponibile da questo link:

Applicativo in Python

Il programma di gestione della DS485 è stato scritto in Python e si trova sul seguente repository GitHub:

Il software si compone di una parte che gira sul concentratore (di solito una Raspberry Pi) e una parte che gira sulla scheda DS485.

La parte su arietta si chiama ds485.py e permette di:

  • Accettare comandi da RS485
  • Gestire il rivelamento automatico dei sensori DS18B20 connessi ai 4 bus 1-wire di cui è dotata la scheda
  • Visualizzare su un display LCD alfanumerico 16x2 retroilluminato le letture di temperature
  • Gestire una semplice interfaccia utente per l'installatore per verificare la corretta funzionalità dei sensori connessi e impostare l'indirizzo sul bus RS485 del concentratore
  • Inviare in remoto i dati istantanei di temperatura letti
  • Consentire di pilotare il relè a bordo con comandi RS485

Da una Raspberry Pi è possibile interrogare più moduli Arietta G25 tramite una sola interfaccia RS485

Per provare gli esempi sulla Raspberry master occorre installare:

sudo apt update
sudo apt python-serial

Ecco alcuni programmi d'esempio per la Raspberry Pi che fa da concentratore:

  • try_read.py che legge e visualizza i dati provenienti dai concentratori DS485 sul campo
  • try_relay.py che accende e spegne un relè su un dato concentratore

Password

Accesso alla CM3-Home da SSH

User: pi Password: acmesystems

Accesso ad Arietta da SSH

User: root Password: acmesystems

Hardware

Caratteristiche

  • Scheda ARM9 a 400MHz con 256MB di memoria Arietta G25
  • 3 porte USB host
  • 1 bus RS485 non optoisolato con morsetto in e out
  • 4 bus 1-wire indipendenti su morsetti a tre viti
  • Display LCD alfanumerico retroilluminato 16x2 Winstar
  • 4 pulsanti su PCB
  • Alimentazione di ingresso 9-24 volt DC (vedi DC/DC converter EPS con morsetti in e out
  • Range di temperatura esteso -40 +85 (ad eccezione dell'LCD)

Schema elettrico

Architettura interna

Case

La scheda è a frame aperto e disegnata per essere montata all'interno di una scatola di derivazione Gewiss GW 44 207

Segnali sui morsetti a vite

J1 (SX) J3 (DX)
+24V GND
GND 1Wa
A 3V3
B GND
+24V 1Wb
GND 3V3
A GND
B 1Wc
- 3V3
NO GND
C 1Wd
NC 3V3

Arietta debug port

Pin # Signal
3 TXD
4 RXD
6 GND

Pin usati su Arietta G25

Pin utilizzati su Arietta G25 e pin disponibili per eventuali estensioni

Pinout Arietta Pin Atmel Uso su scheda Segnali liberi
J4.1 5VDC in 5VDC
J4.2 VBAT
J4.3 NRST
J4.4 USB A D- USB Host A D-
J4.5 3V3 out 3V3 out
J4.6 USB A D+ USB Host A D+
J4.7 PA23 SPI1 CK
J4.8 PA22 SPI1 MOSI
J4.9 GND GND
J4.10 PA21 SPI1 MISO
J4.11 PA24 1-WIRE 1
J4.12 PA31 LCD SCL I2C
J4.13 PA25 1-WIRE 2
J4.14 PA30 LCD SDA I2C
J4.15 PA26 1-WIRE 3
J4.16 USB B D+ USB Host B D+
J4.17 PA27 1-WIRE 4
J4.18 USB B D- USB B D-
J4.19 PA28 LCD backlight
J4.20 USB C D- USB C D-
J4.21 PA29 PA29
J4.22 USB C D+ USB C D+
J4.23 PA0 SPI1 CS1
J4.24 PA1
J4.25 PA8 SPI1 CS0
J4.26 PA7 PA7
J4.27 PA6 RXD1 < RS485
J4.28 PA5 TXD1 > RS485
J4.29 PC28 Relay
J4.30 PC27 DE > RS485
J4.31 PC4 USB On
J4.32 PC31 PC31
J4.33 PC3 Switch OK
J4.34 PB11 ADC0 or PWM0
J4.35 PC2 Switch >
J4.36 PB12 ADC1 or PWM1
J4.37 PC1 Switch <
J4.38 PB13 ADC2 or PWM2
J4.39 PC0 Switch ESC
J4.40 PB14 ADC3 or PWM3

Troubleshootings

Interfaccia WiFi o Eth non funzionante

Se si cambia l'interfaccia WiFi o Eth sulla porta USB potrebbe non attivarsi. In questo caso provare a cancellare il file

/etc/udev/rules.d/70-persistent-net.rules

e a fare il reboot

Links