Hirdetés

2024. április 28., vasárnap

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-03-11 00:46:52

LOGOUT.hu

Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.

Összefoglaló kinyitása ▼

Hozzászólások

(#2151) tvamos válasza dave0825 (#2150) üzenetére


tvamos
nagyúr

Quad OPAMP kell neked, mondjuk LM324, vagy TL074. Én ez utóbbival épitettem 4 cstornás fényorgonát.
Én azt javasolnám, épits elsőre inkább valami ilyesmit: [link]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2152) dave0825 válasza tvamos (#2151) üzenetére


dave0825
őstag

Már mindegy, már vettem, CD4051 nem volt, helyette HCF4051BE-t kaptam, de még otthon úgy néztem, hogy jó ez is helyette. Amit zka67 javasolt kapcsolás, az szerinted miért nem jó, mármint miért mást ajánlasz helyette?

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#2153) zka67 válasza dave0825 (#2150) üzenetére


zka67
őstag

Szia, LM324 3 db.

A 4051-es IC-kkel meg már csak elboldogulsz egyedül is :)

(#2154) tvamos válasza zka67 (#2153) üzenetére


tvamos
nagyúr

A 4051-nek 8 bemenete van, nem kell kettő. (Még a közös emitteres kapcsolással is baj van, akkor ez...)

Bemenetek: Y0, Y1... Y7
Bemenet választó: S0, S1, S2
[link]

[ Szerkesztve ]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2155) Pulsar


Pulsar
veterán

Próbált már valaki egy ilyennel DS1820 jelét át vinni?

