jeli ima neki korisni tutoriali na hrvatskom jeziku za Arduino
Ima, video tutoriali za potpune pocetnike:
https://vimeo.com/eradionica/videos/sort:alphabetical/format:thumbnail
(koristena plocica nije standardnog formata, ali sve ostalo je isto)
jeli ima neki korisni tutoriali na hrvatskom jeziku za Arduino
Ima, video tutoriali za potpune pocetnike:
https://vimeo.com/eradionica/videos/sort:alphabetical/format:thumbnail
(koristena plocica nije standardnog formata, ali sve ostalo je isto)
Koja je razilika orginalnog arduina (uno) i onog sa ch340g jel ima neko prblema sa ovim sto imajau ch340g ?
Dobro rade ch340g, ali posto nisu skupi, naruci ih vise komada i onda isprobas, ako koji ne radi saljes zahtjev za refound/resend.
Iz mog iskustva 1/5 ne radi, ali s druge strane i originalni uno mi je brzo krepao (16u2 ako se ne varam)
I jos jedna stvar je da i ti "krepani" rade, samo trebas imati USBasp(najjeftiniji a dobro radi) s kojim programiras direktno atmela preko 6pin headera(ICSP), jedina stvar koju gubis je serial monitor.
jeli ima neki korisni tutoriali na hrvatskom jeziku za Arduino
Prvo kreni učiti engleski jezik. Zahvalit ćeš mi kasnije.
Koja je razilika orginalnog arduina (uno) i onog sa ch340g jel ima neko prblema sa ovim sto imajau ch340g ?
Ovaj prvi je daleko skuplji. Ali ako ga kupiš, podupireš razvoj Arduino platforme.
Pratkične razlike nema. Osim toga, o kojem "originalnom arduino (uno)" pričaš? Starije verzije Arduino pločica imale su FTDI usb2serial čip, prvi Uno ima 8u2, novije verzije koriste 16u2.
Na kraju krajeva, riječ je samo o usb2serial čipu, znači sučelju prema kompjuteru. Koji god da se koristi, radi dobro. ch340g je, kako se čini, odličan a jeftin čip. Ima ga i većina samostalnih usb2serial adaptera.
jeli ima neki korisni tutoriali na hrvatskom jeziku za Arduino
Ima, video tutoriali za potpune pocetnike:
https://vimeo.com/eradionica/videos/sort:alphabetical/format:thumbnail
(koristena plocica nije standardnog formata, ali sve ostalo je isto)
Bolje je naučiti engleski, jer momak iz e-radionice, iako ima dobre namjere, nema dovoljno znanja, pogotovo u pogledu terminologije iz programiranja i često zbog toga dezinformira gledatelje. A jednom kad se krivo nauči, teško je ispravljati...
Pozdrav,
napravio sam malu igru gdje se nasumično pale ledice i mora se pogoditi kojim su redosljedom se palile ( nisam nista inovativnog izmislil :) ).
Igra jos nije dovršena - treba dodati da se resetira igra kad je krivo pogođeno, možda neki display da pokazuje nekakve bodove ili razine, pobošljati razine igre, itd., uglavnom može se jos nadograđivati.
Ali imam jedan problem, ledice se uvijek pale istim redom. kad se upload-a kod, upale se 4, pa 2, pa 2. u sljedećoj iteraciji 3,3,1,1 itd. Kako da rješim taj problem?
Koji je najbolji način da resetiram?
Ovdje je kod , Ovdje je slika kak izgleda igra
Naravno, možete kritizirati kod, bilo bi i poželjno, da znam gdje griješim.
Umjesto random(); koristi randomSeed(); i nakon toga kako bi dobio broj od 0-4 koristis operater modulo(%) 5 i ostatak ti je broj izmedu 0-4
random(); ce ti svaki put generirati iste random brojeve od reseta pa na dalje
Umjesto random(); koristi randomSeed();
Ovo si malo zbunjujuće napisao. Funkcija randomSeed služi tome da funkcija random ne vraća iste brojeve (da ne počne čitati svaki put iz iste memorijske lokacije). Poziv funkcije randomSeed se stavi u funkciju setup, a ostatak programa ostaje kakav je - i dalje se koristi random.
i nakon toga kako bi dobio broj od 0-4 koristis operater modulo(%) 5 i ostatak ti je broj izmedu 0-4
Arduino ima i random(min, max), kao što je to kolega koristio u programu. Svrha te funkcije je upravo da se ne mora čovjek zafrkavati s ovim što si napisao.
Nisam dugo koristio random u arduinu, ja sam malo pobrkao, mislio sam da je to nesto tipa u java/c++ klasicni di se umjesto random(); koristi random(time()); kako bi se dobio full random rez.
Znaci cista zamjena naredba, jedino mi je to ostalo u sjecanju da je neka modifikacija randoma pa sam na brzinu googlao i samo napisao.
Ali vjerujem da se je kolega snasao s datasheetom naredbe posto mi se njegov kod cini puno kompleksniji nego vecina problema u ovoj temi, a i djeluje mi malo ozbiljnije od apsolutnog pocetnika.
Arduino ima određenu količinu eeprom memorije u koju možeš zapisivati i iz koje možeš čitati. Ako ti to nije dovoljno, imaš eeprom čip s I2C sabirnicom. Ili čitač memorijskih kartica.
Nije direktno vezano za Arduino ali je za mikrokontrolere i SoC rješenja...
Dakle, za potrebe jednog projekta tražim "nešto" što udovoljava bar dio ovih uvjeta:
1. Minimalno 2 serijska interfacea
2. 8 izoliranih (optocoupler?) digitalnih inputa - recimo 12/24v
3. 8 digitalnih outputa koji će upravljati relejima - 5v output bi bio idealan ali može i 3v
4. Ethernet ili WiFi
5. Atmel ili nešto slično kao kontroler - što jednostavnije i brže
6. Što više timera u kontroleru i ležište za bateriju (RTC)
Pretpostavljam da bi se nešto moglo složiti sa Arduinom kao bazom ali neko single-board rješenje bez stackanja bi bilo što bolje... Je li itko vidio nešto slično (a da nije neki bolesno skupi Siemensov PLC )?
Zašto sam ne isprojektiraš takvu pločicu?
Ako znaš projektirati PCB i lemiti, preko OSH Parka riješiš PCB za siću i složiš si custom riješenje.
To je isto jedna od varijanti ali zanima me da li je netko vidio nešto slično gotovo... Imam već neki prototip (na live testu... negdje) i nisam baš zadovoljan ukupnim troškom (zato i pitam, ako je već dizajnirano i štanca se, sigurno je jeftinije). Stvar je u tome da bi se to trebalo proizvesti u jedno 200-500 komada...
WeMos D1 R2 mi pada na pamet,ali nije točno ono što želiš.
Da ali to je opet stackanje i kombiniranje
Kad bi neki ALIX (kao ovaj, npr, to je skoro pa savršeno) imao neke I/O portove...
RPi3 sa dodatnim RTC-om? RPi Compute Module?
Preslab. Ne možeš nikakav RTOS na njemu vrtjeti kako treba a da imaš pristup GPIO pinovima. A da ne govorimo o komplikacijama sa slaganjem tih izoliranih inputa (onda mi je bolje neki Atmel zašarafiti i mirna Bosna)...
E pa tako nešto ali pogledaj SDK
Nema druge nego štampaj svoju...
E pa tako nešto ali pogledaj SDK
Ali provajdaju ti i video tutorijale da lakše naučiš.
Svaki dan u firmi radim sa kineskim i tajvanskim proizvodima... Ako itko radi najgluplju dokumentaciju i najlošije primjere, to su oni. Imam PTSP od njihovih SDKova i PDFova na piđn inglišu.
Onda napraviš svoju i amen. :D
Ja bi probao custom napraviti, uzeo bi ESP zbog vec ugradenog wifi-a, manjak I/O bi rjesio shiftanjem i 2x quad optocoupler stavis, nades neki rtc chip i ne bi trebalo biti preskupo
ESP mozes cak sloziti i na headere da se steka pa si u mogucnosti iskoristiti i dio PCB-a ispod njega.
mali OT, znam da nisu oglasi ali valjda me nece banat nitko
ima li itko slucajno zetonjeru viska da bi prodao?
LP
Prek Nodecu esp8266 šaljem običnu poruku preko PUSH request-a na Pushbullet-a. Znači ima chat (ko facebook messenger ili whatsup) i tamo mi šalje tu poruku
Sad moje pitanje: dal se može napraviti da ja pošaljem poruku(npr. neki znak ili slovo ili riječ) u taj chat s mobitela, esp8266 ju "pročita" i onda nešto napravi?
Prek Nodecu esp8266 šaljem običnu poruku preko PUSH request-a na Pushbullet-a. Znači ima chat (ko facebook messenger ili whatsup) i tamo mi šalje tu poruku
Sad moje pitanje: dal se može napraviti da ja pošaljem poruku(npr. neki znak ili slovo ili riječ) u taj chat s mobitela, esp8266 ju "pročita" i onda nešto napravi?
Koliko vidim, sadržaj pusheva se može dohvatiti, ali za sadržaj chata nisam siguran (osim ako i chat-poruke ne dolaze u obliku pusheva).
Znači, ti pošalješ upit serveru, a on ti natrag vrati push ili štogod drugo u JSON formatu. Ako eps8266 koristiš kao Arduino, imaš i JSON parser za Arduino pomoću kojeg "rastaviš" JSON, odnosno iz njega izvučeš sadržaje polja koja te zanimaju.
Znaci vezano uz to, radim termometar u kojem biraš mod rada ( manje od(>), veće od8(<), između 2 vrijednost(<>)), vrijednost temperature i kolko vrijeme(u sekundama) kada će ponovno izmjeriti temperaturu. Npr. < 23C, 15sek, ako izmjerena temperatura pređe preko 23 C, posalje ti poruku na pushbullet da je prevršilo tu temperaturu. Nisam znal kak da to drugačije napravim pa sam preko pushbulleta.
1. Sad hoću još napraviti to da ja pushbullet posaljem poruku ili neka druga kombinacija i onda on meni posalje natrag trenutnu temperaturu ili slično. Tu zapinjem i neznam kak izvesti. Ili mozda ima neki bolji nacin umjesto pushbulleta, recite mi.
2. Da na EEPROM spremim ove podatke (mod rada, određenu temp i vrijeme), u slučaju nestanka struje ili slično, da ako ima spremljene podatke unutra, on ih pročita i počne ponovno raditi. Ovo oko eeproma sam samo citao, još nisam ništ konkretnog napravil jer prvi put ga koristim, pa ak netko ima kakav tip ili savjet vezano uz eeprom, zahvaljujem.
za mjerenje temp koristim ds18b20
Evo moj webserver...
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <ArduinoOTA.h>
#include <ESP8266WebServer.h>
#include "DHT.h"
// digital2
#define DHTPIN 4
#define DHTTYPE DHT11
// digital3
#define RELAY1PIN 0
// digital4
#define RELAY2PIN 2
// ime mreze
const char* ssid = "xxxxxxx";
// lozinka mreze
const char* password = "xxxxxxx";
// slusaj na portu 8081
ESP8266WebServer server(8081);
// username i lozinka za prijavu
const char* www_username = "xxxxxx";
const char* www_password = "xxxxxx";
String header = "<!DOCTYPE html><html><head><title>NodeMCU dashboard</title><link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\"</head>";
// IP adresa
IPAddress ip(192, 168, xx, xxx);
IPAddress gateway(192, 168, xx, xx);
IPAddress subnet(255, 255, 255, 0);
DHT dht(DHTPIN, DHTTYPE, 11);
bool re1state = false;
bool re2state = false;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("WiFi Connect Failed! Rebooting...");
delay(1000);
ESP.restart();
}
ArduinoOTA.begin();
dht.begin();
pinMode(RELAY1PIN, OUTPUT);
pinMode(RELAY2PIN, OUTPUT);
server.on("/", []() {
if (!server.authenticate(www_username, www_password))
return server.requestAuthentication();
// ocitaj vlaznost
float h = dht.readHumidity();
// temperaturu
float t = dht.readTemperature();
String tmpinfo = "";
if (isnan(h) || isnan(t)) {
tmpinfo = "DHT11 nije spojen!";
}
else
{
tmpinfo = "Temperatura: " + (String)t + " 'C, vlaznost zraka: " + (String)h + "%";
}
server.send(200, "text/html", header + "<body><div class=\"container\">" +
"<div class='row'>" +
"<div class='col-md-12'><p>" + tmpinfo + "<p></div></div>" +
"<div class='row'>" +
"<div class='col-md-12'><a href=\"/relays?relay=re1&action=1\">Activate relay 1</a><hr><a href=\"/relays?relay=re2&action=1\">Activate relay 2</a></div></div>" +
"</div></body></html>");
});
server.on("/getstate", []() {
if (!server.authenticate(www_username, www_password))
return server.requestAuthentication();
String relay = server.arg("relay");
int reNo = relay.toInt();
if (reNo == 1)
{
server.send(200, "text/html", header + "<body><div class=\"container\"><p>Relay " + relay + " state is " + (String)re1state + "</p></div></html>");
}
else if (reNo == 2)
{
server.send(200, "text/html", header + "<body><div class=\"container\"><p>Relay " + relay + " state is " + (String)re2state + "</p></div></html>");
}
else
{
server.send(200, "text/html", header + "<body><div class=\"container\"><p>Relay " + relay + " is not present!</p></div></html>");
}
});
server.on("/relays", []() {
if (!server.authenticate(www_username, www_password))
return server.requestAuthentication();
String relay = server.arg("relay");
int action = server.arg("action").toInt();
switch (action)
{
case 1:
server.send(200, "text/html", header + "<body><div class=\"container\"><p>activating relay " + relay + "</p></div></html>");
digitalWrite(RELAY1PIN, HIGH);
re1state = true;
break;
case 0:
server.send(200, "text/html", header + "<body><div class=\"container\"><p>deactivating relay " + relay + "</p></div></html>");
digitalWrite(RELAY1PIN, LOW);
re1state = false;
break;
}
});
server.begin();
Serial.print(WiFi.localIP());
}
void loop() {
ArduinoOTA.handle();
server.handleClient();
Pristupaš mu ovako:
http://ipadresa:8081/relays?relay=re1&action=1
Dakle, ova komada će aktivirati relej 1 a ovo:
http://ipadresa:8081/relays?relay=re1&action=0
će ga ugasiti.
Potaknuo si me s ovim postom da se ponovno malo pozabavim esp-om... I moram reći da mi je s jedne strane super to što se može embeddati web-server u mikrokontrolerčić, dok sam s druge strane duboko razočaran. Da, ako će on raditi samo neku sitnu funkcijicu - OK. Međutim ako se od njega očekuje da bude zamjena za Arduino, onda može doći do velikih problema. Arduino je jednostavno jedna sasvim druga klasa uređaja - daleko bolji je za korištenje elektroničkih komponenti.
Napravio sam si dakle kontrolerčić za akvarij baziran na Arduino Pro Microu. Kontrolerčić gasi i pali svjetla putem relej-modula (znači komunicira i s RTC-om), očitava temperaturu preko Dallasovih one-wire senzora, prikazuje informacije na OLED ekrančiću i preko gumbića se podešava.
Jednostavno sam pokušao taj isti kod prebaciti na esp8266, uz male izmjene (oznake pinova) i dodatak web-servera, no u konačnici radi nepredvidljivo. Radio je OK (osim što je prikaz na OLED ekrančiću daleko sporiji nego pomoću Pro Microa, "zahvaljujući" softverskoj implementaciji I2C sučelja na esp-u, unatoč tome što je po sirovoj snazi esp daleko brži od Arduina - ako se ne varam radi se o 32-bitnom procesoru na nekih 80 MHz, dok su osnovni Arduinoi 8-bitni pri 16 MHz) sve dok mu nisam dodao Dallasov senzor temperature. Od tada često puta se uopće ne pokrene - I2C komunikacija jednostavno padne - ne rade ni ekran ni RTC, a često ni web-server. Mislim da je posrijedi jednostavno previše bitbanginga za dva protokola (I2C i one-wire). Nadao sam se njime zamijeniti Arduino, ali očito ništa od toga. Još kad se uzme u obzir malen broj pinova (tj. velik broj pinova na dev pločici, ali jako malo iskoristivih IO pinova), od kojih neki imaju više funkcija... Još i troši dosta energije (za jedan mali mikrokontrolerčić) i osjetno se zagrijava, naspram Arduina koji su totalno hladni... I još mu trebaš dati 3.3V pa opet tu gubiš energiju na pretvorbu... Ujedno ima i samo jedan analogni pin i to koji ide do 1V...
Količina memorije je super, iako je u praksi ispadne mnogo manje jer defaultni tipovi su veći nego na 8-bitnim mikrokontrolerima, a kompajlirani programi su ogromni.
Najveća šteta je definitivno što nema hardverski I2C. Da to ima, drugi nedostaci bi mu se još i mogli oprostiti. To je ko fol jako brz mikrokontroler, ali ako ti dosta updateaš ekran, to ga drastično uspori.
Tako da... Mislim da će mi esp8266 služiti samo kao web-sučelje prema Arduino Pro Microu. Što nije nužno loše, iako tako čovjek mora imati dva mikrokontrolera na brigi, umjesto samo jednog. Dao sam mu priliku, ali jednostavno ne radi kako treba. Trebao bih valjda prijeći na SPI komponente, a to mi se nikako ne sviđa. Možda onda s Pro Microa prijeđem na Nano pa da mi ESP služi i za prikaz na ekranu (ako uopće budem koristio ekran), jer sam na Pro Microu samo zato jer Nano ima premalo memorije za Adafruitovu biblioteku za OLED ekrančić. Što se tiče upravljanja akvarijem, Pro Micro fakat odlično funkcionira - ne ruši se, pali i gasi svjetlo kad treba, napiše mi temperaturu kad me zanima... Oduševljen sam njime. A esp će biti samo za posebne namjene - ne može zamijeniti klasični Arduino kod imalo zahtijevnijih projekata.
I ja sam primjetio da je webserver dosta los, ja sam gakoristio samo za ocitavanje podatka i ukljucivanje uradaja(manualno) znaci on/off i ispis podataka.
Radio je jako lose, kad sam ukljucivao uredaje:
1. ima dosta veliki lagg
2. nekad ih ni ne ukljuci
3. nekad mi ni webserver ne radi