«

»

Zář 05 2014

1. Zapojení DS2482S-100 (I2C-1wire) a teplotních čidel (DS18B20) – součástky, zapojení, instalace, nastavení, MySQL, PHP, WEB, Android aplikace

 

tak jsem se konečně dostal k odzkoušení a vytvoření jednoduchého návodu na kontrolu teploty v domácnosti za použití 1wire sběrnice DS2482S-100 a teplotních čidel DS18B20. Pro ukládání dat jsem použil DB MySQL a ukládání je řešeno za pomocí PHP skriptu. Pro zobrazení na webu jsem použil doménu raspberry-pi.eu, kterou hostuji doma na svém Pi (mám veřejnou IP), php a java script. Další možností kontroly teplot doma, je přes chytré zařízení běžící pod systémem android (bez veřejné IP to bude fungovat pouze doma na stejné síti)

zapojení do nepájivého p

zapojení do nepájivého p

 

1. Součástky a zapojení

  • DS18B20 teplotní čidlo
  • DS2482S-100 I2C na 1wire
  • MS-DIP na SO-8 redukce
  • 4.7 kOhm odpor
  • kabely a nepájivé pole
  • telefonní kabel na zavedení čidel do místností

 

velikost DS2482S-100

velikost DS2482S-100

 

základním a nejtěžším úkolem je napájení sběrnice  DS2482S-100 na plošňák SO-8, kterým pak můžeme vkládat do nepájivého pole

 

DS2482S-100 na SO-8

DS2482S-100 na SO-8

 

dále je potřeba vše dát dohromady. V mém případě mám jedno teplotní čidlo zapojeno přímo v nepájivém poli a připraven pro napojení dalších teplotních čidel (viz. druhý obrázek níže v pravém rohu)

zapojení do nepájivého pole

zapojení do nepájivého pole

schéma zapojení

schéma zapojení

zapojení do nepájivého p

zapojení do nepájivého p

zde je vidět, jak tam jsou navíc zapojené kabely (pro přenos dat jsem použil telefonní kabel – 4linku a jeden není použit) od ostatních čidel rozmístěných po bytě. Výhodou tohoto zapojení je, že se na jeden kabel dají napojit veškerá čidla (pokud to je jedním směrem), protože jsou zapojené do sběrnice

zapojení

zapojení

 

 2. Nainstalování a nastavení Pi

  • nejprve odstraňte I2C moduly z jádra černé listiny.

zakomentujte řádek přidání “#” na začátku řádku

uzavřít a uložit soubor (CTRL+x a pak “y” a enter)

  • pro nastavení nahrání modulů při startu je potřeba upravit tento soubor

přidat tyto dva řádky

uzavřít a uložit soubor (CTRL+x a pak “y” a enter)

  •  instalace některých nástrojů pro práci s I2C
  •  teplotní čidlo již komunikuje a lze udělat rychlou kontrolu funkčnosit

i2cdetect

  • pokuď nastane nějaký problém, je možné ještě zkusit přidat text do souboru /boot/config.txt

přidat

device_tree=bcm2708-rpi-b-plus.dtb
device_tree_param=i2c1=on
device_tree_param=spi=on

(změna se projeví po restartu)

  • pro získání teploty je potřeba nainstalovat owfs a ow-shell balíček.
  • vytvoření adresáře, kde se potom budou ve složkách objevovat připojené teplotní čidla
    •  nyní je potřeba upravit soubor ows.conf

přidání “#” na začátek řádku

přidání těchto řádků na konec souboru

 uzavřít a uložit soubor (CTRL+x a pak “y” a enter)

    • poslední soubor, který je třeba také upravit je fuse.conf

odstranění “#” na začátku řádku u

uzavřít a uložit soubor (CTRL+x a pak “y” a enter)

  • po těchto změnách je dobré pro jistotu udělat restart Pi
  • po naběhnutí Pi se musí spustit “owfs”
  •  pak už stačí spustit midnight commander a doklikat se do složky /mnt/1wire/

zde jsou vidět tři adresy teplotních senzorů

MC_mmt_1wire

MC_mmt_1wire

jeden si vybereme a najedeme na soubor temperature a dáme F3

MC_mmn_1wire

MC_mmn_1wire

a zde je aktuální teplota na daném senzoru

MC_mmn_1wire

MC_mmn_1wire

ještě je potřeba udělat jednu důležitou věc a to nastavení automatického spuštění “owfs” po startu

na konec přidáme tento řádek

uzavřít a uložit soubor (CTRL+x a pak “y” a enter)

 

3. Nastavení automatického ukládání dat z jednotlivých čidel do databáze MySQL pomocí PHP skriptu

 

nejprve se musí nainstalovat appace, mysql a php do Raspberry Pi (pokud již není nainstalováno)

po instalaci a zadání hesla pro uživatele “root” pro MySQL vytvoříme databazi “develop”

pro ukládání dat do DB jsem zvolil dvě tabulky a jeden pohled

do této tabulky je potřeba vložit názvy a adresy teploměru

tabulka pro ukládání teplot

a pohled pro výběr dat (stav je označení pro aktivní teploměr  -> 1 aktivní, 0 neaktivní)

defaultní umístění adresáře pro www je /var/www/ kde je potřeba vytvořit PHP skript, který se napojí do DB a pak nastavení v CRONu pro automatické volání tohoto PHP skriptu, který se bude pravidelně spouštět a ukládat teploty

vložíme tento skript, kde je potřeba změnit heslo pro root uživatele

nastavení CRONu

vložíme tento řádek, kde je nastaveno, že skript bude do DB ukládat data každých 5 minut

 

4. Vytvoření skriptů pro zobrazení dat na webu

najedeme do adresáře pro www a zde se musejí vytvořit tři skripty. dallas.php je skript, který se bude spouštět a volat skript pro získání dat z DB dallas.csv.php a pro graf dygraph-combined.js.

první skript dallas.php

vložíme tento skript a je nutné upravit na local host. (ja mám veřejnou IP a běží mi to na doméně raspberry-pi.eu)

druhý skript dallas.csv.php

 

zde je opět nutné změnit heslo

ještě poslední skript, který je potřeba vytvořit je pro zobrazení grafu

a vložit tyto data dygraph-combined.js

 

pak už stačí jenom spustit prohlížeč */dallas.php

www_zobrazení

www_zobrazení

 

5. Vytvoření aplikace pro Android zařízení, extrakce dat z MySQL DB za použití PHP, JSON (toto je možné za předpokladu veřejné IP na Raspberry PI, jinak bude funguvat pouze doma po připjení na domací síť)

vytvoření aplikace pomocí vývojového prostředí Eclipse. Zde v tomto skriptu je nutné změnit na vaši IP (HttpPost httppost = new HttpPost(“http://localhost/android.php”);) na Pi popřípadě na localhost  – jedná se o volaný PHP skript, který vrací data ve formátu JSON (nebudu zde rozvádět krok po kroku vývoj aplikací pro android zařízení) – do tohoto skriptu byl použit font led_real, který se musí přidat do assets do projektu v eclipse

 

najedeme do adresáře  na Raspberry Pi pro www a zde je potřeba vytvořit skript – android.php.

první skript android.php

vložíme tento skript a je nutné upravit na localhost (já mám veřejnou IP a běží mi to na doméně raspberry-pi.eu)

pak už stačí být připojen s telefonem k internetu a při každém spuštění aplikace se načte poslední datum aktualizace DB spolu s teplotami

android

android

Share Button