Axamith
Vytvořené odpovědi
-
AutorPříspěvky
-
AxamithÚčastník
Děkuji moc, už objednávám. Někdy je problém správně pojmenovat, co hledáme. Ale souhlasím, velcí hráči na trhu a tak základní věc nenabízí.
AxamithÚčastníkNemyslel jsem další kabel, ale nový.
To vyjde na stejno, musel bych kopnout do zahrady, tedy si neoficiálně říci o rozvod 😀Tak pro GND využij ochranný zelenožlutý vodič PE a máš k dispozici všech 5 vodičů pro ventily.
To by mohlo být naprosto ideální řešení. Využití PE je jen funkční řešení, nebo odpovídá i normě? Přiznám se, že už mám vyhl. 50 nějakou dobu propadlou …AxamithÚčastníkDalší kabel neprotáhnu, je to takový hrubý krk a blbě se to tahalo i když to bylo relativně rovný, před zahrabáním do výkopu, bez zatáček. Nyní jsem bez šance. Samozřejmě by to bylo nejjednodušší řešení, ale mám smůlu, znovu to kopat nebudu (byl bych mrtvý muž …). Proto hledám další cestu. Vedení jsou jednotlivé žíly 1 mm2. Vedle tohoto krku leží druhý krk s vedením 230V na napájení čerpadla. Nemám představu, jak moc to může ovlivňovat indukce.
Co využít třeba takového bezdrátového modulu, to by na ten kousek mohlo šlapat relativně spolehlivě.AxamithÚčastníkUž jsem to pochopil, nějak mi to napoprvé nedocvaklo. Teď už jen vymyslet obslužný program a dořešit detaily HW.
AxamithÚčastníkJá potřebuji zcela nezávisle ovládat 5 ventilů. Nyní mám připojené 4 ventily, 5 vodičů. GND a 4x VCC. Řídící jednotka, která to ovládá dává na výstup 12V=. Co ventil, to jeden výstup.
Šlo by nějak využít releový modul ?
Ovládání přes Bluetooth není asi zrovna dobré řešení …?Ještě doplňuji, vzdálenost 15 metrů, přímá viditelnost. Délka vodičů, které mám nyní položeny je do 20 metrů, průřez 1 mm2.
AxamithÚčastníkNa UNO to jede, na Wemos jsem to ještě nerozchodil, páč nejsou lidi (čas) 😀
Zapojení a kód je v linku v mém prvním příspěvku, jen jsem displej připojil přes I2C a trochu upravil kód.P.S. zdravím kolegu včelaře 🙂
AxamithÚčastníkZkus dohledat, jestli jde Wemos do té aplikace doinstalovat. V klasickém IDE taky není obsaženo, musí se doinstalovat, viz. návod.
AxamithÚčastníkV Andoidu vůbec nic neprogramuješ. Program pro Wemos napíšeš klasicky v IDE, naměřená data pošleš přes wifi na web a v mobilu (Android) si jen zobrazuješ webovou stránku se zpracovanými daty.
Tady je hezky popsaný miniseriál o Wemos (a následující díly), dá se z toho mnohé pochopit a zdrojáky upravit podle vlastních potřeb.AxamithÚčastníkAč je to k nevíře, čtečka se probudila k životu. Koukl jsem na ni lupou s tím, že se podívám, co by se z ní dalo využít a rozeberu ji na díly. A našel jsem neproletovaný spoj. Kapka cínu a už jede 🙂
AxamithÚčastníkTak a mám jasno, problém byl v čtečce. Ač byla nová a nepoužitá, je mrtvá.
S jinou čtečkou vše jede jak má. Co já se nad tím natrápil …
Děkuji za konzultaci a pomoc s řešením problému.AxamithÚčastníkDíky, testnu to. Ale myslím, že problém bude s modulem. Zkoušel jsem jak na UNO, tak na Wemos a Pro mini a vždy se stejným výsledkem. Originální příklady k SD modulu. takže objednám nový modul a uvidíme.
AxamithÚčastníkAbych minimalizoval problémy s různým pochopením HW a SW, omezil jsem testování na UNO a originální příklady ke knihovně. UNO, napájené přes USB, SD modul připojen na GND a 5V,
CS – PIN 10
MOSI – PIN 11
MISO – PIN 12
SCK – PIN 13Kartu 4 GB jsem naformátoval pomocí SD Card Formatter, nastavení :
Format type – Full (OverWrite) // i když by stačilo QUICK
Format size adjustment – OFFSketch dle příkladu z knihovky SD – CardInfo:
/*
SD card testThis example shows how use the utility libraries on which the‘
SD library is based in order to get info about your SD card.
Very useful for testing a card when you’re not sure whether its working or not.The circuit:
* SD card attached to SPI bus as follows:
** MOSI – pin 11 on Arduino Uno/Duemilanove/Diecimila
** MISO – pin 12 on Arduino Uno/Duemilanove/Diecimila
** CLK – pin 13 on Arduino Uno/Duemilanove/Diecimila
** CS – depends on your SD card shield or module.
Pin 4 used here for consistency with other Arduino examplescreated 28 Mar 2011
by Limor Fried
modified 9 Apr 2012
by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#include <SD.h>// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 10;void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}Serial.print(„\nInitializing SD card…“);
// we’ll use the initialization code from the utility libraries
// since we’re just testing if the card is working!
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println(„initialization failed. Things to check:“);
Serial.println(„* is a card inserted?“);
Serial.println(„* is your wiring correct?“);
Serial.println(„* did you change the chipSelect pin to match your shield or module?“);
return;
} else {
Serial.println(„Wiring is correct and a card is present.“);
}// print the type of card
Serial.print(„\nCard type: „);
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println(„SD1“);
break;
case SD_CARD_TYPE_SD2:
Serial.println(„SD2“);
break;
case SD_CARD_TYPE_SDHC:
Serial.println(„SDHC“);
break;
default:
Serial.println(„Unknown“);
}// Now we will try to open the ‚volume’/’partition‘ – it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println(„Could not find FAT16/FAT32 partition.\nMake sure you’ve formatted the card“);
return;
}// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print(„\nVolume type is FAT“);
Serial.println(volume.fatType(), DEC);
Serial.println();volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we’ll have a lot of clusters
volumesize *= 512; // SD card blocks are always 512 bytes
Serial.print(„Volume size (bytes): „);
Serial.println(volumesize);
Serial.print(„Volume size (Kbytes): „);
volumesize /= 1024;
Serial.println(volumesize);
Serial.print(„Volume size (Mbytes): „);
volumesize /= 1024;
Serial.println(volumesize);Serial.println(„\nFiles found on the card (name, date and size in bytes): „);
root.openRoot(volume);// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}void loop(void) {
}
a výsledek:
Initializing SD card…initialization failed. Things to check:
* is a card inserted?
* is your wiring correct?
* did you change the chipSelect pin to match your shield or module?Pro klid duše jsem dal i nové propojovací kabely, vyzkoušel SS piny č. 4, 8, 10 (i když u UNA je jasné, že 4 a 8 je blbost), opět bez výsledku. Taková kravina jako SD karta a co já na tom strávil času … a bez výsledku.
AxamithÚčastníkAhoj, mám čtečku Micro SD.
Použil jsem krom jiných tuto sketch:
// created 28 Mar 2011
// by Limor Fried
// modified 9 Apr 2012
// by Tom Igoe
// modifed 23.3.2013
// by Pavel Putna#include <SD.h>
// nastaví proměné pro info karty
Sd2Card card;
SdVolume volume;
SdFile root;// nastavte správně
// Arduino Ethernet shield: pin 4 – náš případ
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = SS;void setup()
{
Serial.begin(9600);Serial.print(„\nInicializace SD karty…“);
pinMode(4, OUTPUT);// inicializace
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println(„\nPametova karta nebyla detekovana“);
return;
} else {
Serial.println(„\nPametova karta nalezena.“);
}// Určí typ karty
Serial.print(„\nTyp karty: „);
switch(card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println(„SD1“);
break;
case SD_CARD_TYPE_SD2:
Serial.println(„SD2“);
break;
case SD_CARD_TYPE_SDHC:
Serial.println(„SDHC“);
break;
default:
Serial.println(„Neznama“);
}// Now we will try to open the ‚volume’/’partition‘ – it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println(„System souboru FAT16/FAT32 nenalezen.\nZkuste naformatovat kartu“);
return;
}// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print(„\nVolume type is FAT“);
Serial.println(volume.fatType(), DEC);
Serial.println();volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we’ll have a lot of clusters
volumesize *= 512; // SD card blocks are always 512 bytes
Serial.print(„Volume size (bytes): „);
Serial.println(volumesize);
Serial.print(„Volume size (Kbytes): „);
volumesize /= 1024;
Serial.println(volumesize);
Serial.print(„Volume size (Mbytes): „);
volumesize /= 1024;
Serial.println(volumesize);Serial.println(„\nNalezene soubory na karte (nazev, datum a velikost v bajtech): „);
root.openRoot(volume);// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}void loop(void) {
}Čtečku jsem zkoušel jak na Pro mini, tak na UNO a Wemos D1. Vím, že je třeba definovat vstup na Arduinu pinu. Volba 4, 8, 10 (dle Arduina). NIC nejede, ani volba SS. Nebo spíš ji detekuje, nenajde FAT a veškeré pokusy s kartou z příkladů z knihoven nejedou, respektive s kartou nekomunikují. Koupil jsem i novou kartu, pro klid duše, pořád bez výsledků. Buď kartu nedetekuje, nebo ji detekuje a nerozpozná FAT16/32
AxamithÚčastníkKdyž jsem na Wemos zapojil výstup z HX711 na A0 a D1, tak to nejelo. Samozřejmě jsem upravil zdroják. Musím to ještě vyzkoušet. Nejlépe na UNo (kde vím, že to jede) přehodit vstup na D1, D2 a uvidím, co mi to vysype.
AxamithÚčastníkNašel jsem ještě jeden zajímavý článek o propojení 4 senzorů s třemi vývody do můstku.
http://mikroelectron.com/Product/Human-scale-load-cell-sensor-50kg/AxamithÚčastníkJeště jsem trochu prohledával své uložené linky. Tady je velmi detailně vysvětlena problematika vážení tenzometry, zpracování signálů, ukázkové kódy atd.
Tady je další skvělý článek o speciální desce OpenScale, určené přímo ke zpracování signálu z tenzometrů a teplotního čidla.
Deska není zrovna levná, OpenScale na eBay, ale zřejmě to bude slušný výrobek. Zde je kompletní dokumentace. nemám s tím žádnou zkušenost, ale možná se někdy odhodlám a zkusím ji pořídit.
AxamithÚčastníkMám mezery ve vzdělání, nevím, co to jsou plynové váhy. Ale i tak, nechci se vyjadřovat ke kvalitě konkrétního senzoru, na to nejsem odborník ani náhodou.
Tento typ senzoru se podepře na jednom konci a tlačí se na druhý, při deformaci se mění hodnota odporů v můstku tenzometru. Na tomto videu je to hezky vidět, jak má být upnutý (čas cca 4:15) https://www.youtube.com/watch?v=bylvdyOefXoAxamithÚčastníkNejsem žádný odborník na tenzometry, jen jsem si s nimi chvíli hrál a laboroval, trochu hledal informace. Podle výše uvedeného linku jsem rozchodil měření se zobrazením na serial monitor, víc jsem si s tím nehrál, nebyl čas.
Problematika tenzometrů je trochu složitější, než se zdá. Levné nesnesou dlouhodobější (trvalou) zátěž. Tedy když je na váze dlouhodobě závaží. Tohle tenzometr za 50,- neumí, je mechanicky slabý. Další problém je tzv. tečení, má to zase spojitost s mechanikou. Jde o deformaci zatížením. Aby toho nebylo málo, do toho ještě vstupuje teplota, při pokojové teplotě je to OK, s klesající dochází k chybě měření, řádově až o celá % (bez vlastní praxe, vyčteno).
Většinu z toho lze řešit pořádným tenzometrem. Dříve se na větší hmotnosti používal pákový mechanizmus, např. 1:10. takže snímač 2 kg přes páku snímal 200 kg. To už ustupuje do pozadí, nyní jsou k dispozici snímače na desítky i stovky kg za rozumnou cenu. Ale určitě bych si pořídil snímač s větším mechanickým profilem, např. 30×30 mm, délku 120-150 mm. Samozřejmě s ohledem na požadované zatížení, na 0,5 kg není třeba takový macek, na 150 kg bych už takový pořídil. Cena kolem 1000,- a výše. Nemá smysl na tom výrazně šetřit, pokud to není jen na hraní a má to být skutečná váha.AxamithÚčastníkV podstatě jsem nenašel nic jiného na tří vodičové zapojení, než máš ty https://i.stack.imgur.com/xYqBx.jpg
Obecně se tenzometry používají se 4 vývody, ty se třemi jsou taková laciná náhražka. Doplňkové odpory (jejich kvalita) budou dost výrazně ovlivňovat výsledné měření.
Tady je hotové řešení, která krom klasického 4 vývodového tenzemetru využívá i 3 vývody. https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide
Se 4 vývody mi to jelo na první dobrou.
Na co to chceš používat. Ty hodně laciné tenzometry nejsou žádná sláva, zkus provést několik měření se stejným závažím a uvidíš rozdíly. A zkus to samé při různých teplotách. Budeš se hodně divit, pro rozumnou aplikaci, která má dávat slušné výsledky je potřeba trochu slušné snímače.AxamithÚčastníkTrefa do černého, byla to adresa. Už svítíme, zobrazujeme (já a displej) 🙂
a hlavně se učíme.AxamithÚčastníkPřikládám foto čipu sběrnice. Ještě bych se rád zeptal, k čemu jsou piny A0, A1, A2 na desce sběrnice, viz. foto.
Attachments:
AxamithÚčastníkTyp čipu (jejda, tam je písmenek):
PCF8574AT
AQ0675
1 21
kn04203Program jsem zkoušel podle LCD Displej.
Kód:// LCD displej pres I2C // navody.arduino-shop.cz // knihovny pro LCD přes I2C #include <Wire.h> #include <LiquidCrystal_I2C.h> // nastavení adresy I2C (0x27 v mém případě), // a dále počtu znaků a řádků LCD, zde 20x4 LiquidCrystal_I2C lcd(0x27, 20, 4); void setup() { // inicializace LCD lcd.begin(); // zapnutí podsvícení lcd.backlight(); // vytisknutí hlášky na první řádek lcd.print("->arduino-shop.cz<-"); // nastavení kurzoru na první znak, druhý řádek // veškeré číslování je od nuly, poslední znak je tedy 19, 3 lcd.setCursor ( 0, 1 ); lcd.print("--------------------"); lcd.setCursor ( 0, 2); lcd.print(" Test LCD pres I2C"); lcd.setCursor ( 19, 3); lcd.print("!"); delay(2000); } void loop() { // nastavení kurzoru na devátý znak, druhý řádek lcd.setCursor(8, 1); // vytisknutí počtu sekund od začátku programu lcd.print(millis() / 1000); }
V každém případě mi není jasné, jestli má displej zobrazovat 2 řádky ze 4, už jen při připojeném napájení (ten počet je taky takový divný). Trimrem jsem schopen regulovat jas, od úplně tmavých čtverců po čistě prázdný displej. Propojkou na I2C zapnout/vypnout podsvícení.
AxamithÚčastníkAhoj, mám podobný problém, LCD 20×4, v podstatě základní kód, IC2.
Displej ale jen svítí a zobrazuje vyplněné čtverce. Dokonce jen 20×2 místo 20×4, jako by sudé řádky chyběly. Nastavení jasu trimrem nepomůže, zobrazuje od úplně tmavých čtverců o prázdný displej.. Testováno po IC2, na přímo zatím ne. Svítí takto i při jen připojeném napájení, bez sběrnice. Je to normální? Foceno s vypnutým podsvícením.Attachments:
AxamithÚčastníkAhoj, díky za reakci. Pochopil jsi o co mi jde. Komunikační vzdálenost by byla cca do 20 metrů, spíše méně. Vyčetl jsem že 433 MHz Rx, Tx jede za ideálních podmínek do cca 50 metrů, takže by to bylo dostačující. Tady je slušný popis s příkladem. Arduino Mini či nějaké jiné mrňavé jako mozek.
Jen ten otřesový snímač vidím jako problém. Jde o jeho citlivost. Na videu je vidět, jak moc musí být nakloněn, aby dal signál. Takhle nikdo úl při krádeži nebude nakláněk. Někdy se také kradou jen rámky s medem, takže otevře úl, vybere co chce a zavře. Otřesové čidlo by nemuselo vůbec zareagovat. Výše navrhovaný MPU-6050 je mnohem citlivější. Určitě by bylo dobré SW vyřešit falešné poplachy, drobné otřesy. V podstatě by fungoval jako spínač, vyhodnocování náklonů jednotlivých os není třeba, prostě stav 0/1, s vyhodnocením fal. poplachů.
Jednotlivé satelity by tedy pouze čekaly na narušení a následně odeslaly info základní jednotce. 1x za 24 hod. info o svém stavu a stavu baterie.
Základní jednotka by čekala na info o narušení a již zmíněné hlášení o stavu satelitů + meteo hlášení. Napájení přes FV panel vidím jako problém. Jsou to dráty, které musí vést do dna úlu, ty mohou být v průběhu sezón různě vysoké. Nabízí se možnost nalepit FV na přední čelo první bedny nade dnem. Ale úly jsou často v zarostlém prostředí, takže slunce se nemusí k panelu dostatečně dostat. Toto bych řešil asi až podle otestované výdrže konkrétní baterie. Určitě bych nepřipojoval zbytečné periferie, které nejsou nutné a žerou baterii.Axamith
-
AutorPříspěvky