/* TwoWire.h - TWI/I2C library for Arduino & Wiring Copyright (c) 2006 Nicholas Zambetti. All right reserved.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef TwoWire_h #define TwoWire_h
#include <inttypes.h> #include "Stream.h"
#define BUFFER_LENGTH 32
class TwoWire : public Stream { private: static uint8_t rxBuffer[]; static uint8_t rxBufferIndex; static uint8_t rxBufferLength;
Szerintem az átlag felhasználó sem. Ő nem fog Linux-ot letölteni, meg a hardvert parancssori utasításokkal működésre bírni, meg még külön az alkalmazásokat installálni.
Te is azt kérdezgeted hogy mit kell tudjon egy jó riasztó.
Pontosabban mi lehet benne olyan, amihez 10-20 óránál többet kell fordítani az arduino programozására. Ha mátrixokat kellene szorozni vagy Fourier transzformációt számolni akkor érteném, de ilyesmiről szó sincs. Van a hw, az más tészta, vannak a funkciók, amiket le kell programozni. És egyelőre nem láttam olyat, amire sok programozási idő kellene.
Ha lenne egy ilyen doksi, amiben le van írva hogy mi mindent kell tudjon egy jó riasztó, akkor baromi egyszerű lenne jó riasztót csinálni.
Szerintem nem a funkciókat titkolják, hanem a megvalósítást. Tehát az hogy mit tud egy riasztó az nyilvános, hogy azt hogy érték el, milyen sw és hw elemekkel az lehet az üzleti titok. Nem lenne értelmes úgy eladni egy riasztót, hogy a felhasználói kézikönyvben a funkciók negyedét említem, akkor minek dolgoztam a másik háromnegyedével.
Másrészt ha leírnak 200 funkciót, és azt tényleg mind tudnia kell egy jó riasztónak, attól nem lesz baromi egyszerű megcsinálni.
Kevered az IDE, az SDK, a framework és a driver/library fogalmát.
Nem biztos. Nekem mint usernek az IDE látszik, ebben írom a programot, ezzel ellenőrzöm és töltöm át a boardra, és ha valamit nem enged vagy hibaüzenet jön, akkor nekem mindegy melyik mögötte levő sw egységből eredt.
A wire.h-ban van definiálva az i2c láb. Az Arduino.cc-n sok ilyen hivatkozás hibás, erre a fórumokat meg kell nézni.
Javaslom, hogy első körben külön teszteld a két érzékelőt (soros kiolvasással elég), ha így megy, akkor lehet ezt az egyesített megoldást tesztelni. Nincs agyam most visszafejteni, gyors blikkre ennek így (legalábbis i2c viszonylatában) mennie kellene.
persze hogy tervezesi kerdes. es persze hogy van ra jo megoldas. csak van meg ilyen masik 200. meg kell oket talalni, meg kell talalni rajuk a megoldasokat, es utanna johet a programozas meg a forrasztas.
"I2C: A4 (SDA) and A5 (SCL). Support I2C (TWI) communication using the Wire library"
A TWI lábkiosztás gyárilag előírt.
Vigyázz: az utángyártott, egyéb paneleken a számozás nem feltétlen 0-val kezdődik. Ebayos Eth.shiledl sz..ptam egy napot mire rájöttem, hogy 1-től indította a számozást, nem 0-tól.
Egy kis segítséget kérnék. Adott egy RX-3302D4 vevőmodul (http://profitech.hu/pt_list_data.php?gid=9&tid=58), amit egy nano-val szeretnék összekötni. Simán össze lehet "drótozni" a vevőmodul kimeneteit a nano bemeneteivel, vagy kell valami illesztés?
> jo, akkor mondok egyet. belocsoljak sos vizzek a szirenat. ez rovidrezarja a szirenat taplalo bejovo 12V-ot, leesik a tap, es az arduino mar ujra is bootolta magat. hova bootolsz? elesitett vagy elesitetlen allapotba?
Második processzor + EEPROM + hardveres watchdog IC. (Például motorvezérlőben láttam ilyen megoldást. Az elektromos jármű processzora úgy tud resetelni, hogy közben a vezető észre sem veszi a működésben.)
Lehetséges megoldások:
1. State mentése, reset esetén legutóbbi state betöltése.
2. Reset = behatolás, ami riasztást eredményez.
3. Reset esetén a watchdog IC a tartalék processzornak adja a vezérlést.
stb.
Ez részben tervezési kérdés, részben telepítéskor eldönthető paraméter.
> nem értek egyet. a jó termék nem hw és sw. A jó termék az jó termék. A hw és sw az csak a megvalósítás.
Így van.
> Ahoz hogy a termék jó legyen, először ki kell találni. Kitalálni, az a nem semmi.
Bizony, az a legfontosabb, hogy egy igényt a lehető legjobban elégíts ki.
De!
A kitalálás után általában nagyon gyorsan lehet működőképes prototípust készíteni.
Ekkor nem szabad abba a hibába esni, hogy már készen is vagy. A munka java része ezután jön.
Egy piacra dobható termék elkészítésének ideje többszöröse a prototípusénak.
> Te is azt kérdezgeted hogy mit kell tudjon egy jó riasztó. Ha lenne egy ilyen doksi, amiben le van írva hogy mi mindent kell tudjon egy jó riasztó, akkor baromi egyszerű lenne jó riasztót csinálni.
> Viszont ezt a doksit nem programozók és nem is forrasztópákakezűek írják.
Hanem csapatok, amiben vannak általános tudású riasztósok, programozók, hardvermérnökök, UI tervezők, tesztelők, ex-betörők, stb.
> keress egy riasztó használati vagy installációs doksit, és megtudod kb a negyedét annak hogy mi mindent kell tudjon egy riasztó.
Ez egy jó tipp.
> a jo termék az, amiben mar baromi sok ilyen problema meg van oldva, ezert a hasznaloja nagyon ritkan fut bele egy ujabba.
jo, akkor mondok egyet. belocsoljak sos vizzek a szirenat. ez rovidrezarja a szirenat taplalo bejovo 12V-ot, leesik a tap, es az arduino mar ujra is bootolta magat. hova bootolsz? elesitett vagy elesitetlen allapotba?
nem értek egyet. a jó termék nem hw és sw. A jó termék az jó termék. A hw és sw az csak a megvalósítás. Ahoz hogy a termék jó legyen, először ki kell találni. Kitalálni, az a nem semmi. Te is azt kérdezgeted hogy mit kell tudjon egy jó riasztó. Ha lenne egy ilyen doksi, amiben le van írva hogy mi mindent kell tudjon egy jó riasztó, akkor baromi egyszerű lenne jó riasztót csinálni. Viszont ezt a doksit nem programozók és nem is forrasztópákakezűek írják.
keress egy riasztó használati vagy installációs doksit, és megtudod kb a negyedét annak hogy mi mindent kell tudjon egy riasztó.
ha belefutsz egy problémába, akkor megoldod. mindenki így csinalja. a jo termék az, amiben mar baromi sok ilyen problema meg van oldva, ezert a hasznaloja nagyon ritkan fut bele egy ujabba.
egy riasztonal a problemak jelentos resze ket kategoriaba esik bele. vagy hamis riasztast okoz, amire mindenki megszokja hogy a hulye szomszednak allandoan szirenazik a haza, vagy azt okozza hogy nem riaszt amikor kellene. utobbi fel sem tunik, mert nem szoktad tesztelgetni.
A riasztónál az a cél, hogy megszólaljon a sziréna ha behatolás történik. A telefonos értesítés egy másik szál. Meg a ködgyertya, nagyerejű ultrahang vagy egyéb a betörőt akadályozó ötletek is.
A sziréna támadható, burkolható ha tudják hol van, de ez nyilván kifigyelhető. Lehet a szirénát is figyelni, közelítéskor megszólaltatni, saját akkuról járatni és masszív mechanikai védelemmel ellátni, amit idő leflexelni róla. Ez elegendő a környezet figyelmeztetésére, hogy azután mi történik, az már nem programozási vagy hw forrasztási kérdés.
Ha valaki fejleszt arduinoval egy riasztót, azt senki nem fújja fejből, egyedi és ismeretlen lesz a betörő számára még ha a világon a legprofibb akkor is.
Egy ilyen riasztónál persze az is kérdés, hogy mi a cél?
Cél-e a profi betörőket is elhárítani, akik fejből fújják az összes riasztórendszert és kiiktatási módszert? Akik már hetekkel előtte kinézték a házat?
Vagy csak az a cél, hogy az alkalmi tolvajt elriassza már a gondolat is, hogy itt van egy aktív riasztó, ami valószínűleg megszólal?
Van olyan riasztó, ami "csak" szirénázik, általában ha hoznak egy vizes vödröt (vagy pur habot) és egy szép nagy kalapácsot, akkor másodpercek alatt el tudják némítani a szirénát. A szomszédok meg úgyis "letojják" a lármát, örülnek is, hogy ilyen gyorsan elhallgatott.
Na persze ha be van kötve valahová, az más. Viszont bekötött riasztóból csak ismert márkát fog támogatni a biztonsági szolgálat.
Jól tudod, valóban sokkal bonyolultabb egy termék végfelhasználói árát kiszámolni... feltéve, ha nagy játékos vagy a piacon.
Ha kisszériásan gyártod, akkor a nagy hiba nem az, hogy nem jól számolsz, hanem az, hogy alulbecsülöd. Pl. 2000 Ft-ért meg tudsz csinálni valamit, gondolsz egy nagyot, hogy eladod 2500 Ft-ért és "gazdag leszel". Na, itt üt be a realitás :-) Ezért a 4-es szorzó egyfajta ökölszabály, amit javasolnak.
Nyilván más a helyzet, ha valamit 100 ezer vagy 1 millió példányban akarsz legyártatni...
fogsz tudni jo riasztot programozni, csak megsem lesz egy jo riasztod. nem muszaj arra gondolni hogy a rosszember zarja rovidre a cuccot. siman eleg ha mondjuk beazik, es soha tobbet nem lesz riasztas azon a bemeneten csak neked soha fel sem tunik.
Pont a napokban szívtam egy régi PIC-es cuccossal. Nagyságrendileg 4 havonta resetelte magát. Amolyan megfoghatatlan kategória. Két napom ment rá mire rájöttem, hogy mi is csordul túl, és mitől bukik ki a watchdog timer, ami aztán reseteli az egészet.
Baromi alattomosoak tudnak lenni az ilyen jellegű hibák (túlcsordulások, memóriaszivárgások és társaik). És sokszor megfoghatatlan, nagyon nehéz megtalálni őket. Mert azt látod, hogy fél évig megy rendesen, majd egyszercsak ránézel, és újraindult az egész. Resetelésnél egy rakás regiszter, számlálók, stb értékek törlődtek, így nem tudsz visszakövetkeztetni mi volt a resetelés előtti állapot. Most is úgy tudtam rájönni, hogy időbélyeggel eepromba mentettem az értékeket, de így is komoly bányászatot igényelt az ügy.
Igazi szívás kategória. El se tudom/merem képzelni ezt egy mai komoly procinál, hogyan vezényelik le mélyebb szinteken. mert ott akkroa baki lehetőség van, ami beláthatatlan. Tudom, erre van egy rakás tesztmérnök jó nagy fizetéssel.
// function that executes whenever data is requested by master // this function is registered as an event, see setup() void requestEvent() { Wire.println("DATA, TIME, "); // respond with message of 6 bytes // as expected by master }
Összeállítottam a Pro Minire alapozott, Max6675 hőmérős, 2 relés termosztátot ami I2C kimenetén csatlakozik a meglevő I2C buszra.
Azt olvassa com1 porton a pc, a program vb6-ban lett megírva.
Az Arduino analóg 4. lába az SDA, 5. lába az SCL, címzése &H50, library wire.h, a kód:
/* Single_Temp.pde - Example using the MAX6675 Library. Created by Ryan McLaughlin <ryanjmclaughlin@gmail.com>
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. http://creativecommons.org/licenses/by-sa/3.0/ */ #define HIDEGEBB 6 // relay1 #define MELEGEBB 7 // relay2 #define MOTORFUTASIDO 1000 #define CIKLUSIDOMP 30 #include <MAX6675.h> #include <Wire.h> int x = 0; int row = 0; int LED1 = 13; // Status LED Pin int CS = 4; // CS pin on MAX6675 int SO = 3; // SO pin of MAX6675 int SCLK = 5; // SCLK pin of MAX6675 int units = 1; // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F) float temperature = 0.0; // Temperature output variable float hofok10 = 0.0;
// Initialize the MAX6675 Library for our chip MAX6675 temp(CS,SO,SCLK,units);
// Setup Serial output and LED Pin // MAX6675 Library already sets pin modes for MAX6675 chip! void setup() { Wire.begin(4); // join i2c bus with address #4 Wire.onReceive(receiveEvent); // register event Serial.begin(9600); Serial.println("CLEARDATA"); Serial.println("LABEL, TIME, temperature"); pinMode(LED1, OUTPUT); pinMode(HIDEGEBB, OUTPUT); pinMode(MELEGEBB, OUTPUT); }
void loop() { // Read the temp from the MAX6675 temperature = temp.read_temp();
if(temperature < 0) { // If there is an error with the TC, temperature will be < 0 Serial.print("Thermocouple Error on CS"); Serial.println( temperature ); digitalWrite(LED1, HIGH); } else { //Serial.print("Current Temperature: "); Serial.println(temperature ); digitalWrite(LED1, LOW); Serial.print("DATA, TIME,"); row++; x++; } // Wait one second before reading again delay(1000);
Rendben. Engem ebben a témában a programozási igény érdekel. Mi olyat tud a gyári riasztó, amihez sok órányi programozás kell az arduinon?
A szenzor kiiktatásról riasztós tapasztalat nélkül: hogyan? Pl. egy falon van egy 180 fokban látó passzív infra, nem lehet megközelíteni anélkül, hogy megszakítsa a kört. Hogyan lehet ezt könnyen kiiktatni? Az alap, hogy a riasztóközponthoz nem lehet hozzáférni, hogy ott egy dróttal helyettesítse a kört, ami így soha nem fog megszakadni.
Vagy ajtónyitást érzékelő mikrokapcsoló. Hogyan fér hozzá bármihez is az ajtó nyitása nélkül, amikor viszont a kapcsoló szakítja a kört? Belülről igen, de ha bejut, akkor a passzív infra fog jelezni.
Az egyéb villámvédelem, nagyfesz, érintés, zavarvédelem, életvédelem stb. téma az egy másik kérdés.
>A szenzorok nem sorba vannak kötve egy körön, és csak szakadást vizsgálunk?
csak erre az egyre: ha igy lenne akkor baromi egyszeru lenne a szenzort kiiktatni. egy kulon fejezet a szabotazsvedelem.
egy riasztot vagy barmi mas termeket megtervezni pont azzal kezdodik, hogy ossze kell szedni hogy mit kell tudjon. es ez a melonak egy igen komoly resze, raadasul nem is csak szakertelmet, hanem tapasztalatot igenyel. riasztot tervezni nem programozo tapasztalat, nem villamosmernok (forrasztas) tapasztalat, hanem riasztos tapasztalat szukseges.