Tentokrát přišel od Číňana I2C tlakoměr BMP180 od společnosti Bosch. U tohoto senzoru není měření tak jednoduché jako u popisovaného teplotního senzoru. Tlak je závislý na spustě veličin, nejdůležitější je teplota, čidlo tedy musí nejprve změřit teplotu a poté výslednou teplotu započítat při výpočtu aktuálního tlaku.
neděle 11. ledna 2015
pondělí 15. prosince 2014
WiFi modulek za 90 Kč
Náhodou jsem na eBay narazil na malý ale šikovný WiFi modulek Wi07c. Dokáže pracovat v režimech AP, jako klient a nebo obojí najednou. Po rozbalení stačilo připojit napájení, Rx a Tx a vývod CH_PD na +3,3 V.
neděle 14. prosince 2014
Další zařízení na I2C (teploměr + bezdrátová EEPROM + GPIO Expander)
K dnešnímu hraní stačilo pomocí propojky uzemnit reset procesoru STM8 na M24LR Discovery destičce.
neděle 7. prosince 2014
OpenWRT a akcelerometr + kompas + gyro
Po zprovoznění I2C sběrnice si k ní můžeme připojit například obvody LSM303DLHC (akcelerometr + kompas) a nebo gyroskop L3GD20, vše skvěle zabaleno na STM32F3 Discovery Boardu. Na Discovery Boardu je nutné vymazat paměť MCU aby nám do komunikace "nekecal" a propojit následující vývody: PB6 na PA5, PB7 na PA7 a v neposlední řade zapojit PA6, tedy pin SA0 gyra, na logickou jedničku (výběr I2C módu).
středa 3. prosince 2014
OpenWRT a teploměr
I na posledním routeru jsem přešel na poslední verzi OpenWRT, tedy na 14.07 branch (Barrier Breaker).
Vše proběhlo bez problémů až na teploměr, ten je připojen prostřednictvím převodníku USB-RS232 s řadičem od FTDI. Digitemp používá 6-ti bitovou komunikaci, patne pro emulaci 1-wire prostřednictvím sériové linky. Bylo tedy nutné maličko upravit ovladač, jinak se v logu zobrazují následující hlášky a teploměr vůbec nefunguje:
ftdi_sio ttyUSB0: requested CSIZE setting not supported
Stačí provést úpravy v souboru /build_dir/target-mipsel_mips32_uClibc-0.9.33.2/linux-brcm47xx_generic/linux-3.10.49/drivers/usb/serial/ftdi_sio.c
Jedná se o sprosté zakomentování příslušné kontroly:
Řádek 2194:
A doplnění volby do switche od řádku 2240
switch (cflag & CSIZE) {
Další možností je použití patche:
http://patchwork.ozlabs.org/patch/306740/
Pro Asus 500gP je možné rovnou stahovat balíček z ulož.to.
Vše proběhlo bez problémů až na teploměr, ten je připojen prostřednictvím převodníku USB-RS232 s řadičem od FTDI. Digitemp používá 6-ti bitovou komunikaci, patne pro emulaci 1-wire prostřednictvím sériové linky. Bylo tedy nutné maličko upravit ovladač, jinak se v logu zobrazují následující hlášky a teploměr vůbec nefunguje:
ftdi_sio ttyUSB0: requested CSIZE setting not supported
Stačí provést úpravy v souboru /build_dir/target-mipsel_mips32_uClibc-0.9.33.2/linux-brcm47xx_generic/linux-3.10.49/drivers/usb/serial/ftdi_sio.c
Jedná se o sprosté zakomentování příslušné kontroly:
Řádek 2194:
/*if (C_CSIZE(tty) == CS6) { dev_warn(ddev, "requested CSIZE setting not supported\n"); termios->c_cflag &= ~CSIZE; if (old_termios) termios->c_cflag |= old_termios->c_cflag & CSIZE; else termios->c_cflag |= CS8; }*/ cflag = termios->c_cflag; if (!old_termios) goto no_skip;
A doplnění volby do switche od řádku 2240
switch (cflag & CSIZE) {
case CS5: dev_dbg(ddev, "Setting CS5 quirk\n"); break; case CS6: dev_dbg(ddev, "Setting CS6\n"); break; case CS7: urb_value |= 7; dev_dbg(ddev, "Setting CS7\n"); break;
Další možností je použití patche:
http://patchwork.ozlabs.org/patch/306740/
Pro Asus 500gP je možné rovnou stahovat balíček z ulož.to.
pátek 14. listopadu 2014
UCI OpenWRT
Pro čtení a zápis parametrů konfiguračních souborů OpenWRT je možné použít UCI, viz několik příkladů:
čtvrtek 13. listopadu 2014
Pěkná jména pro rozšíření Majordomo Turris
Nelíbí se Vám v zobrazení Majordomo pouze MAC adresy? Tento skript vyčte z nastavení DHCP jména příslušející každé MAC a doplní je do souboru. Dokonce ani nevadí, že je do souboru připíše vícekrát, při aktualizace se duplicity odstraní.
sobota 8. listopadu 2014
Zprovoznění SPI, I2C a 1-wire na OpenWRT
Jak zprovoznit SPI na zařízení s OpenWRT, když nemá volný SPI port? Stačí jen najít několik volných GPIO pinů, nainstalovat pár balíčků a už to funguje.
pátek 7. listopadu 2014
Sledování výpadků připojení
#!/bin/sh
# Programátor řekl: nechť je toto voláno periodicky,
nejlépe každou minutu
# při každém zavolání dejde k opingnutí strejdy
googla,
# pokud se nedopingne, tak pěkně zalogovat čas první
detekce výpadku
# a pěkně pokračujeme dále. Následně při úspěšném
pokusu opingnutí strejdy googla
# se nám načte čas výpadku (ze souboru v /tmp) a spolu
s časem náběhu se odešle na server
# vyzobneme počet úspěšných pingů (5 pingů, měly by se
podařit alesoň dva)
tmpSoubor='/tmp/vypadek.txt'
testServer="google.com"
#testServer="google.comn"
ping $testServer -c 15 -q > /tmp/vysledek.txt 2>&1
Ping=`cat
/tmp/vysledek.txt | sed -n -e 's/.*packets transmitted, \([0-9]*\).*/\1/p'`
rm /tmp/vysledek.txt
#echo "\"$Ping\""
minPing=2
if [[ -z "$Ping" ]]; then
echo "Patrně nenalezen DNS záznam pro $testServer!"
else
if [ $Ping -lt $minPing ]; then
# sem to spadne při
detekci výpadku
if [ ! -f $tmpSoubor ]; then
#sem to vleze jen při první rozpoznání výpadku
echo "Detekován
výpadek připojení!"
date +"%Y-%m-%d%%20%H:%M:%S" > $tmpSoubor
else
echo "Připojení
nám nefunguje(již zalogováno)!"
fi
else
echo "Připojení funguje!"
#když nám funguje připojení a máme záznam o výpadku, tak ho naprášíme
if [ -f $tmpSoubor ]; then
CasVypadku=`cat
$tmpSoubor`
rm $tmpSoubor
dalsiCast='&VypadekKonec='
treticast=`date
+"%Y-%m-%d%%20%H:%M:%S"`
Server="http://www.domena.cz/logovani/VlozeniPingDoDB.php?VypadekZacatek="
URL=$Server$CasVypadku$dalsiCast$treticast
echo $URL
wget -O /dev/null -q "$URL"
fi
fi
fi
čtvrtek 9. října 2014
DVB-T rekordér pro Turris
Nahrávač se skládá z několika sh a php skriptů. Nahrávač předpokládám zprovozněné streamování například pomocí MumuDVB, jak bylo popsáno v předchozím příspěvku. Každý program (TV kanál) má vyhrazen vlastní TCP port. Uživatelé tedy mohou zároveň sledovat všechny kanály jednoho multiplexu a ještě každý kanál nahrávat. Díky třem DVB-T kartám máme streamované všechny tři multiplexy. Pro zpracování uživatelem zadaných dat je soubor new_record.php. Ošetří, alespoň doufám, vstupní hodnoty a zavolá další soubor.
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
setlocale(LC_ALL, 'czech');
if ( isset($_REQUEST["DOBA_NAHRAVANI_MIN"])
&& isset($_REQUEST["ZACATEK_NAHRAVANI"])
&& isset($_REQUEST["NAZEV_SOUBORU"])
&& isset($_REQUEST["CISLO_KANALU"]))
{
$DOBA_NAHRAVANI_MIN = intval($_REQUEST["DOBA_NAHRAVANI_MIN"]);
$ZACATEK_NAHRAVANI = date("H:i d.m.y", strtotime(urldecode($_REQUEST["ZACATEK_NAHRAVANI"]))); // 11:35 01.10.14
$URL = htmlspecialchars(urldecode($_REQUEST["NAZEV_SOUBORU"]));
/*$URL = rtrim($URL,
"_.");
$URL =
str_replace(" ", "_", $URL);*/
echo "<p>\$URL=\"$URL\"</p>\n";
$NAZEV_SOUBORU = preg_replace("/[^a-zA-Z0-9áäčďéěëíµňôóöŕřšťúůüýžÁÄČĎÉĚËÍĄŇÓÖÔŘŔŠŤÚŮÜÝŽ
_-]/", "", $URL);
$CISLO_KANALU = intval($_REQUEST["CISLO_KANALU"]);
sobota 23. srpna 2014
Build vlastního balíčku OpenWRT
Balíčky hnízdí v package/ a dále následuje další dělení ale to je z pohledu buildu nepodstatné.
Například v package/utils/hello/src/ si vytvoříme klasický hello world balíček.
Do souboru hello.cpp vložíme toto:
Například v package/utils/hello/src/ si vytvoříme klasický hello world balíček.
Do souboru hello.cpp vložíme toto:
#include <iostream>
using namespace std;
int main()
{
cout << "Funguje to, mame prvni balicek pro OpenWRT!" << endl;
{
cout << "Funguje to, mame prvni balicek pro OpenWRT!" << endl;
return 0;
}
}
neděle 6. července 2014
DVB-T karty pro Turris
MSI DIGIVOX Micro HD (RTL2832U + FCI2580)
Potřebné moduly:
insmod dvb-core.ko
insmod dvb-pll.ko
insmod rtl2830.ko
insmod rtl2832.ko
insmod qt1010.ko
insmod mt2060.ko
insmod mxl5005s.ko
insmod fc0012.ko
insmod fc0013.ko
insmod e4000.ko
insmod fc2580.ko
insmod tua9001.ko
insmod r820t.ko
insmod rc-core.ko
insmod dvb-usb.ko
insmod dvb_usb_v2.ko
insmod rtl2830.ko
insmod rtl2832.ko
insmod dvb-usb-rtl28xxu.ko
Nepotřebuje fw ve /lib/firmware.
Bus 001 Device 010: ID 1d19:1102 Dexatek Technology Ltd. DK mini DVB-T Dongle
[41340.837991] usb 1-1.1: new high-speed USB device number 5 using fsl-ehci
[41340.971314] usb 1-1.1: dvb_usb_v2: found a 'Dexatek DK mini DVB-T Dongle' in warm state
[41341.034039] usb 1-1.1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[41341.043649] DVB: registering new adapter (Dexatek DK mini DVB-T Dongle)
[41341.054517] usb 1-1.1: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))...
[41341.070122] i2c i2c-2: fc2580: FCI FC2580 successfully identified
[41341.087003] Registered IR keymap rc-empty
[41341.091739] input: Dexatek DK mini DVB-T Dongle as /devices/soc.0/ffe22000.usb/fsl-ehci.0/usb1/1-1/1-1.1/rc/rc0/input0
[41341.102574] rc0: Dexatek DK mini DVB-T Dongle as /devices/soc.0/ffe22000.usb/fsl-ehci.0/usb1/1-1/1-1.1/rc/rc0
[41341.112547] usb 1-1.1: dvb_usb_v2: schedule remote query interval to 400 msecs
[41341.131248] usb 1-1.1: dvb_usb_v2: 'Dexatek DK mini DVB-T Dongle' successfully initialized and connected Potřebné moduly:
insmod dvb-core.ko
insmod dvb-pll.ko
insmod rtl2830.ko
insmod rtl2832.ko
insmod qt1010.ko
insmod mt2060.ko
insmod mxl5005s.ko
insmod fc0012.ko
insmod fc0013.ko
insmod e4000.ko
insmod fc2580.ko
insmod tua9001.ko
insmod r820t.ko
insmod rc-core.ko
insmod dvb-usb.ko
insmod dvb_usb_v2.ko
insmod rtl2830.ko
insmod rtl2832.ko
insmod dvb-usb-rtl28xxu.ko
Nepotřebuje fw ve /lib/firmware.
středa 18. června 2014
Build Oscamu pro OpenWRT
Stačí stáhnout SDK pro používanou platformu (OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2).
Dále ještě potřebujeme zdrojáky Oscamu, které získáme takto:
svn checkout http://www.streamboard.tv/svn/oscam/trunk oscam-svn
nebo určitou verzi Oscamu
svn checkout http://www.streamboard.tv/svn/oscam/tags/1.10 oscam-1.10
přejdeme do složky zdrojáků Oscamu
cd oscam-svn
a spustíme kompilaci:
make CROSS=mips-openwrt-linux- CROSS_DIR=../OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin/ STAGING_DIR=../OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/
a výsledek máme ve /oscam-svn/Distribution.
Edit: pro aktuální verzi Turríska stačí následující:
make CROSS=powerpc-openwrt-linux- CROSS_DIR=../openwrt/staging_dir/toolchain-powerpc_8540_gcc-4.8-linaro_uClibc-0.9.33.2/bin/ STAGING_DIR=../openwrt/staging_dir/
Odkaz na překompilovanou verzi ze svn přikládám. Stačí jen přejmenovat na oscam, nakopírovat do /bin a konfiguráky si umístit do /etc/oscam a do /etc/init.d/ přidat soubor oscam s násleujícím obsahem:
#!/bin/sh /etc/rc.common
# JFíla
START=90
start()
{
oscam -c /etc/oscam &
}
přidat práva: chmod +x /etc/init.d/oscam
chmod +x /bin/oscam
a povolit spouštění oscamu po startu: /etc/init.d/oscam enable
a nastartovat: /etc/init.d/oscam start
oscam-1.20-unstable_svn11198-powerpc-openwrt-linux-uclibcspe
http://uloz.to/xLr2D8JA/oscam-1-20-unstable-svn11198-powerpc-openwrt-linux-uclibcspe
https://forum.openwrt.org/viewtopic.php?pid=160086#p160086
http://www.streamboard.tv/oscam/wiki/GettingOscam
https://forum.openwrt.org/viewtopic.php?id=42695
Dále ještě potřebujeme zdrojáky Oscamu, které získáme takto:
svn checkout http://www.streamboard.tv/svn/oscam/trunk oscam-svn
nebo určitou verzi Oscamu
svn checkout http://www.streamboard.tv/svn/oscam/tags/1.10 oscam-1.10
přejdeme do složky zdrojáků Oscamu
cd oscam-svn
a spustíme kompilaci:
make CROSS=mips-openwrt-linux- CROSS_DIR=../OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin/ STAGING_DIR=../OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/
a výsledek máme ve /oscam-svn/Distribution.
Edit: pro aktuální verzi Turríska stačí následující:
make CROSS=powerpc-openwrt-linux- CROSS_DIR=../openwrt/staging_dir/toolchain-powerpc_8540_gcc-4.8-linaro_uClibc-0.9.33.2/bin/ STAGING_DIR=../openwrt/staging_dir/
Odkaz na překompilovanou verzi ze svn přikládám. Stačí jen přejmenovat na oscam, nakopírovat do /bin a konfiguráky si umístit do /etc/oscam a do /etc/init.d/ přidat soubor oscam s násleujícím obsahem:
#!/bin/sh /etc/rc.common
# JFíla
START=90
start()
{
oscam -c /etc/oscam &
}
přidat práva: chmod +x /etc/init.d/oscam
chmod +x /bin/oscam
a povolit spouštění oscamu po startu: /etc/init.d/oscam enable
a nastartovat: /etc/init.d/oscam start
oscam-1.20-unstable_svn11198-powerpc-openwrt-linux-uclibcspe
http://uloz.to/xLr2D8JA/oscam-1-20-unstable-svn11198-powerpc-openwrt-linux-uclibcspe
https://forum.openwrt.org/viewtopic.php?pid=160086#p160086
http://www.streamboard.tv/oscam/wiki/GettingOscam
https://forum.openwrt.org/viewtopic.php?id=42695
čtvrtek 29. května 2014
Webserver pro Turris
Jako mnoho dalších nadšených uživatelů jsem se nedávno stal šťastným majitelem routeru Turris. Starý router jsem používal jako NAS i jako WEB server, obdobně jsem to udělal i s Turrisem. Výhodou Turrisu je ohromný výpočetní výkon i velká paměť, není tedy nutné se příliš omezovat a je možné instalovat i aplikace používané na serverech, jako třeba Apache.
Takže k návodu:
Takže k návodu:
Přihlásit se k odběru:
Příspěvky (Atom)