(#2156) Gergosz2 válasza Pulsar (#2155) üzenetére


Gergosz2
veterán

igen, sikerült is. De tegyél rá egy antennát, mert anélkül nekem kb max 20 cm-ről sikerült kommunikálnom. Meg az adónál sem mindegy , hogy mekkora feszt használsz.

Szerk:
De pont ezt vetted meg? Mert ez csak az adó.

[ Szerkesztve ]

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#2157) Pulsar válasza Gergosz2 (#2156) üzenetére


Pulsar
veterán

Nem, még nem rendeltem.
Melyiket érdemes? :R És akkor ez duplex?
Köszönöm az eddigi válaszodat is :R

(#2158) zka67 válasza tvamos (#2154) üzenetére


zka67
őstag

Szia, 10 csatornához kell a kettő...

(#2159) softguner válasza Pulsar (#2157) üzenetére


softguner
csendes tag

Nem ez csak simplex egy adó egy vevő, egyik csak ad a másik csak vesz. Duplex kommunkációra ott az Nordic-os NRF24L01. Az igaz 2,4 Ghz-es és nem árt neki ha a két egység között szabad rálátás van, de ha van szabad rálátás, akkor akár 800m-t is áthúz.

(#2160) junhum


junhum
tag

Sziasztok!

Buék!

Valaki foglalkozott már itt az nRF24L01 adóval?
Nekem 6 db adó lenne nano+nRF24L01 ds18B20 és/vagy dht22 szenzor és egy rPi vevő ami megjelenítené az adatokat.

Most kezdek majd el vele foglalkozni. Valaki találkozott már hasonlóval? Esetleg épített már?

Your Workout Is My Warm-Up so Shut The Fuck Up And Train

(#2161) Gergosz2 válasza Pulsar (#2157) üzenetére


Gergosz2
veterán

nem, ez nem az. Ha oda vissza akarsz kommunikálni, akkor mindegyik odalra kell venned egy adót és vevőt is. Ennek az előnye, hogy pofon egyszerű, egy jó antennával és kellő táppal akár 1 km-re is lehet vele kommunikálni. Van hozzá a VritualWire, meg a Manchester library. Mindegyikkel próbáltam és működik. Radio Head library-val is megy, de szerintem az nem jó , mert túl nagy kódot generál.

Érdemes még megnézned a nrf24l01+-t , ami transciever, szóval oda vissza tudsz vele kommunikálni majd. Ő SPI-on kommunikál az MCU-val. Maga a programozása semmivel sem bonyolultabb. Van hozzá az RF24, RF4 Network és MIRF library. Mindegyikkel próbáltam és mennek. Személy szerint a MIRF-et használom, hogy miért azt nem tudom megmondani, talán azért mert előbb próbáltam ezzel.

(#2160) junhum

Igen , lsd feljebb. :)

[ Szerkesztve ]

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#2162) Pulsar válasza Gergosz2 (#2161) üzenetére


Pulsar
veterán

Igazság az, hogy Pi-vel akartam volna össze hozni, és ugye ott egy GPIO portra kell kötni. amikor meg hívja a DS1820-at, akkor adja vissza az értékeket. Erre kellett volna egy duplex kommunikáció.
De lehet újra gondolom egy arduinoval, ahol (egy másik fórumban ötletként kaptam) egy Arduino Nano triggereli a szenzort, és a kapott értéket küldi el. :)

(#2163) Saua


Saua
tag

Sziasztok,

Egy Samsung TV távirányítót szeretnék helyettesíteni arduinóval. Innen letöltöttem az IRLib könyvtárat, és az IRrecord példát szeretném kipróbálni.
A TV távirányító jelét veszi is, de nem világos, hogy az adó LED -et hova kell kötni. Kell módosítani a kódot?

Ez a példaprogram:

/* Example program for from IRLib – an Arduino library for infrared encoding and decoding
* Version 1.5 June 2014
* Copyright 2014 by Chris Young http://cyborg5.com
* Based on original example sketch for IRremote library
* Version 0.11 September, 2009
* Copyright 2009 Ken Shirriff
* http://www.righto.com/
*/
/*
* IRrecord: record and play back IR signals
* An IR detector/demodulator must be connected to the input RECV_PIN.
* An IR LED must be connected to the appropriate pin.(See IRLibTimer.h) for your
* machine's timers and erupts.
* Record a value by pointing your remote at the device then send any character
* from the serial monitor to send the recorded value.
* Also demonstrates how to use toggle bits which must be controlled outside
* the library routines.
* The logic is:
* If an IR code is received, record it.
* If a serial character is received, send the IR code.
*/

#include <IRLib.h>

int RECV_PIN = 11;

IRrecv My_Receiver(RECV_PIN);
IRdecode My_Decoder;
IRsend My_Sender;
/*
* Because this version of the library separated the receiver from the decoder,
* technically you would not need to "store" the code outside the decoder object
* for this overly simple example. All of the details would remain in the object.
* However we are going to go ahead and store them just to show you how.
*/
// Storage for the recorded code
IRTYPES codeType; // The type of code
unsigned long codeValue; // The data bits if type is not raw
int codeBits; // The length of the code in bits

// These values are only stored if it's an unknown type and we are going to use
// raw codes to resend the information.
unsigned int rawCodes[RAWBUF]; // The durations if raw
int rawCount; //The number of interval samples

bool GotOne, GotNew;

void setup()
{
GotOne=false; GotNew=false;
codeType=UNKNOWN;
codeValue=0;
Serial.begin(9600);
delay(2000);while(!Serial);//delay for Leonardo
Serial.println(F("Send a code from your remote and we will record it."));
Serial.println(F("Type any character and press enter. We will send the recorded code."));
My_Receiver.enableIRIn(); // Start the receiver
}

// Stores the code for later playback
void storeCode(void) {
GotNew=true;
codeType = My_Decoder.decode_type;
if (codeType == UNKNOWN) {
Serial.println("Received unknown code, saving as raw");
// To store raw codes:
// Drop first value (gap)
// As of v1.3 of IRLib global values are already in microseconds rather than ticks
// They have also been adjusted for overreporting/underreporting of marks and spaces
rawCount = My_Decoder.rawlen-1;
for (int i = 1; i <=rawCount; i++) {
rawCodes[i - 1] = My_Decoder.rawbuf[i];
};
My_Decoder.DumpResults();
codeType=UNKNOWN;
}
else {
Serial.print(F("Received "));
Serial.print(Pnames(codeType));
if (My_Decoder.value == REPEAT) {
// Don't record a NEC repeat value as that's useless.
Serial.println(F("repeat; ignoring."));
}
else {
codeValue = My_Decoder.value;
codeBits = My_Decoder.bits;
}
Serial.print(F(" Value:0x"));
Serial.println(My_Decoder.value, HEX);
}
}
void sendCode(int repeat) {
if(codeType== UNKNOWN) {
// Assume 38 KHz
My_Sender.IRsendRaw::send(rawCodes,rawCount,38);
Serial.println(F("Sent raw"));
return;
}
if( !GotNew ) {//We've already sent this so handle toggle bits
if (codeType == RC5) {
codeValue ^= 0x0800;
}
else if (codeType == RC6) {
codeValue ^= 0x10000;
}
}
GotNew=false;
My_Sender.send(codeType,codeValue,codeBits);
Serial.print(F("Sent "));
Serial.print(Pnames(codeType));
Serial.print(F(" Value:0x"));
Serial.println(codeValue, HEX);
}

void loop() {
if (Serial.read() != -1) {
if(GotOne) {
sendCode(0);
My_Receiver.enableIRIn(); // Re-enable receiver
}
}
else if (My_Receiver.GetResults(&My_Decoder)) {
My_Decoder.decode();
GotOne=true;
storeCode();
delay(1000);
My_Receiver.resume();
}
}

[ Szerkesztve ]

(#2164) tvamos válasza Saua (#2163) üzenetére


tvamos
nagyúr

Próbáld itt megnézni:
* An IR LED must be connected to the appropriate pin.(See IRLibTimer.h) for your machine's timers and erupts.

Ha jól látom ott:
/* Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc */
#else
//#define IR_SEND_TIMER1 9
#define IR_SEND_TIMER2 3
#endif //end of setting IR_SEND_TIMER based on hardware detection

[ Szerkesztve ]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2165) Saua válasza tvamos (#2164) üzenetére


Saua
tag

A wordpaddal megnyitottam, de csak egy nagy betűhalmazt látok. Nem kellene definiálva legyen, mint ahogy meg van adva, hogy az infra vevő a 11-es lábra van kötve ....int RECV_PIN = 11 ?

itt úgy értem, hogy a 3-as lábra kell kötni (Arduino UNO). Rá is kötöttem, a telefon kamerájával nézem....de nem pislog.

[ Szerkesztve ]

(#2166) tvamos válasza Saua (#2165) üzenetére


tvamos
nagyúr

Nekem a notepad megnyitotta.
Biztosan jól állítottad be a boardot?
Amugy igen, ott is az van, hogy 3.
A LED jól van bekötve? Megfelelő a hullámhossza?
A telefonod gondolom látja a sima tv távirányítót.
Amúgy a PC-n jönnekmrendesen a csomagok?
Bocs, a nagyon alap kérdésekért!
Elő kéne kapni a szkópot a fiókból...

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2167) Saua válasza tvamos (#2166) üzenetére


Saua
tag

Az infra LED egy 120 ohmos ellenállással van sorbakötve, 5 V -ra kötve a telefon kamerája látja a fényét. A hullámhosszával viszont lehet gond, mert nem tudom pontosan milyen típusu, viszont az arduinóhoz kötve is csak fel kellene villanjon.
A soros monitoron úgy látszik, hogy minden rendben.

[ Szerkesztve ]

(#2168) tvamos válasza Saua (#2167) üzenetére


tvamos
nagyúr

Ha a kimenet helyett a tapra kotod a LED-et, akor vilagit?

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2169) Saua válasza tvamos (#2168) üzenetére


Saua
tag

Igen, akkor a kamerával látható.

(#2170) Saua válasza tvamos (#2168) üzenetére


Saua
tag

Remélem meglett a probléma, túl kicsi lehet a LED árama. Ha kb. 50 centire teszem az érzékelőt úgy már jó.Lehet a telefon kamerájával azért nem látszik semmi mert túl rövid és gyors az impulzussorozat?
Az előbbi könyvtárból a minták/ IRsendDemo jól megy kb. fél méterig
/* Example program for from IRLib – an Arduino library for infrared encoding and decoding
* Version 1.3 January 2014
* Copyright 2014 by Chris Young http://cyborg5.com
* Based on original example sketch for IRremote library
* Version 0.11 September, 2009
* Copyright 2009 Ken Shirriff
* http://www.righto.com/
*/
#include <IRLib.h>

IRsend My_Sender;

void setup()
{
Serial.begin(9600);
}

void loop() {
if (Serial.read() != -1) {
//send a code every time a character is received from the serial port
//SAMSUNG LE32C530
My_Sender.send(NEC,0xE0E036C9, 32);
}
}

[ Szerkesztve ]

(#2171) Andreas2 válasza junhum (#2160) üzenetére


Andreas2
tag

Még csak az alkatrészeket rendeltem meg, de ilyesmit tervezek én is. A http://www.mysensors.org/about/
címen nézd végig a tutorial-t, kész könyvtárakat kapsz az Arduino-hoz, az rPi-re meg mehet fel egy szimpatikus controller (http://www.mysensors.org/controller/)

(#2172) junhum válasza Andreas2 (#2171) üzenetére


junhum
tag

Köszönöm!

Nézegetem, sajnos kevesebb időm van mint gondoltam.

Your Workout Is My Warm-Up so Shut The Fuck Up And Train

(#2173) Pubszon


Pubszon
veterán

Üdv.
DHT11 nem tud negatív hőmérsékletet mérni?

ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...

(#2174) tvamos válasza Pubszon (#2173) üzenetére


tvamos
nagyúr

Range: 0..50 fok Celsius.

[ Szerkesztve ]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2175) Flashback


Flashback
addikt

Modellezni szeretnék egy áramkört. Power Led + driver(7135) + mosfet ami ráadja a tápot ha kap logikai 5V-ot.
Van ilyen fellelhető program?

Bocs nincs hosszú ö, ü és néha az á is ä :)

(#2176) gyapo11 válasza Flashback (#2175) üzenetére


gyapo11
őstag

Van egy pár: Electronic Workbench, Multisim, Tina, LTSpice, SolveElec.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#2177) Gergosz2 válasza Flashback (#2175) üzenetére


Gergosz2
veterán

ha tényleg csak próbálgatni akarsz, akkor szerintem ne szórakozz a telepítős változatokkal, elég lesz egy web-es is. pl: [link]

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#2178) tvamos válasza Flashback (#2175) üzenetére


tvamos
nagyúr

Sokat kiprobaltam, (persze, 20 ev alatt...) szerintem az LTSpice a legjobb. Ingyen van, konnyen hasznalhato, jol dolgozik kapcsolo aramkorokkel is.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2179) LógaGéza válasza gyapo11 (#2149) üzenetére


LógaGéza
addikt

Na most jutottam el odáig, hogy ezzel foglalkozzak. Sajnos programozásból nem állok a helyzet magaslatán, szinte egész nap a netet dúrtam, hátha találok valami épkézláb megoldást, de sajna nem sikerült, a legközelebbi ez lett volna, itt szép a GUI is, de Windowson nem ismeri fel a COM portot, Ubuntun meg ugyan felismeri, és elvileg csatlakozik is, de... nem történik semmi :)

Most ez alapján már azt megcsináltam, hogy PuTTY-ba beírt parancsokkal meg tudok csinálni alap dolgokat (ON, OFF, stb), de az igazi ide is a fentihez hasonló GUIs megoldás lenne, hogy egy színkeréken kiválasztani a megfelelő színt, és gombokra effektek elindítása. Nagyon bonyolult lenne így összerakni?

Még egy noob kérdés - mit használ az awtfy.com-os leírásban serial parancsok küldésére az író, vagy esetleg ilyen progira tudok tippet adni? PuTTY nem írja ki, amit pötyögök...

"Go to work, get married, have some kids, pay your taxes, pay your bills, watch your tv, follow fashion, act normal, obey the law, and repeat after me: I AM FREE"

(#2180) bacus válasza LógaGéza (#2179) üzenetére


bacus
őstag

"Nagyon bonyolult lenne így összerakni?"
Ez ilyen költői kérdés ugye? Ha tudsz használni bármilyen RAD fejlesztö programot, és megy is a programozás egy alap szinten, akkor nem.
Pl delphihez biztosan van iyen elérhető szinkerék komponens, a puttyt meg lehet hivogatni. (De biztos van soros porti kommunikációra is kész komponens)

Ha az arduinos programod kész, mert a választ mégiscsak ott kell leprogramozni, akkor ez a része, mármint a gui igazán gyerek játék lesz.

Kössünk egyezséget, megegyezős egyezséget... https://www.paypal.me/engiman/30

(#2181) tvamos válasza LógaGéza (#2179) üzenetére


tvamos
nagyúr

Ha kell Win, meg Linux felület, akkor Python, vagy Java. Ha egyiket sem ismered, akkor inkább a Python.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2182) Pubszon


Pubszon
veterán

Hali.
Ilyen ATtiny programmer van valakinek?
Hogy kell ezzel programozni?

ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...

(#2183) Gergosz2 válasza Pubszon (#2182) üzenetére


Gergosz2
veterán

semmi értelme, ha van egy pl egy Uno-d. Feltöltöd rá az ISP sketch-et , raksz egy 10uF-os kondit a reset és föld közé, utána meg bekötöd az SPI-t és kész. Szemléltetés: [link].

Én így programoztam Attiny85-ösöket. Jók ezek az MCU-k is, de érdemes pl egy Atmega168-ra is ránézni, mert olcsóbbra jön ki. A "P"-s változatok ráadásul picoPower-ösek, szóval a fogyasztásuk is visszafogott. Több láb, 16 kB flash...

[ Szerkesztve ]

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#2184) Pubszon válasza Gergosz2 (#2183) üzenetére


Pubszon
veterán

Olvastam már az Arduino as ISP dologról, de ez egyszerübb lenne. :)
Nem akarok csak azért tartani egy UNO-t.

Tehát a kérdés továbbra is adott...

ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...

(#2185) softguner válasza Pubszon (#2184) üzenetére


softguner
csendes tag

Egy ilyennel. [link]
+ AVR studio ami most már Atmel Studio :) Mondjuk asszem lehet az Arduino IDE-vel is.

(#2186) powerwade válasza Gergosz2 (#2183) üzenetére


powerwade
senior tag

Tudsz ebay eladót ahol olcsóbbra jön ki az Atmega168 mint az Attiny85?

(#2187) Gergosz2 válasza powerwade (#2186) üzenetére


Gergosz2
veterán

pl: [link] Jó ez, nem ebay, de ott csak maga az IC nem nagyon szokott lenni, de ha van akkor drágább is.

De sok atmega328-as ajánlat is ugyanannyiba kerül vagy csak pár centtel drágább mint egy attiny85.

[ Szerkesztve ]

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#2188) tvamos válasza powerwade (#2186) üzenetére


tvamos
nagyúr

En inkabb ezt a 10 USD-set vennem: [link]. Nem olyan nagy extra koltseg, ha nem ezrevel kell, szerintem.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2189) Gergosz2 válasza tvamos (#2188) üzenetére


Gergosz2
veterán

Alin nagyobb a kínálat IC-kből. Sok ilyen shop is van ott.

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#2190) powerwade válasza Gergosz2 (#2187) üzenetére


powerwade
senior tag

Ah, ez a tokozas nekem nem jon be, alig tettem be a labam az MCU -k vilagaba :) Egyelore a DIP -es megoldasokkal ismerkedem.

(#2191) tvamos válasza powerwade (#2190) üzenetére


tvamos
nagyúr

Ha nyákot maratok otthon, azon minden smd. Furkaljon mas... :)

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2192) bacus válasza tvamos (#2191) üzenetére


bacus
őstag

+1

Az smd nagy királyság,.

Kössünk egyezséget, megegyezős egyezséget... https://www.paypal.me/engiman/30

(#2193) Gergosz2 válasza powerwade (#2190) üzenetére


Gergosz2
veterán

Hát akkor DIP-es 328-at vegyél. Ezek olyan 2$/db áon szoktak menni,ha már ötösével rendeli az ember. Vagy másik megoldás lehet, ha egy Arduino Nano-t veszel. Ugyanúgy tudod próbapanelbe dugdosni, még olcsóbb is egy kicsit, és más alkatrész sem kell hozzá.

(#2191) tvamos
+1. Ha muszáj csak akkor használok DIP-et.

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#2194) tvamos


tvamos
nagyúr

Vajon mi lesz az Arduinoval, ha valaki megeszi az Atmelt?

Ezt vettem legutób: [link]

[ Szerkesztve ]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2195) gyapo11 válasza tvamos (#2194) üzenetére


gyapo11
őstag

Valami másik processzorral is meg lehet csinálni. Pont az a jó benne, hogy magasabb szintű nyelven, usb-soros porton könnyen kezelhető. Másik proccal a specialitásokat meg kell tanulni, időzítéseket stb., de szerintem az arduino környezet marad.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#2196) Pulsar válasza tvamos (#2194) üzenetére


Pulsar
veterán

Én nem félek ettől, szerintem kevesen vagyunk, akik megeszik a panelt :DDD :)) Bocs :R

(#2197) tvamos válasza gyapo11 (#2195) üzenetére


tvamos
nagyúr

Van egy Teensy 3-0-am, (Freescale ARM Cortex M valami van rajta,) de valahogy nem olyan zokkenomentes vele az elet, mint az Uno-val. (Software kompatibilitasi problemak...) En inkabb hasznalok STM32 discovery-t, (Ezen meg ST ARM Cortex van, M0-as, M3-as, meg M4-es is van, es hasznalni is merem,) mint a Teensy-t.

Nem attol felek. hogy nem lesz MCU, hanem attol, hogy az Atmel tolja bele a zsetont az Arduino projektbe, mas nem biztos, hogy aldoz ra ennyit... a masik dolog, amitol felek, hogy a kinaiak veszik meg. Nem szeretem a filozofiajukat.

(#2196) Pulsar válasza tvamos (#2194) üzenetére
Ahogy latom, az egesz ceget "bekapja" valaki, nem csak a panelt...

[ Szerkesztve ]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#2198) junhum


junhum
tag

Sziasztok!

Volna egy olyan problémám, hogy ez a kód:
#include <OneWire.h>
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {0xAD, 0xBD, 0xCD, 0xED, 0xFD, 0x0D};
IPAddress ip(192, 168, 0, 100);

// ThingSpeak Settings
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "xxxxxxxxxxxxxxxxxxx";
const int updateThingSpeakInterval = 16 * 1000; // Time interval in milliseconds to update ThingSpeak (number of seconds * 1000 = interval)

// Variable Setup
long lastConnectionTime = 0;
boolean lastConnected = false;
int failedCounter = 0;

// Initialize Arduino Ethernet Client
EthernetClient client;

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);


OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary)

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
// wait for serial port to connect. Needed for Leonardo only
// Start Ethernet on Arduino
startEthernet();
}


// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}

void loop() {
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit, celsiuss;

if ( !ds.search(addr)) {
Serial.println("No more addresses.");
Serial.println();
ds.reset_search();
delay(850);
return;
}

if (OneWire::crc8(addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return;
}
Serial.println();

ds.reset();
ds.select(addr);
ds.write(0x44); // start conversion, use ds.write(0x44,1) with parasite power on at the end

delay(1000); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.

present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad

Serial.print(" Data = ");
Serial.print(present, HEX);
Serial.print(" ");
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.print(" CRC=");
Serial.print(OneWire::crc8(data, 8), HEX);
Serial.println();

// Convert the data to actual temperature
// because the result is a 16 bit signed integer, it should
// be stored to an "int16_t" type, which is always 16 bits
// even when compiled on a 32 bit processor.
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// "count remain" gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
// at lower res, the low bits are undefined, so let's zero them
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
Serial.print(" Temperature = ");
Serial.print(celsius);
Serial.print(" Celsius, ");
Serial.print(fahrenheit);
Serial.println(" Fahrenheit");

celsiuss = round(celsius);
String analogValue0 = String(celsiuss, DEC);
Serial.println(celsius);
// Print Update Response to Serial Monitor
if (client.available())
{
char c = client.read();
Serial.print(c);
}
// Disconnect from ThingSpeak
if (!client.connected() && lastConnected)
{
Serial.println("...disconnected");
Serial.println();

client.stop();
}

// Update ThingSpeak
// if(!client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval))
// {
updateThingSpeak("field1="+analogValue0);
// }
// Check if Arduino Ethernet needs to be restarted
if (failedCounter > 3 ) {startEthernet();}

lastConnected = client.connected();

}


void updateThingSpeak(String tsData)
{
if (client.connect(thingSpeakAddress, 80))
{
//String tsData;
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
client.print("\n\n");

client.print(tsData);

lastConnectionTime = millis();

if (client.connected())
{
Serial.println("Connecting to ThingSpeak...");
Serial.println();

failedCounter = 0;
}
else
{
failedCounter++;

Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");
Serial.println();
}

}
else
{
failedCounter++;

Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");
Serial.println();

lastConnectionTime = millis();
}
}

void startEthernet()
{

client.stop();

Serial.println("Connecting Arduino to network...");
Serial.println();

delay(1000);

// Connect to network amd obtain an IP address using DHCP
if (Ethernet.begin(mac) == 0)
{
Serial.println("DHCP Failed, reset Arduino to try again");
Serial.println();
}
else
{
Serial.println("Arduino connected to network using DHCP");
Serial.println();
}

delay(1000);
}

No more adresses dob serialon és nem is megy tovább a program, legalábbis Thingspeaken nem látnám hogy akarmi menne (api kód kitöltve), ha csak egy sima példa programot futtatok akkor ott küld adatot.
Ha csak onewire példát futtatok akkor működik.
Egybe a kettőt nem tudom.
Uno van w5100 shielddel

szerk.:
A shieldet elég egyébként csak spi-n összekötni? pl ha nanoval akarom majd összehozni?

[ Szerkesztve ]

Your Workout Is My Warm-Up so Shut The Fuck Up And Train

(#2199) LógaGéza


LógaGéza
addikt

Szeretném ezt összerakni, és azon gondolkodok, hogy hogyan lehetne minél olcsóbban megoldani. Úgy értelmezem aREST libraryt használ a kommunikációhoz.
Ahogy nézem a Wifi Shieldek nem olcsó mulatságok, kivéve ez a ESP8266, csak nem tudom abból melyik lenne a jó és mi kell, hogy tudjam csatlakoztatni.
Viszont beleolvasva az aREST headerbe ez támogat serial portos kommunikációt is - viszont akkor felmerül a kérdés, hogy mivel az Android appba IP címet és portot kell megadni, akkor hogy lövöm be soros kommunikációra (gondolom leginkább sehogy sem megoldható, mert akkor a telóra kéne kapcsolnom, és azon kiadni a parancsokat).

Szóval mi lenne a legköltséghatékonyabb megoldás? Boardot is vennem kell hozzá (3 napot bírt az első Nanom :B ).

"Go to work, get married, have some kids, pay your taxes, pay your bills, watch your tv, follow fashion, act normal, obey the law, and repeat after me: I AM FREE"

(#2200) adatfalo válasza LógaGéza (#2199) üzenetére


adatfalo
senior tag

Bluetooth? H05-el én már csináltam ilyet. Az ESP8266-al én folyamatosan szenvedek a lua nyelv se a kedvencem.

www.adatfalodesign.hu

Copyright © 2000-2024 PROHARDVER Informatikai Kft.