 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 04 19, 20:09. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Arduino platforma
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
 |
 |
Arduino platforma |
Parašytas: 2019 03 25, 21:38 |
|
|
|
ULN2803 isejimai koja prie kojos 0.1' zingsniu, tie varzu rinkiniai irgi viena eilute 0.1' (pirma koja "bendras" ir pazymeta taskeliu) http://www.dart.moscow/index.php?productcode=22035
Ja jungi tiesiai ant ULN koju 10-1, 11-2..18-9 ir tada vedi prie N-Fet arba P-Fet Gate (nesuki sau kiausiu del to, kad gaunasi ne visai is eiles prie Arduino koju, nes i Gate vistiek teks vesti atskirus laidelius/takelius.
Nesumaisai tik to, kad ULN 9 kojas jungi visas i viena taska, kur jungiasi galios "0V" (minusas), o ULN 10 kojas jungi i galios "+12V".
N-Fet tranzistoriu Source visus jungi irgi i ta viena galios "0V", Drain vedi i "eilutes" arba LED juostu "-", o P-Fet tranzistoriu Source jungi i galios "+12V", Drain vedi i "stulpelius" arba LED juostu "+".
Atmegos maitinimui gali naudoti 7805, kurio GND jungi atskiru laidu i galios "0V", o Vin jungi atskiru laidu i galios "+12V", pacia Atmega maitini jau nuo 7805 (nepamirsk iejime 0.1uF keramikos, o isejime 1..10uF elektrolito, o ant Atmegos maitinimo koju keramini 0.1uF tiek skaitmenos, tiek analogineje puseje.
Jei nera poreikio tikslesniam analogines itampos matavimui, tai AVDD gali tiesiai jungti su VDD.
16MHz kvarcinis rezonatorius nebutinas (paprastoms uzduotims per akis vidinio 8MHz RC taktinio generatoriaus). |
|
|
|
|
 |
 |
Programavimo aplinka Arduino mikrovaldikliams |
Parašytas: 2023 09 30, 21:18 |
|
|
|
naudojau Atom ProgramIO IDE, ir prireikė gi man persiinstaliuoti Linux Mint
( performatavau truputį daužtą hdd ).
Taip sužinojau, kad Atom numarintas nuo šių metų vasario pradžios.
Pulsar būtų gerai, jeigu galima būtų instaliuoti įskiepą ProgramIO . Pagaliau Microsoft VSC priėmė įskiepą ProgramIO bet nesiriša su mikrovaldikliu!
Dar suteikė vilčių Zed ... kol nepaaiškėjo, kad šitas tik MacOS ( būna dar ir tokių ! )
Eclipse?
AVR Studio?
AVR dude?
ar verta bandyt dar kartą instaliuoti Pulsar? ar pas ką nors jis instaliuoja programio-ide ? |
|
Paskutinį kartą redagavo a1girdas, 2023 10 06, 16:55. Redaguota 1 kartą |
|
|
|
 |
Arduino platforma |
Parašytas: 2023 10 02, 04:13 |
|
|
|
O tai VS Code su Arduino pluginu neveikia? Arba su platform.io? |
|
|
|
|
 |
Arduino platforma |
Parašytas: 2023 10 06, 17:01 |
|
|
|
Socrates rašo: |
O tai VS Code su Arduino pluginu neveikia? Arba su platform.io? |
tik tas ir teveikia (y) ir, sakyčiau, gerai. Labai patiko, kad realus veikimas atitinka pavyzdžius ir tutorialus.
Paaiškėjo kitų dalykų. Linux Mint po išinstaliavimo ( kompo išjungimo įjungimo ) išinstaliuotieji paketai tebeveikia. Išvalymas su "BleachBit" sujaukia repozitorijų sąrašą, bet išinstaliavimui nepadeda nei kiek. Todėl po nevykusių bandymų instaliuoti Eclipse, Pulsar, Sloeber, Python 3 jau neveikė ir VSC.
Švariai instaliavus Linux, instaliavosi sklandžiai ir veikia VSC.
Nervuoja tas Linuxų bardakas  |
|
|
|
|
 |
 |
 |
Arduino platforma |
Parašytas: 2023 10 07, 18:47 |
|
|
|
mikrosofto techninius patarimus skaitant kur kas aiškiau. Dar nesimato tokio turgaus, kad nuomonę pateikia už esamą faktą. Jeigu ieškai kokio nors konfigūracijos failo kokiame nors folderyje ir to folderio nėra, tai drąsiai gali pereiti aiškintis, kaip tas folderis turi atsirasti.
O Linux'ų patarimuose vos ne 100% aprašomo folderio nerandi, nes vat matykite, nauja distra su "pagerinimais".
Kitas dalykas, kad ieškant patarimo Linuxams dar reikia prasibrauti per variantų džiungles.
Windows atveju ieškai konkrečiai Windows versijai.
Virusų nebijo? gal nebent tuose regionuose, kur plačiau paplitę Windows ir susiję su tuo, kad daugiau žioplų vartotojų. Linuxuose kad pasigauti virusą tai biškį reikia pažengusiam būti - instaliuotis ką nors ... |
|
|
|
|
 |
 |
Arduino platforma |
Parašytas: 2025 02 09, 14:28 |
|
|
|
Sveiki, gal galite kas padėti su arduino kodu.
Mikrovaldiklis arduino nano, stebi 3 termo daviklius, drėgmės daviklį, baterijos lygį, duomenis įrašinėja į SD kortelę, peržengus nustatytas ribas siunčia SMS. Viskas kaip ir veikia, tačiau yra galimybė SMS žinute nusiųsti kodą 11 ir gauti visus duomenis, bet problema tame kad nenuskaito žinutės ir nesiunčia atsakymo, tačiau kode užkomentavus funkciją "duomenų įrašymas" žinutę nuskaito ir siunčia atsakymą.
Kur esu padaręs klaidą
Pridedu kodą
Kodas: |
#include <RTClib.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
RTC_DS3231 rtc;
File myFile;
SoftwareSerial sim800l(3, 2); // arduino D2 i sim800l RXD, D3 i TXD
String textMessage;
String dregme;
String baterija;
char t[32];
int temp_dirvos_1;
int temp_po_plevele_1;
int temp_atviras_1;
float temp_dirvos;
float temp_po_plevele;
float temp_atviras;
uint8_t pin_dregeme = 9;
uint8_t pin_baterija = 8;
bool val_dregme = 0;
bool val_baterija = 0;
bool flag_dregme = false;
bool flag_baterija = false;
bool flag_temp_dirvos = false;
bool flag_temp_po_plevele = false;
bool flag_temp_atviras = false;
uint8_t po_plevele[8] = { 0x28, 0xDD, 0xDA, 0x43, 0xD4, 0xE1, 0x3C, 0x30 };
uint8_t dirva[8] = { 0x28, 0xBD, 0x5A, 0x43, 0xD4, 0xE1, 0x3C, 0x38 };
uint8_t atviras[8] = { 0x28, 0x73, 0x03, 0x43, 0xD4, 0xE1, 0x3C, 0xD2 };
void setup() {
sim800l.begin(9600);
delay(10000);
sim800l.print("AT+CMGF=1\r");
delay(100);
sim800l.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
pinMode(pin_dregeme, INPUT);
pinMode(pin_baterija, INPUT);
Serial.begin(9600);
Wire.begin();
rtc.begin();
sensors.begin();
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while (1)
;
}
Serial.println("initialization done.");
}
void duomenu_irasymas() {
myFile = SD.open("meteo.txt", FILE_WRITE);
if (myFile) {
myFile.print(t);
myFile.print(" ");
myFile.print(temp_dirvos_1);
myFile.print(" ");
myFile.print(temp_po_plevele_1);
myFile.print(" ");
myFile.print(temp_atviras_1);
myFile.print(" ");
myFile.print(" Temp-dirva: ");
myFile.print(temp_dirvos);
myFile.print("; ");
myFile.print(" Temp-po plevele: ");
myFile.print(temp_po_plevele);
myFile.print("; ");
myFile.print(" Temp-atviras: ");
myFile.print(temp_atviras);
myFile.print("; ");
myFile.print(dregme);
myFile.println(baterija);
myFile.close();
}
}
void monitor_info() {
Serial.print(F("Date/Time: "));
Serial.print(t);
Serial.print(" Dirva: ");
Serial.print(temp_dirvos);
Serial.print(" Po plevele: ");
Serial.print(temp_po_plevele);
Serial.print(" Avira: ");
Serial.print(temp_atviras);
Serial.print("; ");
Serial.print(dregme);
Serial.println(baterija);
}
void send_info() {
sim800l.print("AT+CMGF=1\r");
delay(100);
sim800l.print("AT+CMGS=\"+37000000000\"\r");
delay(500);
sim800l.print("D-");
sim800l.print(temp_dirvos);
sim800l.print("; ");
sim800l.print("PP-");
sim800l.print(temp_po_plevele);
sim800l.print("; ");
sim800l.print("A-");
sim800l.print(temp_atviras);
sim800l.println("; ");
sim800l.print("Dirva - ");
sim800l.println(dregme);
sim800l.print("Baterija - ");
sim800l.println(baterija);
delay(500);
sim800l.print((char)26);
delay(500);
sim800l.println();
delay(500);
}
void duomenu_rinkimas() {
sensors.requestTemperatures();
temp_dirvos = sensors.getTempC(dirva);
temp_po_plevele = sensors.getTempC(po_plevele);
temp_atviras = sensors.getTempC(atviras);
temp_dirvos_1 = temp_dirvos * 100;
temp_po_plevele_1 = temp_po_plevele * 100;
temp_atviras_1 = temp_atviras * 100;
val_dregme = digitalRead(pin_dregeme);
val_baterija = digitalRead(pin_baterija);
if (!val_dregme) {
dregme = ("dregna; ");
}
if (val_dregme) {
dregme = ("sausa; ");
if (flag_dregme == false) {
flag_dregme = true;
send_info();
}
}
if (!val_baterija) {
baterija = ("senka; ");
if (flag_baterija == false) {
flag_baterija = true;
send_info();
}
}
if (val_baterija) {
baterija = ("pilna; ");
}
if (temp_dirvos <= 20) {
if (flag_temp_dirvos == false) {
send_info();
flag_temp_dirvos = true;
}
}
if (temp_po_plevele <= 20) {
if (flag_temp_po_plevele == false) {
send_info();
flag_temp_po_plevele = true;
}
}
if (temp_atviras <= 20) {
if (flag_temp_atviras == false) {
send_info();
flag_temp_atviras = true;
}
}
}
void loop() {
if (sim800l.available() > 0) {
textMessage = sim800l.readString();
delay(100);
{
if (textMessage.indexOf("11") >= 0) {
Serial.println("Info");
send_info();
delay(100);
flag_dregme = false;
flag_baterija = false;
flag_temp_dirvos = false;
flag_temp_po_plevele = false;
flag_temp_atviras = false;
}
}
}
else {
duomenu_rinkimas();
DateTime now = rtc.now();
sprintf(t, "%02d:%02d:%02d %02d/%02d/%02d", now.year(), now.month(), now.day(), now.hour(), now.minute(), now.second());
//if (now.minute() % 20 == 0) {
if (now.second() % 5 == 0) {
duomenu_irasymas();
monitor_info();
delay(1000);
}
}
} |
|
|
|
|
|
 |
 |
Arduino platforma |
Parašytas: 2025 02 11, 17:00 |
|
|
|
nes vienu metu nesugebe atlikti 2 darbu, jei vyksta irasymas, praleidzia sms gavima. jo tiesiog neuzfiksuoja. reikia koda gudriau sudelioti, gal irasymus retesnius daryti. visi delay yra mirtis kodui. delay vykdymo metu daugiau valdiklis nieko nedaro kaip tik laukia. reiks ziureti realia situacija. ka galima koreguoti |
|
_________________ Skype: dmb-220 |
|
|
|
 |
Arduino platforma |
Parašytas: 2025 02 11, 18:21 |
|
|
|
Kiek matau, tai yra problemu su kodo sintakse.
O siaip tai autoriui siulyciau pasileisti timer'i kas 5sek. ir ten tvarkytis periodinius reikalus. Atejusias zinutes tada galima pasitikrinti main loop'e. |
|
|
|
|
 |
 |
Arduino platforma |
Parašytas: 2025 02 11, 19:14 |
|
|
|
Socrates rašo: |
Kiek matau, tai yra problemu su kodo sintakse.
O siaip tai autoriui siulyciau pasileisti timer'i kas 5sek. ir ten tvarkytis periodinius reikalus. Atejusias zinutes tada galima pasitikrinti main loop'e. |
mano kukliomis ziniomis su taimeriais arduine yra prastai, kaip ir su daug kuo.
Bet cia neaisku principas bendravimo. Kazkada bandes tai viskas per AT komandas o cia kazkokios bibliotekos.
sim800l lyg turi savo buferi kazhkoki kur saugo zhinutes, tada numeta low leveli ant vieno pino ir galima paskaityti ir istrinti buferi kitoms zinutems. Todel arduino uzimtumas neturetu buti problema. Bet ten dar yra variantas kai zinute siuncia i serial tiesiai tada jei arduino uzimtas tai ji gal ir dingsta.
Kaip tos funkcijos idetame listinge veikia - nesuradau |
|
|
|
|
 |
 |
Arduino platforma |
Parašytas: 2025 02 12, 09:42 |
|
|
|
Programavime esu tik visiškas mėgėjas.
Realiai duomenų įrašymas vyksta tik kas 20 min, tačiau tai nieko nekeičia.
Kodas: |
DateTime now = rtc.now();
sprintf(t, "%02d:%02d:%02d %02d/%02d/%02d", now.year(), now.month(), now.day(), now.hour(), now.minute(), now.second());
if (now.minute() % 20 == 0) {
if (now.second() == 0) {
duomenu_irasymas();
monitor_info();
delay(1000);
}
} |
Kaip aš suprantu, kol minutės nesidalina iš 20 be liekanos funkcija "duomenu irasymas" turėtu būti neliečiama, ar aš klystu. |
|
|
|
|
 |
 |
Arduino platforma |
Parašytas: 2025 02 12, 10:13 |
|
|
|
ukininkas rašo: |
Programavime esu tik visiškas mėgėjas.
Realiai duomenų įrašymas vyksta tik kas 20 min, tačiau tai nieko nekeičia.
Kodas: |
DateTime now = rtc.now();
sprintf(t, "%02d:%02d:%02d %02d/%02d/%02d", now.year(), now.month(), now.day(), now.hour(), now.minute(), now.second());
if (now.minute() % 20 == 0) {
if (now.second() == 0) {
duomenu_irasymas();
monitor_info();
delay(1000);
}
} |
Kaip aš suprantu, kol minutės nesidalina iš 20 be liekanos funkcija "duomenu irasymas" turėtu būti neliečiama, ar aš klystu. |
Nesu tikras, bet zinutes turi buti priimamos be jokio arduino, jei nustatyta kad jas saugoti atmintyje.
Reikia valdyti laika, jei irashymas vyskta kas 20 minuciu tai ir ta funkcija turi buti naudojama kas 20 minuciu, nustatai, kas kiek minuciu ar sekundziu tikrini zinutes(as tik per AT komandas zinau). Visas laiko valdymas turi vykti pagrindiniame loop. Jei laikai valdomi kazkurioje paprogrameje, tai ten viskas ir uzhstrigs
Galima prisijungti keleta LED kad zinot ka arduinas daro kuriuo metu. (Imesti high i pina kai ieina i funkcija ir low kai isheina) jei tai trunka |
|
|
|
|
 |
 |
Arduino platforma |
Parašytas: 2025 02 12, 10:33 |
|
|
|
Žinutės nuskaitymas vyksta pagrindiniame loop'e ir laiku nėra apribota, kada išsiunčiu tada turi būti nuskaityta.
Kodas: |
void loop() {
if (sim800l.available() > 0) {
textMessage = sim800l.readString();
delay(100);
{
if (textMessage.indexOf("11") >= 0) {
Serial.println("Info");
send_info();
delay(100);
flag_dregme = false;
flag_baterija = false;
flag_temp_dirvos = false;
flag_temp_po_plevele = false;
flag_temp_atviras = false;
}
}
} |
Nepaminėjau vieno momento, po sistemos įjungimo pirmą žinutę nuskaito ir atsiunčia atsakymą, o antros jau neskaito.
09:24:00.126 -> Initializing SD card...initialization done.
09:24:01.071 -> AT+CMGF=1
09:24:01.103 -> OK
09:24:01.103 -> AT+CNMI=2,2,0,0,0
09:24:01.135 -> OK
09:24:01.135 ->
09:24:26.915 ->
09:24:26.915 -> +CMT: "+37060000000","","25/02/12,09:24:25+08"
09:24:26.991 -> 11
09:24:26.991 ->
09:24:32.150 -> AT+CMGF=1
09:24:32.199 -> OK
09:24:32.199 -> AT+CMGS=
09:24:34.679 ->
09:24:34.679 -> +CMGS: 174
09:24:34.725 ->
09:24:34.725 -> OK
09:24:34.725 ->
09:24:47.626 ->
09:24:47.626 -> +CMT: "+37060000000"," |
|
|
|
|
 |
 |
Arduino platforma |
Parašytas: 2025 02 12, 13:27 |
|
|
|
Ačiū už patarimus, problemą pavyko išspręsti.
Šitą:
Kodas: |
void loop() {
if (sim800l.available() > 0) {
textMessage = sim800l.readString();
delay(100);
{
if (textMessage.indexOf("11") >= 0) {
Serial.println("Info");
send_info();
delay(100);
flag_dregme = false;
flag_baterija = false;
flag_temp_dirvos = false;
flag_temp_po_plevele = false;
flag_temp_atviras = false;
}
}
} |
pakeitus į šitą:
Kodas: |
if (sim800l.available() > 0) {
message = sim800l.readStringUntil('\n');
message.trim();
if (message == "11") {
send_info();
delay(500);
flag_dregme = false;
flag_baterija = false;
flag_temp_dirvos = false;
flag_temp_po_plevele = false;
flag_temp_atviras = false;
}
} |
|
|
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
LEGO
Mänguköök,
mudelautod,
nukuvanker |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|

|
 |