- eBay-es kütyük kis pénzért
- Négymagos Xeon(!) CPU LGA775-ös deszkában
- bambano: Bambanő háza tája
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- erkxt: A Roidmi becsődölt – és senki nem szól egy szót sem?
- MasterDeeJay: Noname 1TB-os SATA SSD teszt
- hcl: Kelj fel komám, ne aludjál
- sziku69: Szólánc.
-
LOGOUT
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.
Új hozzászólás Aktív témák
-
LógaGéza
veterán
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
).
-
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 shielddelszerk.:
A shieldet elég egyébként csak spi-n összekötni? pl ha nanoval akarom majd összehozni? -
tvamos
nagyúr
válasz
gyapo11 #2195 üzenetére
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... -
-
tvamos
nagyúr
Vajon mi lesz az Arduinoval, ha valaki megeszi az Atmelt?
Ezt vettem legutób: [link]
-
Gergosz2
veterán
válasz
powerwade #2190 üzenetére
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. -
Gergosz2
veterán
válasz
Pubszon #2182 üzenetére
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...
-
Pubszon
veterán
Hali.
Ilyen ATtiny programmer van valakinek?
Hogy kell ezzel programozni? -
bacus
őstag
válasz
LógaGéza #2179 üzenetére
"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.
-
LógaGéza
veterán
válasz
gyapo11 #2149 üzenetére
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...
-
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? -
Pubszon
veterán
Üdv.
DHT11 nem tud negatív hőmérsékletet mérni? -
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/) -
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);
}
} -
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. -
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... -
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.
-
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 -
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();
}
} -
válasz
Gergosz2 #2161 üzenetére
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. -
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.
-
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?
-
softguner
csendes tag
Új hozzászólás Aktív témák
- Bomba ár! HP Elitebook 8560W - i7-2GEN I 8GB I 500GB I 15,6" FHD I Nvidia I W10 I Garancia
- 118 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 9 7945HX, RTX 4070 - UK billentyűzet
- Xiaomi Redmi Note 13 256GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- REFURBISHED és ÚJ - HP USB-C Dock G5 docking station (5TW10AA) - 3x4K felbontás, 120Hz képfrissítés
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged