- iPhone topik
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Google Pixel topik
- Profi EKG-s óra lett a Watch Fitből
- Magyarított Android alkalmazások
- Mobil flották
- One mobilszolgáltatások
- Magisk
- Samsung Galaxy Watch5 Pro - kerek, de nem tekerek
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
-
Mobilarena
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
-
Janos250
őstag
Itt jobban értenek hozzá:
https://prohardver.hu/tema/okos_otthon_smart_home/friss.html -
Bazs87
tag
Sziasztok!
HW: sonoff basic R1
Cél: home assistant kompatibilis kapcsoló lehetőleg availability_topic lehetőségévelpróbálkoztam eddig ezekkel:
- tasmota ( úgy gyanítom nem kompatibilis, a listán csak az R2 szerepel)
- espeasy (az ap itt sem állt fel, valszeg ez sem kompatibilis)
- homie - szépen működik, de nem találok rendes példát rá - még ha egy egyszerű dologról is van szó (itt ugye a teljes alap funkcionalitást kellene megírni, továbbá valahogy az elérhetőség kérdését megoldani)a hw tesztelve, hibamentesen működik.
nincs esetleg vmi tippetek? -
sad_Vamp
őstag
válasz
Janos250 #9794 üzenetére
Köszönöm a könyveket, belenézek mindenképp!
Viszont őszintén bevallva, nem akarok megtanulni komplett programozni, csak 1 LEDstrip miatt.... ha sima analóg RGB-ben létezne 144LED/m sűrűségű strip -tudtommal nincs- akkor nem is gondolkodnék az egészen.Nekem erre az 1 dologra lenne szükségem.... esetlegesen a színek változnának (meg az LEDek száma és elhelyezkedésre). Semmi mélyebbet nem szeretnék kihozni a dologból.
-
Janos250
őstag
válasz
sad_Vamp #9792 üzenetére
Na, ez nehéz lesz, mert ennek a szalagnak a vezérlése nem a legegyszerűbb feladat.
Könyv Arduinohoz persze van, de az még nem a LED szalag, viszont ha megtanulsz programozni, akkor utána már fel tudod tölteni tömbökbe amit ki akarsz vinni, miegymás.
Pár példa:
http://longfiles.com/3631nxmxkq9a/Arduino_for_Beginners_Step-by-Step_Guide_to_Arduino_(Arduino_Hardware_&_Software)_[Kindle_Edition].azw3.html
http://longfiles.com/2lspiyw9nsy0/Arduino_For_Dummies_(For_Dummies_(Computertech)).epub.html
http://longfiles.com/21sl2z8s86sq/Arduino_The_Essential_Step_by_Step_Guide_to_Begin_Your_Own_Projects_(DIY_Programming_Projects,_STEM).mobi.html
http://longfiles.com/yy4t5cy1ei7w/Arduino_Simple_and_Effective_Strategies_to_Learn_Arduino_Programming.azw3.htmlHa nem boldogulsz a fájl formátumával, akor "calibre" a bűvszó
-
szuszinho
őstag
Sziasztok,
Készített már valaki SSR relét vezérlő PID-et?
-
sad_Vamp
őstag
Sziasztok!
Arduino UNO (ch34s - vezérlős kínai copy) -val szeretnék vezérelni 37drb Ledet a ws2812b led stripből.
A terv az lenne hogy 1 (esetleg 2 nyomógomb) segítségével körbe váltogatni:1. szín (piros)
2. szín (legyen pl lila)
3. szín (legyen pl narancs)
4. pulzáló piros
5. vlm féle mozgó színátmenet
6. LED kikapcsA probléma ott van, hogy nem értek a programozáshoz egyáltalán, az Arduino progiból alap sketcheket rá tudtam tölteni a gépre, meg olvastam hogy valami FASTLED könyvtárt érdemes nézegetni, de azon már totál nem igazodtam el. Mivel az arduino sketch file az 1 darab volt, ez meg egy csomó file...
Fontos dolog még a fogyasztás, szerintetek meddig működhet az ilyen 4 ceruza elemről? (valószínűleg nem is kéne full erőn világítani a ledeknek)
Lenne valaki hajlandó segíteni egy totál noob-nak?
Ha nem esetleg tudtok ajánlani vlmi útmutatót "for absolute dummies" ez ügyben?
-
olli
tag
Az Arduino IDE 1.8.7 verziót egyedül feltelepítve a DUE lappal futnak a beépített példák?
Ha az megy, az innen-onnan leszedettek meg nem, nyilván rossz a forrás, a hibaüzenetek segíthetnek.
Most megnéztem DUE-re egy saját programot, dobott egy csomó hibát, de tudom, hogy Mega-hoz vannak könyvtárak telepítve, azokat kellene törölni. -
-
olli
tag
[CODE// URTouch_ButtonTest
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// This program is a quick demo of how create and use buttons.
//
// This program requires the UTFT library.
//
// It is assumed that the display module is connected to an
// appropriate shield or that you know how to change the pin
// numbers in the setup.
//#include <UTFT.h>
#include <URTouch.h>// Initialize display
// ------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield : <display model>,19,18,17,16
// Standard Arduino Mega/Due shield : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Due : <display model>,25,26,27,28
// Teensy 3.x TFT Test Board : <display model>,23,22, 3, 4
// ElecHouse TFT LCD/SD Shield for Arduino Due : <display model>,22,23,31,33
//
// Remember to change the model parameter to suit your display module!
UTFT myGLCD(CTE32,25,26,27,28);// Initialize touchscreen
// ----------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield : 15,10,14, 9, 8
// Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2
// CTE TFT LCD/SD Shield for Arduino Due : 6, 5, 32, 3, 2
// Teensy 3.x TFT Test Board : 26,31,27,28,29
// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30
//
URTouch myTouch( 6, 5, 32, 3, 2);// Declare which fonts we will be using
extern uint8_t BigFont[];int x, y;
char stCurrent[20]="";
int stCurrentLen=0;
char stLast[20]="";/*************************
** Custom functions **
*************************/void drawButtons()
{
// Draw the upper row of buttons
for (x=0; x<5; x++)
{
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10+(x*60), 10, 60+(x*60), 60);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10+(x*60), 10, 60+(x*60), 60);
myGLCD.printNumI(x+1, 27+(x*60), 27);
}
// Draw the center row of buttons
for (x=0; x<5; x++)
{
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10+(x*60), 70, 60+(x*60), 120);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10+(x*60), 70, 60+(x*60), 120);
if (x<4)
myGLCD.printNumI(x+6, 27+(x*60), 87);
}
myGLCD.print("0", 267, 87);
// Draw the lower row of buttons
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10, 130, 150, 180);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10, 130, 150, 180);
myGLCD.print("Clear", 40, 147);
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (160, 130, 300, 180);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (160, 130, 300, 180);
myGLCD.print("Enter", 190, 147);
myGLCD.setBackColor (0, 0, 0);
}void updateStr(int val)
{
if (stCurrentLen<20)
{
stCurrent[stCurrentLen]=val;
stCurrent[stCurrentLen+1]='\0';
stCurrentLen++;
myGLCD.setColor(0, 255, 0);
myGLCD.print(stCurrent, LEFT, 224);
}
else
{
myGLCD.setColor(255, 0, 0);
myGLCD.print("BUFFER FULL!", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
delay(500);
myGLCD.print("BUFFER FULL!", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
myGLCD.setColor(0, 255, 0);
}
}// Draw a red frame while a button is touched
void waitForIt(int x1, int y1, int x2, int y2)
{
myGLCD.setColor(255, 0, 0);
myGLCD.drawRoundRect (x1, y1, x2, y2);
while (myTouch.dataAvailable())
myTouch.read();
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (x1, y1, x2, y2);
}/*************************
** Required functions **
*************************/void setup()
{
// Initial setup
myGLCD.InitLCD();
myGLCD.clrScr();myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);myGLCD.setFont(BigFont);
myGLCD.setBackColor(0, 0, 255);
drawButtons();
}void loop()
{
while (true)
{
if (myTouch.dataAvailable())
{
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();if ((y>=10) && (y<=60)) // Upper row
{
if ((x>=10) && (x<=60)) // Button: 1
{
waitForIt(10, 10, 60, 60);
updateStr('1');
}
if ((x>=70) && (x<=120)) // Button: 2
{
waitForIt(70, 10, 120, 60);
updateStr('2');
}
if ((x>=130) && (x<=180)) // Button: 3
{
waitForIt(130, 10, 180, 60);
updateStr('3');
}
if ((x>=190) && (x<=240)) // Button: 4
{
waitForIt(190, 10, 240, 60);
updateStr('4');
}
if ((x>=250) && (x<=300)) // Button: 5
{
waitForIt(250, 10, 300, 60);
updateStr('5');
}
}if ((y>=70) && (y<=120)) // Center row
{
if ((x>=10) && (x<=60)) // Button: 6
{
waitForIt(10, 70, 60, 120);
updateStr('6');
}
if ((x>=70) && (x<=120)) // Button: 7
{
waitForIt(70, 70, 120, 120);
updateStr('7');
}
if ((x>=130) && (x<=180)) // Button: 8
{
waitForIt(130, 70, 180, 120);
updateStr('8');
}
if ((x>=190) && (x<=240)) // Button: 9
{
waitForIt(190, 70, 240, 120);
updateStr('9');
}
if ((x>=250) && (x<=300)) // Button: 0
{
waitForIt(250, 70, 300, 120);
updateStr('0');
}
}if ((y>=130) && (y<=180)) // Upper row
{
if ((x>=10) && (x<=150)) // Button: Clear
{
waitForIt(10, 130, 150, 180);
stCurrent[0]='\0';
stCurrentLen=0;
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect(0, 224, 319, 239);
}
if ((x>=160) && (x<=300)) // Button: Enter
{
waitForIt(160, 130, 300, 180);
if (stCurrentLen>0)
{
for (x=0; x<stCurrentLen+1; x++)
{
stLast[x]=stCurrent[x];
}
stCurrent[0]='\0';
stCurrentLen=0;
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect(0, 208, 319, 239);
myGLCD.setColor(0, 255, 0);
myGLCD.print(stLast, LEFT, 208);
}
else
{
myGLCD.setColor(255, 0, 0);
myGLCD.print("BUFFER EMPTY", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
delay(500);
myGLCD.print("BUFFER EMPTY", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
myGLCD.setColor(0, 255, 0);
}
}
}
}
}
}
]URTouch.h
/*
URTouch.h - Arduino/chipKit library support for Color TFT LCD Touch screens
Copyright (C)2016 Rinky-Dink Electronics, Henning Karlsen. All right reservedBasic functionality of this library are based on the demo-code provided by
ITead studio.You can find the latest version of the library at
http://www.RinkyDinkElectronics.com/This library is free software; you can redistribute it and/or
modify it under the terms of the CC BY-NC-SA 3.0 license.
Please see the included documents for further information.Commercial use of this library requires you to buy a license that
will allow commercial use. This includes using the library,
modified or not, as a tool to sell products.The license applies to all part of the library including the
examples and tools supplied with the library.
*/#ifndef URTouch_h
#define URTouch_h#define URTOUCH_VERSION 201
#if defined(__AVR__)
#include "Arduino.h"
#include "hardware/avr/HW_AVR_defines.h"
#elif defined(__PIC32MX__)
#include "WProgram.h"
#include "hardware/pic32/HW_PIC32_defines.h"
#elif defined(__arm__)
#include "Arduino.h"
#include "hardware/arm/HW_ARM_defines.h"
#endif#define PORTRAIT 0
#define LANDSCAPE 1#define PREC_LOW 1
#define PREC_MEDIUM 2
#define PREC_HI 3
#define PREC_EXTREME 4class URTouch
{
public:
int16_t TP_X ,TP_Y;URTouch(byte tclk, byte tcs, byte tdin, byte dout, byte irq);
void InitTouch(byte orientation = LANDSCAPE);
void read();
bool dataAvailable();
int16_t getX();
int16_t getY();
void setPrecision(byte precision);void calibrateRead();
private:
regtype *P_CLK, *P_CS, *P_DIN, *P_DOUT, *P_IRQ;
regsize B_CLK, B_CS, B_DIN, B_DOUT, B_IRQ;
byte T_CLK, T_CS, T_DIN, T_DOUT, T_IRQ;
long _default_orientation;
byte orient;
byte prec;
byte display_model;
long disp_x_size, disp_y_size, default_orientation;
long touch_x_left, touch_x_right, touch_y_top, touch_y_bottom;void touch_WriteData(byte data);
word touch_ReadData();#if defined(ENERGIA)
volatile uint32_t* portOutputRegister(int value);
volatile uint32_t* portInputRegister(int value);
#endif
};#endif
-
tvamos
nagyúr
válasz
Janos250 #9781 üzenetére
Hello!
Ma egy olyan problemaba utkoztem, hogy ujra kellett telepitenem az Arduino frameworkot, es a ESP32 OLED V2.0 TTGO modulomon szetesett a kep. Ugy ertem, hogy eddig kiirtam a kijelzore az IP-t, meg hogy mit szereten a szamitogep tole, de most nincs kep rajta.
Nem tudja valaki a megoldast? Mit rontottam el? Minden lefordul hiba nelkul. -
Janos250
őstag
válasz
Pubszon #9780 üzenetére
Jó leírást nem tudok, de egy ESP8266-ra készült egyszerű nyomásmérő programot tettem fel mintának. A program ESP8266-on fut, mert hozzá az UNO már teljesen felesleges. Talán érthető a program, ha nem, akkor bocs, és sztorno.
http://arduinouser.hu/mintak_esp8266_ra/nyomasmero_minta_esp8266/nyomasmero_minta_esp8266.ino.txtTehát az UNO+ESP01 helyett javasolom egy ESP12 használatát. A feltett program is azon futott hajdanában, mikor használtam. (Kiírta telefonra a benzinnyomást - illetve egy kódolt értéket - hogy figyelni tudjam a benzinpumpa működését).
-
Pubszon
veterán
Üdv.
Arduino uno és ilyen ESP8266 modul, az 5V-os panellal.
Ezekkel szeretnék egy egyszerű HTML WEB lapot, amire kiíratok néhány egyszerű adatot.
Van egy jó és lehetőleg egyszerű leírás?
Köszi.
-
tvamos
nagyúr
válasz
DrojDtroll #9778 üzenetére
Frankó.
-
DrojDtroll
veterán
válasz
fpeter84 #9763 üzenetére
A robot beállítása és futtatott program alapján nagyon pontosan kiszámolom a koordinátákat. Mozgás közben folyamatosan mérem és logolom az elfordulást és a lineáris gyorsulást. A mért adatokból kiszámolom azt hogy ténylegesen, hol is van a fej, és ezt hasonlítom az elvártakhoz.
Ezt szeretném megvalósítani.
-
olli
tag
// Standard Arduino Mega/Due shield : <display model>,38,39,40,41
UTFT myGLCD(SSD1963_800480,38,39,40,41); //(byte model, int RS, int WR, int CS, int RST, int SER)UTouch myTouch( 43, 42, 44, 45, 46); //byte tclk, byte tcs, byte din, byte dout, byte irq
Ezekkel a beállításokkal?
A DUE-nak saját
#include <UTFT.h>
#include <URTouch.h>
könyvtára van. -
cont
újonc
válasz
fpeter84 #9771 üzenetére
Nem, ezt a beállítást a szerző javasolta, mert kompatíbilis az SSD1963-mal. De az SSD1963-at is beállítottam a programban, ugyanaz a jelenség.
A legutolsó próba ezzel a beállítással futott:
// UTouch_ButtonTest (C)2010-2014 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// This program is a quick demo of how create and use buttons.
//
// This program requires the UTFT library.
//
// It is assumed that the display module is connected to an
// appropriate shield or that you know how to change the pin
// numbers in the setup.
//
#include <UTFT.h>
#include <UTouch.h>
// Initialize display
// ------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield : <display model>,19,18,17,16
// Standard Arduino Mega/Due shield : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Due : <display model>,25,26,27,28
// Teensy 3.x TFT Test Board : <display model>,23,22, 3, 4
// ElecHouse TFT LCD/SD Shield for Arduino Due : <display model>,22,23,31,33
//
// Remember to change the model parameter to suit your display module!
//UTFT myGLCD(ITDB50,38,39,40,41);
UTFT myGLCD(SSD1963_800,19,18,17,16);
// Initialize touchscreen
// ----------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield : 15,10,14, 9, 8
// Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2
// CTE TFT LCD/SD Shield for Arduino Due : 6, 5, 4, 3, 2
// Teensy 3.x TFT Test Board : 26,31,27,28,29
// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30
//
UTouch myTouch( 6, 5, 4, 3, 2);
// Declare which fonts we will be using
extern uint8_t BigFont[];
int x, y;
char stCurrent[20]="";
int stCurrentLen=0;
char stLast[20]="";
/*************************
** Custom functions **
*************************/
void drawButtons()
{
// Draw the upper row of buttons
for (x=0; x<5; x++)
{
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10+(x*60), 10, 60+(x*60), 60);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10+(x*60), 10, 60+(x*60), 60);
myGLCD.printNumI(x+1, 27+(x*60), 27);
}
// Draw the center row of buttons
for (x=0; x<5; x++)
{
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10+(x*60), 70, 60+(x*60), 120);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10+(x*60), 70, 60+(x*60), 120);
if (x<4)
myGLCD.printNumI(x+6, 27+(x*60), 87);
}
myGLCD.print("0", 267, 87);
// Draw the lower row of buttons
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10, 130, 150, 180);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10, 130, 150, 180);
myGLCD.print("Clear", 40, 147);
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (160, 130, 300, 180);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (160, 130, 300, 180);
myGLCD.print("Enter", 190, 147);
myGLCD.setBackColor (0, 0, 0);
}
void updateStr(int val)
{
if (stCurrentLen<20)
{
stCurrent[stCurrentLen]=val;
stCurrent[stCurrentLen+1]='\0';
stCurrentLen++;
myGLCD.setColor(0, 255, 0);
myGLCD.print(stCurrent, LEFT, 224);
}
else
{
myGLCD.setColor(255, 0, 0);
myGLCD.print("BUFFER FULL!", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
delay(500);
myGLCD.print("BUFFER FULL!", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
myGLCD.setColor(0, 255, 0);
}
}
// Draw a red frame while a button is touched
void waitForIt(int x1, int y1, int x2, int y2)
{
myGLCD.setColor(255, 0, 0);
myGLCD.drawRoundRect (x1, y1, x2, y2);
while (myTouch.dataAvailable())
myTouch.read();
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (x1, y1, x2, y2);
}
/*************************
** Required functions **
*************************/
void setup()
{
// Initial setup
myGLCD.InitLCD();
myGLCD.clrScr();
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
myGLCD.setFont(BigFont);
myGLCD.setBackColor(0, 0, 255);
drawButtons();
}
void loop()
{
while (true)
{
if (myTouch.dataAvailable())
{
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();
if ((y>=10) && (y<=60)) // Upper row
{
if ((x>=10) && (x<=60)) // Button: 1
{
waitForIt(10, 10, 60, 60);
updateStr('1');
}
if ((x>=70) && (x<=120)) // Button: 2
{
waitForIt(70, 10, 120, 60);
updateStr('2');
}
if ((x>=130) && (x<=180)) // Button: 3
{
waitForIt(130, 10, 180, 60);
updateStr('3');
}
if ((x>=190) && (x<=240)) // Button: 4
{
waitForIt(190, 10, 240, 60);
updateStr('4');
}
if ((x>=250) && (x<=300)) // Button: 5
{
waitForIt(250, 10, 300, 60);
updateStr('5');
}
}
if ((y>=70) && (y<=120)) // Center row
{
if ((x>=10) && (x<=60)) // Button: 6
{
waitForIt(10, 70, 60, 120);
updateStr('6');
}
if ((x>=70) && (x<=120)) // Button: 7
{
waitForIt(70, 70, 120, 120);
updateStr('7');
}
if ((x>=130) && (x<=180)) // Button: 8
{
waitForIt(130, 70, 180, 120);
updateStr('8');
}
if ((x>=190) && (x<=240)) // Button: 9
{
waitForIt(190, 70, 240, 120);
updateStr('9');
}
if ((x>=250) && (x<=300)) // Button: 0
{
waitForIt(250, 70, 300, 120);
updateStr('0');
}
}
if ((y>=130) && (y<=180)) // Upper row
{
if ((x>=10) && (x<=150)) // Button: Clear
{
waitForIt(10, 130, 150, 180);
stCurrent[0]='\0';
stCurrentLen=0;
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect(0, 224, 319, 239);
}
if ((x>=160) && (x<=300)) // Button: Enter
{
waitForIt(160, 130, 300, 180);
if (stCurrentLen>0)
{
for (x=0; x<stCurrentLen+1; x++)
{
stLast[x]=stCurrent[x];
}
stCurrent[0]='\0';
stCurrentLen=0;
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect(0, 208, 319, 239);
myGLCD.setColor(0, 255, 0);
myGLCD.print(stLast, LEFT, 208);
}
else
{
myGLCD.setColor(255, 0, 0);
myGLCD.print("BUFFER EMPTY", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
delay(500);
myGLCD.print("BUFFER EMPTY", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
myGLCD.setColor(0, 255, 0);
}
}
}
}
}
} -
fpeter84
senior tag
-
cont
újonc
Szervusztok!
Segítségeteket kérem.
Összeállítás:
- ER-AS-SSD1963 LCD érintőképernyő meghajtó Arduino shield
[https://www.buydisplay.com/arduino/ER-AS-SSD1963_Datasheet.pdf][link]- ER-TFTM070-4V2.1 TFT LCD modul
[https://www.buydisplay.com/download/manual/ER-TFTM070-4V2.1_Datasheet.pdf][link]- Arduino DUE
Több szoftvert is feltöltöttem az Arduinora, de egyikkel sem működik. A háttérvilágítás megy, de a képernyő sötét marad és csak akkor jelenik meg egy pillanatkép, ha az alaplap vagy a shield RESET gombját megnyomom. A szoftverek hibakód nélkül lefutottak. Mi lehet a probléma, hogy tudom elhárítani?
Ez a szoftver, amit a GitHubról töltöttem le:
// UTouch_ButtonTest (C)2010-2014 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// This program is a quick demo of how create and use buttons.
//
// This program requires the UTFT library.
//
// It is assumed that the display module is connected to an
// appropriate shield or that you know how to change the pin
// numbers in the setup.
//#include <UTFT.h>
#include <UTouch.h>// Initialize display
// ------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield : <display model>,19,18,17,16
// Standard Arduino Mega/Due shield : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Due : <display model>,25,26,27,28
// Teensy 3.x TFT Test Board : <display model>,23,22, 3, 4
// ElecHouse TFT LCD/SD Shield for Arduino Due : <display model>,22,23,31,33
//
// Remember to change the model parameter to suit your display module!
UTFT myGLCD(ITDB50,38,39,40,41);
//UTFT myGLCD(SSD1963_800,19,18,17,16);
// Initialize touchscreen
// ----------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield : 15,10,14, 9, 8
// Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2
// CTE TFT LCD/SD Shield for Arduino Due : 6, 5, 4, 3, 2
// Teensy 3.x TFT Test Board : 26,31,27,28,29
// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30
//
UTouch myTouch( 6, 5, 4, 3, 2);// Declare which fonts we will be using
extern uint8_t BigFont[];int x, y;
char stCurrent[20]="";
int stCurrentLen=0;
char stLast[20]="";/*************************
** Custom functions **
*************************/void drawButtons()
{
// Draw the upper row of buttons
for (x=0; x<5; x++)
{
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10+(x*60), 10, 60+(x*60), 60);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10+(x*60), 10, 60+(x*60), 60);
myGLCD.printNumI(x+1, 27+(x*60), 27);
}
// Draw the center row of buttons
for (x=0; x<5; x++)
{
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10+(x*60), 70, 60+(x*60), 120);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10+(x*60), 70, 60+(x*60), 120);
if (x<4)
myGLCD.printNumI(x+6, 27+(x*60), 87);
}
myGLCD.print("0", 267, 87);
// Draw the lower row of buttons
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (10, 130, 150, 180);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (10, 130, 150, 180);
myGLCD.print("Clear", 40, 147);
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (160, 130, 300, 180);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (160, 130, 300, 180);
myGLCD.print("Enter", 190, 147);
myGLCD.setBackColor (0, 0, 0);
}void updateStr(int val)
{
if (stCurrentLen<20)
{
stCurrent[stCurrentLen]=val;
stCurrent[stCurrentLen+1]='\0';
stCurrentLen++;
myGLCD.setColor(0, 255, 0);
myGLCD.print(stCurrent, LEFT, 224);
}
else
{
myGLCD.setColor(255, 0, 0);
myGLCD.print("BUFFER FULL!", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
delay(500);
myGLCD.print("BUFFER FULL!", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
myGLCD.setColor(0, 255, 0);
}
}// Draw a red frame while a button is touched
void waitForIt(int x1, int y1, int x2, int y2)
{
myGLCD.setColor(255, 0, 0);
myGLCD.drawRoundRect (x1, y1, x2, y2);
while (myTouch.dataAvailable())
myTouch.read();
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (x1, y1, x2, y2);
}/*************************
** Required functions **
*************************/void setup()
{
// Initial setup
myGLCD.InitLCD();
myGLCD.clrScr();myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);myGLCD.setFont(BigFont);
myGLCD.setBackColor(0, 0, 255);
drawButtons();
}void loop()
{
while (true)
{
if (myTouch.dataAvailable())
{
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();if ((y>=10) && (y<=60)) // Upper row
{
if ((x>=10) && (x<=60)) // Button: 1
{
waitForIt(10, 10, 60, 60);
updateStr('1');
}
if ((x>=70) && (x<=120)) // Button: 2
{
waitForIt(70, 10, 120, 60);
updateStr('2');
}
if ((x>=130) && (x<=180)) // Button: 3
{
waitForIt(130, 10, 180, 60);
updateStr('3');
}
if ((x>=190) && (x<=240)) // Button: 4
{
waitForIt(190, 10, 240, 60);
updateStr('4');
}
if ((x>=250) && (x<=300)) // Button: 5
{
waitForIt(250, 10, 300, 60);
updateStr('5');
}
}if ((y>=70) && (y<=120)) // Center row
{
if ((x>=10) && (x<=60)) // Button: 6
{
waitForIt(10, 70, 60, 120);
updateStr('6');
}
if ((x>=70) && (x<=120)) // Button: 7
{
waitForIt(70, 70, 120, 120);
updateStr('7');
}
if ((x>=130) && (x<=180)) // Button: 8
{
waitForIt(130, 70, 180, 120);
updateStr('8');
}
if ((x>=190) && (x<=240)) // Button: 9
{
waitForIt(190, 70, 240, 120);
updateStr('9');
}
if ((x>=250) && (x<=300)) // Button: 0
{
waitForIt(250, 70, 300, 120);
updateStr('0');
}
}if ((y>=130) && (y<=180)) // Upper row
{
if ((x>=10) && (x<=150)) // Button: Clear
{
waitForIt(10, 130, 150, 180);
stCurrent[0]='\0';
stCurrentLen=0;
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect(0, 224, 319, 239);
}
if ((x>=160) && (x<=300)) // Button: Enter
{
waitForIt(160, 130, 300, 180);
if (stCurrentLen>0)
{
for (x=0; x<stCurrentLen+1; x++)
{
stLast[x]=stCurrent[x];
}
stCurrent[0]='\0';
stCurrentLen=0;
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect(0, 208, 319, 239);
myGLCD.setColor(0, 255, 0);
myGLCD.print(stLast, LEFT, 208);
}
else
{
myGLCD.setColor(255, 0, 0);
myGLCD.print("BUFFER EMPTY", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
delay(500);
myGLCD.print("BUFFER EMPTY", CENTER, 192);
delay(500);
myGLCD.print(" ", CENTER, 192);
myGLCD.setColor(0, 255, 0);
}
}
}
}
}
}Nem ez volt az egyetlen program amit feltöltöttem, de mindegyikkel így jártam. Volt olyan is, amelyik nem használta az érintő funkciókat, csak a megjelenítést, az sem működött.
-
tvamos
nagyúr
válasz
DrojDtroll #9762 üzenetére
Ahoz valami gyors cucc kene gondolom... En a LIS2DS12TR-t valasztottam.
-
-
fpeter84
senior tag
Valaki tudja értelmezni, hogy a gyakorlatban mit is csinál ez a részlet a LOLIN32 kapcsrajzán?
Más értelmét nem látnám, minthogy alapból az USB VBUS-ra köti a belső 5V hálózatot, de ha az utóbbira az 5V lábról kerül a tápfesz, akkor szétválasztja a két oldalt hogy az USB 5V-ja ne találkozzon szembe a külső forrás 5V-al... De nem igazán értem hogy a gyakorlatban hogyan is működhet...
-
MrChris
nagyúr
Az AccelStepper-ben meg lehet változtatni közvetlen a lábak vezérlését? Azt vettem észre, hogy más sorrendben villogtatja a vezérlőt és rögtön ki is derült, hogy a 2 lépés stimmel, 2 nem. A szimultán 1,0,1,0-t vagy 0,1,0,1-t a 28BYJ-48 motor nem kedveli.
Közben rájöttem, hogy az AccelStepper.cpp-ban lehet átírni. Viszont másik kérdésem, hogy sehogy se sikerül áramtalanítan a motort. A disableOutputs ()-al próbáltam.
-
fpeter84
senior tag
válasz
DrojDtroll #9762 üzenetére
azt kell lereagálni ha túllép egy küszöbértéket, vagy folyamatosan akarod mérni és loggolni?
-
DrojDtroll
veterán
Sziasztok!
Van olyan megfizethető árú gyorsulásmérő szenzor ami alkalmas egy hattengelyss robotokat vibracioinak mérésére?
-
fpeter84
senior tag
vagy a nodemcu, vagy az arduino lábkiosztása ,vagy egyik sem azonos az esp eredeti gpio láb számozásával...
itt látszik is, hogy a Dn és GPIOn számozás elmászott valamilyen ostoba oknál fogva...
valamiért annó az uno mega korában kitalálták hogy nekik nem jó az hogy PORTA.1 meg PORTC.5, hanem D1, D2, Dn elnevezés kell, és valamiért ezen is hasonlóan átcímkézték a lábakat... Az ESP32 alapú LOLIN32-n már szerencsére nem...
(#9757) csubukaa 9600 a lua firmware baudja, de a bootloader amit az ide-ben kell állítani az eltérő, a videó szerint 115200
-
Bazs87
tag
válasz
fpeter84 #9756 üzenetére
elég hülye hibába futottam:
az esp8266 mintaprojekt blink mintaprogramjával próbálkoztam. A videón szereplő beállításokat használva.
A gond, h valamiért a lábkiosztás nem passzolt és nem villogott a led (mert hát mire is vár ilyenkor az ember)feltöltötte hiba nélkül, csak ugye nem villogott szerencsétlen
a videó után rámértem a lábra...persze, hogy megyköszönöm a felhomályosítást
-
-
csubuka
addikt
válasz
fpeter84 #9756 üzenetére
Nekem ugyanilyen board-om volt kb. És alapból ment Arduino IDE-vel. Persze lehet, hogy más FW-t küldtek, de a hátulján ugyanez a 9600 baud rate felirat volt, azzal meg aztán hibát dobott az Arduino IDE. A jó baud rate-el meg azonnal ment további mókolás nélkül.
*Bocsi persze a boards manager-es állítgatások kellenek igen a működéshez.
-
fpeter84
senior tag
A nodemcu feliratból kiindulva feltehetően AT parancsokra reagáló LUA-s firmware van most rajta. Ha eredeti formájában szeretnéd használni akkor a nodemcu AT command stb kifejezésekre keresve indulj el, ha pedig arduino IDE-ből szeretnéd programozni akkor ezt találtam rá így hirtelen: [link]
-
Bazs87
tag
Sziasztok!
A segítségeteket szeretném kérni. Vettem egy nodemcu-szerű "izét"
[link]a gondom, hogy a hátulján a következő instrukciók szerepelnek:
- install ch340g driver
- use 9600bps baud rate
- connect to wifiA drivert megtaláltam/installáltam/, de sajnos nem tudom honnan induljak el, a blink programot próbálom feltölteni, de sajnos nem jutok előre bármilyen alaplapot választok. (com számot kap)
Valaki találkozott már ilyennel?Köszi előre is!
-
MrChris
nagyúr
Lehet alap kérdéseket kérdezni?
Ebből a példából kiindulva azt akartam, oop módon csak 1 ledet villogtasson, ez ugye csak annyi hogy csak egy LedBlink led-t hozok létre. Viszont szerettem volna, kívülről (nemtom mi a helyes kifejezés) ellenőrizni, hogy éppen világít e vagy sem. Erre nem tudtam mást kitalálni, mint hogy a void frissites()-t int frissites()-re írtam át, végén egy return state-el. Gondolom ezt így kell ahhoz, hogy kívülről megkapjam a state értékét. A loop-ban egy feltétellel kérdezem, hogy high vagy low, kiíratva a konzolra, hogy 'be' vagy 'ki' állaptban van e.
Hogyan lehetne azt megoldani, hogy csak akkor írja ki ha változik az értéke? Eddig csak úgy tudom ha van egy állapot változóm és azt is kérdezgetem a led.frissites()-el együtt és kapcsolgatom. Van ennél elegánsabb megoldás? Ami eszembe jutott esetleg ezt tegyem bele valahogy az osztályba és egy változón-értékadáson keresztül lehessen ezt a funkcióját bekapcsolni?
Hogyan tudom ezt a LedBlink led példányt leállítani? -
csubuka
addikt
válasz
fecske13 #9747 üzenetére
Jogos, mondjuk a browsercall-t úgy is használom, így az a pénz legalább nem állna sehol. Persze az első időszakban a net nem megoldott, szóval lehet mindenképpen GSM megoldás kell, csak később könnyedén voip-esre kéne, hogy átalakítható legyen. Mondjuk ahogy nézem a kettő megoldás igen különböző, szóval az egyik kifejlesztése nem nagyon segít a másikban semmit.
(#9748) Janos250: Ez egy ilyen voip szolgáltató. Sima böngészőből is lehet telefonálni meg SMS-t küldeni bejelentkezés után, a számlaegyenleg elhasználódásáig. Ugyanakkor akár a Mobilevoip nevő androidos SIP klienst használva is lehet használni és amíg van netkapcsolat addig olcsó hívásokat kezdeményezni hagyományos vezetékes vagy modil irányba meg SMS-t küldeni.
-
-
csubuka
addikt
válasz
fpeter84 #9745 üzenetére
Értem, köszönöm a kiegészítést!
Hmm, nekem van felhasználóm a fizetős browsercalls-ra. Az elérhető neten. nem tudom, hogy mennyiben lehetne használni ezen megoldáshoz... Nem kell, hogy ingyenes legyen, elvégre a pár dolláros keretem havi egy riasztással (3 helyre küldött SMS-el) évekig kitart.
-
fpeter84
senior tag
válasz
csubuka #9743 üzenetére
Sorry, ezt jól benéztem, összekevertem adatfalo viráglocsolós projektjével! Ott lenne elég egy ilyen eszköz a feladatütemezőjével minimális kiegészítéssel! Neked csak akkor, ha még lehet találni neten valami olyan szolgáltatást amivel "ingyen" lehet küldeni SMS-eket...
-
-
csubuka
addikt
válasz
fpeter84 #9740 üzenetére
Köszönöm szépen!
"Az említett modulok mind tudják a hanghívást, sms fogadást és küldést, a többi csak extra ezen felül a jövőre nézve!"
Szuper, egy olyat lehet, hogy beszerzek akkor.
"Nekem egy MR3220 V1 a routerem (egyelőre, bár egy Xiaomi MIR3G már be van tárazva hogy leváltsa), és nálam is extroot-al pendrive adja a tárhelybővítést. A szépséghiba, hogy a mai openwrt már túl kövér, a 4MB-ba épp csak cipőskanállal fér bele és már nincsen hely az USB támogatás utólagos telepítéséhez, de szerencsére ImageBuilder-el előre belerakva még éppen elvan minden ami kell az extroot-hoz..."
Ettől az image builder-es dologtól féltem kissé.
"De ha van net a router alatt és csak ezt a vezérlést végzi, akkor erre sincsen szükség! Minimál rendszerrel bebootol, GPIO lába van elég (IO kártya se kell), egyszerűen crontab-ba beütemezhető hogy kapcsolgassa a GPIO lábait és kész!"
Ezt a crontab-ot úgy érted, hogy a routeren futó Unix-szerű akármilyen rendszer tudná a router kimenetét kapcsolgatni? Szóval ennek a routernek van kapcsolható kimenete?
(#9742) fecske13:
Köszönöm szépen az ismételt választ!
Értem, szuper! Viszont akkor a riasztó kimenetének felprogramozása is egy kihívás lesz, végig kell nyálazni a leírását...
-
fecske13
tag
válasz
csubuka #9739 üzenetére
"Arra gondoltam, hogy a risztónak alapból van-e olyan kimenete, ami esetleg egy szimpla relé és a riasztás pillanatnyi állapotától függ az állapota."
Erre írtam legutóbb, hogy van olyan kimenete. Felprogramozod a sziréna állapotára, ráteszel egy optocsatolót és már meg is van az esemény detektálása.
Egy SIM800 vagy SIM900 modul mindent tud amire szükséged van. Ott a program megírása az igazi kihívás, mivel biztonsági rendszerről van szó, aminek nem illik hibázni.
De kaphatók kész modulok is, amiket csak össze kell kötni a riasztóddal.
Nem néztem végig, de elég sokfélét találsz pl. itt [link] -
Cool Face
aktív tag
-
fpeter84
senior tag
válasz
csubuka #9739 üzenetére
Az említett modulok mind tudják a hanghívást, sms fogadást és küldést, a többi csak extra ezen felül a jövőre nézve!
Nekem egy MR3220 V1 a routerem (egyelőre, bár egy Xiaomi MIR3G már be van tárazva hogy leváltsa), és nálam is extroot-al pendrive adja a tárhelybővítést. A szépséghiba, hogy a mai openwrt már túl kövér, a 4MB-ba épp csak cipőskanállal fér bele és már nincsen hely az USB támogatás utólagos telepítéséhez, de szerencsére ImageBuilder-el előre belerakva még éppen elvan minden ami kell az extroot-hoz...
De ha van net a router alatt és csak ezt a vezérlést végzi, akkor erre sincsen szükség! Minimál rendszerrel bebootol, GPIO lába van elég (IO kártya se kell), egyszerűen crontab-ba beütemezhető hogy kapcsolgassa a GPIO lábait és kész!
-
csubuka
addikt
válasz
Janos250 #9725 üzenetére
Köszönöm szépen a részletes választ!
"A régi Siemens telefonok jók voltak erre, én is használtam, még Microchip PIC-kel.
Manapság háromezer Ft környékén árulják a használt régieket, éppen ilyen céllal.
Viszont annyiért már egy mostani okosabb GSM modul is kapható, ami arduinóval simán megy."Ejj, ha ezt tudom. Egy pár hónapja hajítottuk ki elektronikai hulladékba az ilyen nem-színes Siemensek utolsó két példányát, ami a padláson kóborolt
Kellemetlen, akkor mégsem voltak hulladékok. Az információhiány ugye.
"Ennél olcsóbban már kész, komplett GSM riasztót lehet kapni. EDM szállítással rendelve Eu-ban adják fel a postára, így nincs rajta semmi extra költség:"
Ezt jó tudni, hogy akkor immár lényegesen jobb árak vannak :-)
"Igen, de ha kibontod, látod, hogy nem éppen bonyolult."
Belenézek majd, rendben.
"Ezt a relét a szirénával párhuzamosan is bekötheted. Ha szól a sziréna, zár a relé."
Itt rosszul fogalmaztam. Arra gondoltam, hogy a risztónak alapból van-e olyan kimenete, ami esetleg egy szimpla relé és a riasztás pillanatnyi állapotától függ az állapota. De azt kapizsgálom, hogy a sonoff relével lehetne távolról elnémítani a szirénát akár. Bár annak gondolom, csak akkor lenne jelentősége, ha lennének kameráink és akár meggyőződne az ember azokkal távolról, hogy téves a riasztás.
(#9727) fpeter84:
Köszönöm szépen a választ Neked is!
"Szimpla SMS küldésre teljesen alkalmas egy régi telefon - de itt tényleg a régiekről, a nem színes kijelzős őscuccokról beszélünk."
Sajnos ez a vonat elment és kidobtuk nemrég az ilyen telefonokat.
Jobb lett volna pedig nem szemetet csinálni belőlük.
"Az olyan modulok mint a SIM900, M590E, AiThinker A6/A7 stb modulok általában ennél sokkal többet tudnak"
Akkor lehet mégsem akkor gond.
Bár nekem főképp itt a SIP-klienssel való SMS küldés lenne a top amit meg kell valósítani, ahhoz meg lehet egyik GSM modul sem segítség.
"Az OpenWrt kérdéshez leírhatnád hogy mid van"
Ami erre leginkább szóba jöhet, az egy MR-3220 V2. Az USB-jén keresztül lehetne akár persze mobilnettel is bővíteni, de egy funkciókban gazdag OpenWRT-hez elvileg az USB portját pendive-os tárhely bővítésre kéne használni, szóval az gond.
"Annyira elhanyagolható áram folyhat a riasztó és a szirénája között, hogy szerintem azt aligha tudod megbízhatóan érzékelni az ACS712-vel!"
Ejha, pedig jónak tűnt így elsőre. Tök büszke voltam magamban az ötletre
"1-3-5e-ért komplett modulokat lehet kapni"
Ránézek majd akkor a listázott típusokra.
-
-
-
Cool Face
aktív tag
Találkozott már valaki más is itt a ds18b20 szenzor "self heating" problémájával?
-
fpeter84
senior tag
Annak lehet jelentősége, hogy a TFT LCD vezérlő csippeken a read / write külön lábakra került? A command / data ugye egyetlen láb két állása, de az írás olvasás valamiért kettő külön lábra... Lehet annak jelentősége hogy mindkettő lábnak idle-nek kell lennie néha, vagy egy tranzisztorral esetleg egyetlen GPIO lábra is rá lehetne kötni őket?
-
Janos250
őstag
válasz
szuszinho #9728 üzenetére
Nekem +-1 fok körüli pontossággal mennek a K hőelemek. Nem a pontossággal volt bajom, hanem azzal, hogy ha nem akkuról, hanem hálózati tápról táplálom, akkor nagyon zavarérzékeny. Ezen lehet valamit javítani, ha elég hosszan van hegesztve a két fém. (feszültség ugyanakkora, de a terhelhetősége nő)
-
_q
addikt
Sziasztok!
Van valakinek bevált napelem? 5V/1.5 W lenne jó legalább, de talán az 1-1.5W között is elég. ESP32-höz kellene, hőmérséklet mérés, wifin adat küldés majd deep sleep, 10 percenkénti méréshez.
Sajnos ez olyan mint az aksi ha kínából jön, vagy valós amit megadnak érték vagy nem. Ezért is lenne jó, ha lenne valakinek bevált darabja. -
szuszinho
őstag
Olvasom, hogy a DHT11 nem legmegbízhatóbb.
Most egymás mellé tettem egyet, meg egy K hőelemet. 3-4 fok a különbség. Az ilyen hőelemek mennyire pontosak? -
fpeter84
senior tag
válasz
csubuka #9724 üzenetére
Szimpla SMS küldésre teljesen alkalmas egy régi telefon - de itt tényleg a régiekről, a nem színes kijelzős őscuccokról beszélünk. Ezeknek az alaplapján / alsó csatlakozóján általában TTL/LVTTL sorosportot lehet elérni, és AT parancsokkal utasítani. A szépséghibájuk hogy SMS küldés / hívás indításon kívül nem igazán lehet továbblépni velük! Egyébként a komplett ipari / riasztó kiegészítő modulokkal is ez a baj: van pár ki/bemeneti lába, pár eseményt le tud kezelni, SMS-t küld és esetleg fogad, de okosabb funkciókra a jövőben képtelen, nem fejleszthető...
Az olyan modulok mint a SIM900, M590E, AiThinker A6/A7 stb modulok általában ennél sokkal többet tudnak: natív parancsok FTP, TCP, UDP, HTTP stb kezelésre, tehát sokkal összetettebb feladatok is könnyedén levezényelhetők vele. Sőt, pl a SIM5320E olyan okos, hogy ő maga ki tudja váltani a mikrokontrollert mert LUA nyelven írt programot lehet rá tölteni és automatikusan futtatni, ami eléri az összes funkcióját és perifériáját! Sajnos picit drága és a tokozása se túl praktikus, sajnálom hogy valami egyszerűbb kisebb olcsóbb verzióban nem készítették el ugyanezt...
Az OpenWrt kérdéshez leírhatnád hogy mid van - gyártó, típus, alverzió - hátha nem olyan nehéz feladat az... Az OpenWrt-s közösség is hasonló építő jellegű szerintem mint ez, szóval hátha. Ráadásul ha USB-s akkor mehet rá akár mobilmodem is, ha nem mindig jön a WAN felől net...
Annyira elhanyagolható áram folyhat a riasztó és a szirénája között, hogy szerintem azt aligha tudod megbízhatóan érzékelni az ACS712-vel! Ráadásul deaktiválni se tudod sehogy távolról az akkus szirénát hiszen annak pont az a lényege hogy szabotázs / vezetékszakadás esetén is megszólaljon! De a vezérlő szálra rá lehet párhuzamosan csatlakozni...
1-3-5e-ért komplett modulokat lehet kapni - olcsóbban még igényel némi kiegészítést, drágábban csak rádugod a tápot vagy rádugod a shieldet az arduino-ra, rácsatlakozol sorosporttal és kérdezgethetsz is tőle egyből AT parancsokkal. Fontos, hogy sok típus nem igazán tolerálja a klasszikus UNO/NANO/MEGA stb 5V I/O feszültségét, ézért vagy felezett órajelű 3.3V-os típust kell keresni ezekből, vagy egyből olyannal indulni ami megfelel az elvárásoknak: Due, STM32, ESP család, stb stb. A shieldek általában lekezelik a jelszintillesztés kérdését...
-
Janos250
őstag
válasz
csubuka #9724 üzenetére
"Amúgy egy régi telefont nem lehet GSM modulnak használni?"
De, lehet egyrészét. A régi Siemens telefonok jók voltak erre, én is használtam, még Microchip PIC-kel.
Manapság háromezer Ft környékén árulják a használt régieket, éppen ilyen céllal.
Viszont annyiért már egy mostani okosabb GSM modul is kapható, ami arduinóval simán megy.
https://www.banggood.com/SIM900A-Smart-Electronics-GPRS-A6-Module-Wireless-Extension-Module-GSM-GPRS-Board-p-1111193.html?rmmds=search&cur_warehouse=CN
"én még mondjuk anno ilyen 30-40 ezres árat kaptam a GSM modulra, azóta azért ezek eszerint korrektebbek lettek"
Ennél olcsóbban már kész, komplett GSM riasztót lehet kapni. EDM szállítással rendelve Eu-ban adják fel a postára, így nincs rajta semmi extra költség:
https://www.banggood.com/DY-GSM30A-Wireless-LCD-GSM-Intelligent-Home-Security-Burglar-Voice-Protect-House-Alarm-p-1090342.html?rmmds=myorder&cur_warehouse=CN
"A szirénát nem olyan egyszerű elnémítani távolról"
Vagy sonoff a sziréna áramkörébe, ha van WiFi, ha nincs, akkor meg az úgyis ott lévő GSM modul+arduino kezelheti az áramkörébe rakott relét.
"akkor még a szirénaházban is mókolni kéne"
Igen, de ha kibontod, látod, hogy nem éppen bonyolult.
"ami vagy megszakad vagy összezár attól függetlenül, hogy riasztási állapot van-e"
Ezt a relét a szirénával párhuzamosan is bekötheted. Ha szól a sziréna, zár a relé. -
csubuka
addikt
Köszönöm szépen a további magyarázatot!
Értem, szóval azért nem sokkal drágábbak a legolcsóbb gyári megoldások sem. Mondjuk azokba nem lenne kihívás/gányolás faktor
Ami azért fontos.
Amúgy egy régi telefont nem lehet GSM modulnak használni? Vagy az már tényleg giga-gány?
(#9718) fpeter84: köszönöm Neked is a választ! Igen, lehet, hogy elegek az Arduino boardok, én még mondjuk anno ilyen 30-40 ezres árat kaptam a GSM modulra, azóta azért ezek eszerint korrektebbek lettek.
A fő gond az, hogy most épp nem érhető el wifi, ezért lenne jobb a GSM-es. Hosszabb távon persze jó lehet a wifis megoldás. De ha internetes is, valamilyen SIP klienssel kell "valódi" SMS-t küldjön, mert nem minden családtag tartja bekapcsolva a mobilnetet. (Akksi leszívás meg hasonló meggyőződésből).
Én nem akarok vezérelni semmit távolról. Itt tényleg csak annyi a feladat, hogyha riasztás van, akkor küldjön SMS-t. A szirénát nem olyan egyszerű elnémítani távolról, akkor bele kéne gányolni a PCB-jébe, mert ha nem kap áramot, akkor vonyít akksiról, szóval akkor még a szirénaházban is mókolni kéne, ha távolról le akarnám kapcsolni. Vagy mélyebben belenyúlni a risztóba, meg hogy hogy kezelne egy ilyen "kapcsolj ki" bemenetet. Ez egyelőre még nincs terítéken azért szrencsére. Csak az SMS kiküldése vagy GSM-en vagy valamilyen netes SIP klienssel.
Valószínűleg OpenWRT kompatibilis a router, csak én nem vagyok az egyelőre kész arra, hogy belemókoljak. Ha jól emlékszem akkor ilyen-olyan beépülő csomagokat összevadászva az ember magának fordítja le majd a routerre immár felrakható fájlt nem? Szóval az nem egy sétagalopp, főleg, hogy tárhelybővítés kéne a mostanira USB-n keresztül egyéb package-el. Szóval azt majd csak egy komolyabb belső tárhelyes routerre a jöbőben max szerintem.
(#9722) fecske13: Köszönöm szépen! Hmm, ezt jó tudni, nem én intéztem azt, nem nagyon vagyok tisztában a képességeivel. Ámde az gyakorlatilag egy belső relé is lehet, ami vagy megszakad vagy összezár attól függetlenül, hogy risztási állapot van-e? Mondjuk el akartam kerülni, hogy bele kelljen piszkálnom a riasztó felprogramozásába... Olyan 30 ropi volt anno kifizetve a felprogramozásért, csak, hogy ne nekem kelljen nyomkodni. Lehet egyszerűbb egy ACS712-vel nézni, hogy folyik-e áram a szirénába menő kábelben, minthogy belenyúljak és netán elrontsam a risztót... Át kell gondolni.
**Ez a legkorrektebb topik, nagyon jó ötleteket adtok, igazán köszönöm, mindig gondolatébresztő ide benézni, attól függetlenül, hogy van-e épp saját projekt ötlete az embernek!
-
gyapo11
őstag
Virághoz nem is kell elektronika.
Bele kell tenni a cserepeket egy tálcába, abba szájjal lefelé egy pet palackot tele vízzel a tálca aljától 1-2 cm-re legyen a palack szája, és ez folyamatosan tartja az 1-2 cm vízréteget amíg ki nem fogy a palack. A cserepekbe alulról fölszivárog a víz, tehát legyen az aljukon lyuk. -
fecske13
tag
válasz
csubuka #9714 üzenetére
A riasztódnak van programozható kimenete, arra felprogramozhatod akár a sziréna állapotát is és azzal indíthatod az SMS küldést.
Az olcsóbb GSM modulok is jók lehetnek a célra, persze az Arduinonak kell foglalkozni az állapotukkal is, ahogy ezt a drágább modulokban is megoldják. -
fpeter84
senior tag
válasz
csubuka #9714 üzenetére
Neked nem hiszem hogy szükséged volna ilyesmire, max valami arduino "kompatibilis" GSM/GRPS modul elég, nem atomreaktort akarsz kapcsolgatni róla
Egyébként kell a mobilnet egyáltalán? Wifin nem lehet csatlakozni az otthoni hálózatra? Mert akkor egy ESP8266/ESP32 is elég lehet, vagy ha valami OpenWrt-képes routered van akár azzal is levezényelhető a feladat! Sőt, akár egy ESP8266 alapú SonOff kapcsolós hálózati aljzattal, okostelefonos app-al magad is vezényelheted távolról a dolgot... Persze abból kimarad akkor az alkotás öröme, de kevesebb a szívás is
(#9715) Teasüti
Ezek millis-el mért szintidők egyes feladatsorok végrehajtása során, tehát minél kisebb annál gyorsabb volt és ezredmásodpercben értendők. Az overall összehasonlítás emiatt nem igazán helytálló, inkább a részeredményeket érdemes összevetni az alapján, hogy a projektedben leginkább milyen feladatok várhatóak!
-
tibi-d
tag
válasz
csubuka #9714 üzenetére
Szia!
A gyári GSM modul egy önálló mobiltelefonnak tekinthető, saját vezérlőszoftverrel, ami PC-vel paraméterezhető. Az indító bemenetre (12V toleráns) adott jellel küldhető SMS. Egyes tipusoknak kimenete is van, ami ráhívással, SMS-el vezérelhető. A legolcsóbb 13-15eFt-tól indul, de 50-60eFt is lehet a vége. Nekem 8 bemenet, 8 kimenet van a panelen. Ez kb. 25-30eFt-ba kerül, mert biztonsági rendszerekhez készült megbízható kivitelű. Az Arduinóhoz gyártott 3-5eFt panelek üzembiztonsága nem ismert, ezért az autómat nem merném rábízni. A teszt konfigurációt a garázson tesztelem. Ha több hónapon keresztűl stabilan működik, talán akkor megpróbálom beépíteni az autóba. Mivel a rendszer folyamatos "stand by" üzemmódban működik, csak napi használatú autóba érdemes beépíteni, a relatíve magas fogyasztás miatt. -
csubuka
addikt
Köszönöm szépen a választ!
A gyári GSM modulod az jó áron volt?
Arra gondoltam, hogy lehetséges-e, hogy a sziréna körbe sorosan egy ACS712 hall-elvű árammérőt beépítek és akkor meg is van az Arduino beépítése. Ha folyik áram a 12V-os sziréna körben akkor küldheti az SMS-t vagy valami online voip megoldással, már ha olyat lehet.
-
fpeter84
senior tag
Említettem már, hogy imádom a vadászatot a bugtengerben?
Ugye a Due-n a serial.begin nem volt képes visszavenni a hatalmat egy pinMode/digitalWrite művelet után. A változatosság kedvéért az ESP32-n pedig egy serial.begin/serial.end után a pinMode nem képes rendesen bekonfigurálni a GPIO lábakat...
Az illetékes regiszterek amiket kézzel kell beállítani:
GPIO_FUNCx_IN_SEL_CFG_REG
GPIO_FUNCx_OUT_SEL_CFG_REGAz ESP32-n LCD meghajtással pedig végül eddig jutottam:
Kíváncsi volnék, hogy a szimpla vonalhúzás miért ennyivel gyorsabb náluk? Lehet az ott használt ILI9341-nek valami hardveres gyorsítása / trükkje van rá? Bár akkor valószínűleg a screen fill is sokkal gyorsabb lenne, szóval inkább sejtek valamiféle mérési bugot mögötte... Mindenesetre a többi területen észrevehetően gyorsabb parallel módban...
-
quint
aktív tag
válasz
adatfalo #9708 üzenetére
Egy nyákdarabra ki kell maratni egy fésűs nedvességérzékelőt, ami megszakítás kérést tud küldeni az arduinónak, ha egy csepp víz ráesik. Egy pet palackban bőven elfér akár hónapokra is a triggereléshez szükséges víz, a hangoláshoz pedig jó egy felforrósított gombostű.
Ha már minden jól működik, akkor megfontolhatod a nedvességérzékelő elbillentését a virágcserép felé, mert akkor a megfelelő ütemben érkező vízcseppek akár ki is elégíthetik a virág nedvességigényét
Végső megoldásként a palack és a víz kivételével minden más kidobható - természetesen a minden másba nem beleértendő a virág
-
Tankblock
aktív tag
válasz
adatfalo #9706 üzenetére
Hello,
Ha van wifi akkor ESP8266 re van One Task osztály: [link]
Azt mindenképpen tisztáznod kellene, hogy a pumpát is erről a tápegységről szeretnéd-e meghajtani. Én MOSFET tel mennék neki egy step up converterrel, aminek a tápjára tenném a FET et. A napelem cellát meg illene túlmértezin, ahogy az akksit is.
Sima arduino ha 8MHz belső clockal megy és 3V3 van használva is tud alacsony áramfelvételt, vagy akár még valamelyik AtTiny core is. Attiny13A van nekem sikerült lemenni 5,4 uA re a fogyasztással deepsleepre. Kérdés mennyire kell, hogy pontos legyen az az időzités.
Ha jó sacc / köblábra is akkor nem vesződnék semmilyen RTC vel, csak deep sleep és wakeupokkal számolgatnék mennyi van még hátra a 24 órából. Ha csak arra kell, hogy pl 2 hetet elmenjen amig nem vagy otthon és fontos, hogy battery + napelem kombó legyen. A TP4056 pl 1 cellának jó választás lehet. Az másik hogy az az egy cella mennyi ideig is fogja meghajtani azt a pumpát.
-
gyapo11
őstag
válasz
adatfalo #9706 üzenetére
Ha az uno sokat kajál deepsleepben, akkor külső tápkapcsoló kell, minden cmos, oszcillátor, osztó 24 óránként 1 impulzusra osztva az oszcillátor jelét, az impulzus egy bistabil oszcillátorra, ez egy fettel rákapcsolja a delejt az unora. Aztán amikor az uno végzett, elmenti a változókat eepromba, visszabillenti a bistabilt, ezzel megszünteti a saját tápellátását, és a rendszer vár a követlező 24 óra múlva jövő impulzusra.
-
-
adatfalo
senior tag
Köszi!
Abban van tapasztalatod, hogy hogyan lenne érdemes ezt a napi 1x-i bekapcsolást elvégezni? Találtam már időzítős reléket, illetve gondolkoztam már RTC modulon is, de nem tudom, hogy mi lenne a legjobb megoldás, sajnos az arduinonak nem olyan jó az energiagazdálkodása, mint mondjuk egy ESP-nek.
-
_q
addikt
válasz
adatfalo #9704 üzenetére
Szia. Én is napelem után vadászok. Mivel csak napi 1x kapcsol be a rendszered, így szerintem simán tudja tölteni a napelem az aksit és nagyon komoly napelem se feltétlen szükséges.
Ettől függően 5 V, 1 W tudja 200 mA-el tölteni az aksit, hozzá egy 18650-es 2-3000 mAh aksi, illetve egy TP4056-os áramkör amihez van védő áramkör a panelen. Valami ilyesmi mentén indulnék el, attól függően mennyit fogyaszt a rendszered. -
adatfalo
senior tag
Sziasztok!
Szeretnék egy olyan (öntöző) rendszert építeni, ahol napi 1x kapcsol be az arduino, lefut a program,(ha száraz a föld bekapcsol egy pumpa {12V-os vízhűtéses pumpa, de már az 5V arduinora kötve is elindul} pár mp-re) majd kikapcsol/alvó-módba-ba kapcsol, mindezt úgy, hogy egy akkuról üzemeljen, amit napelemmel tartanék mindig feltöltve.
A pumpát relével kapcsolgatnám ki-be. Legnagyobb homály számomra a tápellátás úgy, hogy ne merítse/vagy csak minimálisan az arduino az akkut napközben.
Szerintetek ezt hogy érdemes megcsinálni?
-
tibi-d
tag
válasz
csubuka #9687 üzenetére
Az én projektem úgy fog kinézni, hogy a riasztó része lesz egy Nano (ki akarom hagyni a kezelő egységet), és a GSM modul egy gyári kivitel. A DSC riasztókat a tudásukhoz képest drágának találom, ezért hanyagoltam a megismerésüket. Nálam a SATEL vált be. Relatíve olcsó, laptopról könnyen programozható, és még nem volt vele problémám. A DSC is, mint minden riasztó 12V jelszinttel dolgozik, és rend szerint a test az aktív jelszintje. Ha Arduino-ra kell jelet küldeni, mindenképpen jelszint illesztés szükséges ( opto, relé, feszosztó, stb).
-
csubuka
addikt
válasz
fpeter84 #9689 üzenetére
Köszönöm szépen az elemzést!
Mélyebben beleásom magam majd a rendszer működésébe, hogy mi is a valós tényállás. De ez alapján legalább tudok majd keresni, hogy hogyan kéne mégis.
(#9695) Janos250: Köszönöm szépen Neked is! Eddig ott vagyok, hogy megállapítottam a típust. A vezérlő egy DSC PC1616H. Azt kéne, hogy ha eldönti, hogy riaszt, akkor SMS-t küldeni. De mondjuk, ha a beltérinek meghal az akksija (és áramszünet van), akkor is riasztás van amúgy, ami miatt meg begerjednek a szomszédok, ha pl nyaral az ember. És ilyenkor is jó lenne erről tudni, hogy egy segítő embert beszervezhessünk ennek elhárítására. Így lehetséges a legjobb lenne a sziréna megszólalására triggereltetni az SMS-küldést.
Belenéztem ugyan a dokumentációjába egyelőre a vezérlőnek, de elég hosszú
Egyelőre erre nem biztos, hogy lesz időm, hogy átrágódjak rajta és kiderítsem hogy a legcélszerűbb sima "digital input"-ra valamilyen módon bevinni azt, amikor megszólal a sziréna.
*Kicsit okosodnom kell még, hogy a vezérlő panelon mi történik azért, mert ahogy fpeter84 írta a 12V-os szirénához több hardveres építés kell, hogy az Arduino/(ESP vagy akármi más) oda kapcsolódhasson.
Új hozzászólás Aktív témák
Hirdetés
- GOPRO Hero 11 BLACK - 5.3k akciókamera - 2 akku, tartozékok (5.)
- DJI AVATA 2 Fly More Combo 1 akku - drón szett DJI Goggles N3 FPV szemüveggel
- Sony PlayStation 5 ( PS5 ) Sony PlayStation VR2 Csomag
- Dell Precision 7680 Eco FHD+ 13600HX 14C / 16G D5 / 1T G4 workstation
- Gigabyte GA-Z68A-D3-B3 LGA 1155 alaplap
- Azonnali készpénzes GAMER / üzleti notebook felvásárlás személyesen / csomagküldéssel korrekt áron
- BESZÁMÍTÁS! Samsung Odyssey G5 32 144Hz WQHD 1ms monitor garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9800X3D 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- 0% THM részletfizetés, beszámítás! Gamer PC, notebook, konzol, Apple termék, hardver KAMATMENTESEN!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged