Feed on
Posts
Comments

Iš internet of things kategorijos. Kaip pasidaryti termometrą, kuris būtų pasiekiamas per internetą iš bet kur? Mano sprendimas:

kaip pagrindinę sistemą ir ‘smegenis’ naudoju Carambola2, o termosensorius yra DS1820 su 1-wire sąsaja.

Carambola2

Carambola2

 

DS1820

DS1820

Carambola2 OpenWRT firmware source failus parsisiunčiam iš Git repozitorijos:

git clone https://github.com/8devices/carambola2

atnaujinam feeds :

./scripts/feeds update -a

./scripts/feeds install -a

Atsikopijuojam carambola2 konfigą:

cp config_minimal .config

Tuomet pasileidžiam:

make menuconfig

Ten prisidedam PHP5, lighttpd palaikymą  (uždedam žvaigždutę ties tomis opcijomis ir išsaugom konfigą):

Languages
  PHP
    php5
    php5-fastcgi
    php5-mod-json 
    php5-mod-sockets

Network
  Web Servers/Proxies
    lighttpd
      lighttpd-mod-cgi
      lighttpd-mod-fastcgi
      lighttpd-mod-simple-vhost

 

Taip pat pažymim:

Kernel modules
  Web Servers/Proxies
    W1 Support
      kmod-w1-gpio-custom
      kmod-w1-slave-therm

Išsaugom konfigą ir padarom:

make defconfig

Buildinam image:

make -j4

Įkeliam į carambola2:

scp bin/ar71xx/openwrt-8devices-v2.9-ar71xx-generic-carambola2-squashfs-sysupgrade.bin root@192.168.1.1:/tmp

Įrašome firmware:

sysupgrade -n /tmp/openwrt-8devices-v2.9-ar71xx-generic-carambola2-squashfs-sysupgrade.bin

Susirašo firmware. Užsikrauna carambola2 ir su ps komanda matom uhttpd procesą:

1038 root 1504 S /usr/sbin/uhttpd -f -h /www -r Carambola2 -x /cgi-bin

/etc/php.ini faile doc_root turi būti tuščias, tam kad veiktų uhttpd home kintamasis.

doc_root = ""

/etc/config/uhttpd faile į main sekciją įdedam eilutę:

list interpreter ".php=/usr/bin/php-cgi"

/etc/config/firewall faile wan sekcija turi atrodyti šitaip:

config zone
option name wan
list network ‘wan’
list network ‘wan6’
option input ACCEPT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1

Perkraunam servisus:

/etc/init.d/uhttpd restart

/etc/init.d/firewall restart

Pasileidžiam kernelio modulį, naudosim 23 GPIO Carambola2 piną:

insmod w1-gpio-custom bus1=0,23,0

Sujungiam daviklį su Carambola2, taip pat naudojau 4.7K pullup rezistorių tarp DQ ir VDD daviklio pinų.

Carambola2 pin DS1820 pin
GPIO23 DQ
GND GND
+3V VDD

Jei viskas gerai, matom temperatūrą:

root@Carambola2:/# cat /sys/devices/w1_bus_master1/10-0008031e4862/w1_slave
2b 00 4b 46 ff ff 02 10 8a : crc=8a YES
2b 00 4b 46 ff ff 02 10 8a t=21625

Sudedam komandą, kuri filtruoja rezultatą į bash skriptą (reikia pasikeisti atitinkamai direktoriją), pasidedam į /www/temp.sh:

cat /sys/devices/w1_bus_master1/10-0008031e4862/w1_slave | tail -n 1 | awk 'NF>1{print $NF}'

Panaudojam paprastą PHP skriptą , pasidedam į /www/index.php:

<?php

if ($_POST['temp']==2) {
exec("/www/temp.sh", $output, $return);
echo "Temperatura: ";
print_r($output[0]);

}

?>

<form method="post">
<input type="hidden" name="temp" value="2">
<input type="hidden" name="initialized" value="1">
<input type="submit" name="submit" value="Atnaujinti"><br>
</form>

Dabar iš tinklo bus galima tikrinti temperatūros parodymus:

Naudota info iš interneto:

https://f.zz.de/posts/201411091405.1_wire_am_carambola2/

http://www.8devices.com/wiki/carambola:2:gettingstarted

http://www.8devices.com/wiki/carambola:1:demo_projects:led_from_web_page

https://wiki.openwrt.org/doc/uci/uhttpd

Leave a Reply

Popo.lt tinklaraščiai. Hosting powered by   serverių hostingas - Hostex
Skip to toolbar