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.
pondělí 15. prosince 2014
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:
sobota 8. února 2014
GPS přijímač pro fotoaparát Nikon
Většina zrcadlovek má konektor pro externí spoušť v případě Nikonu jsou zde piny +5V, GND, ostření (první poloha spouště), expozice (domáčknutí spouště) a vstup pro GPS data. Dle zdrojů se jedná o standardní NMEA protokol na 4800 Bd, stačilo tedy změnit výstupní rychlost GPS modulu RYN25AI založeném na modulu u-blox MAX-7. Speciální konektor byl vytěžen z drátové spouště zakoupené na e-bay, za méně než sto korun, pro mechanické uchycení do sáněk byla ještě zakoupena krytka BS-1. Plášt konektoru bylo nutné po straně opatrně naříznout a přepájet piny napájení a sériového portu.
Nastavení přenosové rychlosti se provádí odesláním následující sekvence, více podrobností je uvedeno v katalogovém listu GPS přijímače. Je vhodné použít například Hercules SETUP od HW serveru nebo Terminal by Br@y++. U prve zmíněného je nutné na kartě Serial zaškrtnou volbu HEX a příkaz odeslat. Druhý vyžaduje zadání bajtů v hexadecimálním formátu uvozené znakem $.
B5 62 06 41 09 00 01 01 30 81 00 00 00 00 FC FF 20
[1] http://pinoutsguide.com/DigitalCameras/nikon_d90_pinout.shtml
[2] http://www.reyax.com/Module/GPS/RYN25AI/RYN25AI.pdf
[3] http://www.petermillerphoto.com/nikongps/nikongps2.html
Nastavení přenosové rychlosti se provádí odesláním následující sekvence, více podrobností je uvedeno v katalogovém listu GPS přijímače. Je vhodné použít například Hercules SETUP od HW serveru nebo Terminal by Br@y++. U prve zmíněného je nutné na kartě Serial zaškrtnou volbu HEX a příkaz odeslat. Druhý vyžaduje zadání bajtů v hexadecimálním formátu uvozené znakem $.
B5 62 06 41 09 00 01 01 30 81 00 00 00 00 FC FF 20
Zapojení pinů konektoru je popsáno na [1].
Kabel je mechanicky upevněn proti vytržení pomocí namáčknutého prstence z velké kancelářské sponky. V rozích jsou vyvrtány díry pro světlovody, levá - zelená indikuje přítomnost napájení GPS modulu a červená blikáním aktuálnost určení polohy.
Přijímač je vložen do univerzální přístrojové krabičky, v pozadí je patrná přišroubovaná krytka pro sáňky na spodek krabičky. Vrut drží pohromadě oba díly krabičky a zároveň zamezuje otočení krabičky vůči sáňkám fotoaparátu.
Materiál krabičky je vzhledově dosti podobný materiálu těla fotoaparátu.
[1] http://pinoutsguide.com/DigitalCameras/nikon_d90_pinout.shtml
[2] http://www.reyax.com/Module/GPS/RYN25AI/RYN25AI.pdf
[3] http://www.petermillerphoto.com/nikongps/nikongps2.html
Přihlásit se k odběru:
Příspěvky (Atom)