Генератор для катушки "Мишина"

Спасибо, Ua6em, у меня получилось с одной из LilyGO T4, которые у меня есть. Но только с инструкцией с этого сайта. Так что user_setup22 и ПК с Windows, потому что этот ESP не работает на моем iMac.

Thank you, Ua6em, I succeeded with one of the LilyGO T4 boards I have. But only with the instructions from this site. So, user_setup22 and a Windows PC, because this ESP doesn’t work on my iMac.

#include <User_Setups/Setup22_TTGO_T4_v1.3.h>

нет поддержки CH91XX

а чего с ним нынче? прикрыли?

у меня не проходит двухфактурная аутентификация, на мои регистрационные данные не даёт этого сделать (

[quote=“ua6em, post:492, topic:8579”]
нет поддержки CH91XX
Да, я тоже так думал(а), установил(а), но всё равно не работает. Я уже сломал(а) одну LilyGO. Так что теперь я заканчиваю с iMac и LilyGO.

Yes, I thought so too, installed it, but it still doesn’t work. I’ve already broken one LilyGO. So now I’m done with the iMac and LilyGOs.

механически что ли?

Не механически, но на iMac у меня не получается его запустить, и порт, к которому оно подключено, не виден. Экран на мгновение загорается и затем гаснет. На Windows ПК я могу его выбрать, но при программировании появляется ошибка 1.

Not mechanically, but I can’t get it to work on the iMac, and the port it’s connected to isn’t visible. The screen lights up for a moment and then turns off. On the Windows PC, I can select it, but I get error 1 when programming.

почистить полностью флэш, там есть такой пункт при выборе платы

1 лайк

Этот девайс так и просится под ZEPPER, карточку втыкаем и программа пошла отрабатывать, вообще никаких пунктов меню не надо, а учитывая, что расход энергии минимальный устройство может быть буквально карманным

1 лайк

посмотрел я эти Цепперы, это конечно что-то (по цене)

У меня есть это, и я также сделал одно такое, но с обычным энкодером.

I have this, and I also made one like this but with a normal encoder. CureGen Color Plus - Биорезонансен апарат (Zapper) гр. Пловдив Индустриална зона - Изток • OLX.bg

сколько в нём программ?

3600 программ;
RIFE ETDL full database of 3600 programs x 10 frequencies each.

Генератор Райфа (именно его) не работал с электродами, там была специальная лампа (по сути мягкое рентгеновское излучение), чтобы посмотреть как генератор работает с электродами и было задумано добавить диагностику

Да, это так. Мне это известно. Это биорезонатор, который работает на частотах Райфа, но с методом заппера Кларка. И для лампы Райфа тоже есть схемы и информация для самостоятельного изготовления, если кто-то хочет. Только из опыта могу сказать, что это устройство действительно довольно хорошо работает.

Yes, that’s correct. I’m aware of that. This is a bioresonator that works on Rife frequencies but with the method of the Clark zapper. There are also schematics and DIY info for the Rife tube if someone wants to make it. From experience, I can say that this device does a pretty good job.

да, у меня есть положительные отзывы
К прибору есть справочник по программам?

На Али продаются девайсы на ESP32 имеющие в своём составе TFT, тач, SD, BUZZER, и т.д. то-есть практически готовое устройство для адаптирования генератора под ESP32.
Ссылку на одно из таких я приводил, дисплей там аж 320х480 и под шину SPI, контроллер ESP32S3.
Так как слона надо есть по частям привожу два тестовых скетча для проверки SD карточки, компилировал под ядром 3.0.4
1.

Спойлер

#include <SPI.h>
#include <SD.h>
#include <FS.h>
#include "SPIFFS.h"

//SD Card ON VSPI
#define VSPI_SCK 14
#define VSPI_MISO 16
#define VSPI_MOSI 17
#define VSPI_CS 21 // SD-D3 //15

//SD Card ON HSPI
#define HSPI_SCK 14
#define HSPI_MISO 16
#define HSPI_MOSI 17
#define HSPI_CS 21 //SD-D3 //15

//SD Card ON FSPI
#define FSPI_SCK 14
#define FSPI_MISO 16
#define FSPI_MOSI 17
#define FSPI_CS 21 //SD-D3 //15

//uninitalised pointers to SPI objects
//SPIClass * vspi1 = NULL;  // SD

//SPIClass spiVspi(VSPI);
//SPIClass spiHspi(HSPI);
SPIClass spiFspi(FSPI);


void setup() {
  Serial.begin(115200);

  Serial.println("Initializing SD card...");
  // IF VSPI
  //spiVspi.begin(VSPI_SCK, VSPI_MISO, VSPI_MOSI, VSPI_CS);
  //if (!SD.begin(VSPI_CS, spiVspi, 4000000)) {
  // Serial.println("Card Mount Failed");  

  // IF HSPI
  //spiHspi.begin(HSPI_SCK, HSPI_MISO, HSPI_MOSI, HSPI_CS);
  //if (!SD.begin(HSPI_CS, spiHspi, 4000000)) {
  // Serial.println("Card Mount Failed");

  // IF FSPI
    spiFspi.begin(FSPI_SCK, FSPI_MISO, FSPI_MOSI, FSPI_CS);
    if (!SD.begin(FSPI_CS, spiFspi, 4000000)) {
      Serial.println("Card Mount Failed");
      //   tft.setCursor(10, 50);
      //   tft.println("Card Mount Failed");
      return;
    }

    uint8_t cardType = SD.cardType();
    if (cardType == CARD_NONE) {
      Serial.println("No SD card attached");
      //    tft.setCursor(10, 50);
      //    tft.println("No SD card attached");
      return;
    }

    Serial.print("SD Card Type: ");
    if (cardType == CARD_MMC) {
      Serial.println("MMC");
    } else if (cardType == CARD_SD) {
      Serial.println("SDSC");
    } else if (cardType == CARD_SDHC) {
      Serial.println("SDHC");
    } else {
      Serial.println("UNKNOWN");
    }

    uint64_t cardSize = SD.cardSize() / (1024 * 1024);
    Serial.print("SD Card Size: ");
    Serial.print(cardSize);
    Serial.println("MB");

    //  tft.setCursor(10, 50);
    //  tft.println("SD card initialized");

    Serial.println("Listing files in root directory:");
    //  tft.fillScreen(TFT_BLACK);
    //  tft.setCursor(10, 10);
    //  tft.setTextSize(1);
    File root = SD.open("/");
    printDirectory(root, 0);
    root.close();
  }


  void loop() {
    // Здесь будет наша программа
  }

  void printDirectory(File dir, int numTabs) {
    int cursorY = 80;  // Initial Y position for text
    while (true) {
      File entry = dir.openNextFile();
      if (!entry) {
        // No more files
        break;
      }
      /*
    if (cursorY > tft.height() - 20) {
      // If we reach the bottom of the screen, clear it and continue
     // tft.fillScreen(TFT_BLACK);
      cursorY = 10;
    }
*/
      // tft.setCursor(10, cursorY);
      // tft.setTextFont(1);
      // tft.setTextSize(1);
      for (uint8_t i = 0; i < numTabs; i++) {
        //  tft.print('\t');
      }
      // tft.print(entry.name());
      if (entry.isDirectory()) {
        //   tft.println("/");
        Serial.print(entry.name());
        Serial.println("/");
        printDirectory(entry, numTabs + 1);
      } else {
        //     tft.print("\t\t");
        //     tft.println(entry.size(), DEC);
        Serial.print(entry.name());
        Serial.print("\t\t");
        Serial.println(entry.size(), DEC);
      }
      cursorY += 10;  // Move to the next line
      //    entry.Close();
    }
  }
Спойлер


#include <SPI.h>
#include <SD.h>
#include <FS.h>
#include "SPIFFS.h"

//SD Card ON VSPI
#define VSPI_SCK 14
#define VSPI_MISO 16
#define VSPI_MOSI 17
#define VSPI_CS 21 //15

//SD Card ON HSPI
#define HSPI_SCK 14
#define HSPI_MISO 16
#define HSPI_MOSI 17
#define HSPI_CS 21 //5

//SD Card ON FSPI
#define FSPI_SCK 14
#define FSPI_MISO 16
#define FSPI_MOSI 17
#define FSPI_CS 21 //15

//uninitalised pointers to SPI objects
//SPIClass * vspi1 = NULL;  // SD

//SPIClass spiVspi(VSPI);
SPIClass spiHspi(HSPI);
//SPIClass spiFspi(FSPI);

void setup() {
  Serial.begin(115200);

  Serial.println("Initializing SD card...");
  // IF VSPI
  //spiVspi.begin(VSPI_SCK, VSPI_MISO, VSPI_MOSI, VSPI_CS);
  //if (!SD.begin(VSPI_CS, spiVspi, 4000000)) {
  // Serial.println("Card Mount Failed");  

  // IF HSPI
  spiHspi.begin(HSPI_SCK, HSPI_MISO, HSPI_MOSI, HSPI_CS);
  if (!SD.begin(HSPI_CS, spiHspi, 4000000)) {
  // Serial.println("Card Mount Failed");

  // IF FSPI
  // spiFspi.begin(FSPI_SCK, FSPI_MISO, FSPI_MOSI, FSPI_CS);
  //  if (!SD.begin(FSPI_CS, spiFspi, 4000000)) {
      Serial.println("Card Mount Failed");
      //   tft.setCursor(10, 50);
      //   tft.println("Card Mount Failed");
      return;
    }

    uint8_t cardType = SD.cardType();
    if (cardType == CARD_NONE) {
      Serial.println("No SD card attached");
      //    tft.setCursor(10, 50);
      //    tft.println("No SD card attached");
      return;
    }

    Serial.print("SD Card Type: ");
    if (cardType == CARD_MMC) {
      Serial.println("MMC");
    } else if (cardType == CARD_SD) {
      Serial.println("SDSC");
    } else if (cardType == CARD_SDHC) {
      Serial.println("SDHC");
    } else {
      Serial.println("UNKNOWN");
    }

    uint64_t cardSize = SD.cardSize() / (1024 * 1024);
    Serial.print("SD Card Size: ");
    Serial.print(cardSize);
    Serial.println("MB");

    //  tft.setCursor(10, 50);
    //  tft.println("SD card initialized");

    Serial.println("Listing files in root directory:");
    //  tft.fillScreen(TFT_BLACK);
    //  tft.setCursor(10, 10);
    //  tft.setTextSize(1);
    File root = SD.open("/");
    printDirectory(root, 0);
    root.close();
  }


  void loop() {
    // Здесь будет наша программа
  }

  void printDirectory(File dir, int numTabs) {
    int cursorY = 80;  // Initial Y position for text
    while (true) {
      File entry = dir.openNextFile();
      if (!entry) {
        // No more files
        break;
      }
      /*
    if (cursorY > tft.height() - 20) {
      // If we reach the bottom of the screen, clear it and continue
     // tft.fillScreen(TFT_BLACK);
      cursorY = 10;
    }
*/
      // tft.setCursor(10, cursorY);
      // tft.setTextFont(1);
      // tft.setTextSize(1);
      for (uint8_t i = 0; i < numTabs; i++) {
        //  tft.print('\t');
      }
      // tft.print(entry.name());
      if (entry.isDirectory()) {
        //   tft.println("/");
        Serial.print(entry.name());
        Serial.println("/");
        printDirectory(entry, numTabs + 1);
      } else {
        //     tft.print("\t\t");
        //     tft.println(entry.size(), DEC);
        Serial.print(entry.name());
        Serial.print("\t\t");
        Serial.println(entry.size(), DEC);
      }
      cursorY += 10;  // Move to the next line
      //    entry.Close();
    }
  }
1 лайк

Для проверки дисплея на контроллере ST7796 можно воспользоваться модифицированным скетчем из примеров:

Спойлер
/*
 An example analogue clock using a TFT LCD screen to show the time
 use of some of the drawing commands with the library.

 For a more accurate clock, it would be better to use the RTClib library.
 But this is just a demo. 
 
 This sketch uses font 4 only.

 Make sure all the display driver and pin connections are correct by
 editing the User_Setup.h file in the TFT_eSPI library folder.

 #########################################################################
 ###### DON'T FORGET TO UPDATE THE User_Setup.h FILE IN THE LIBRARY ######
 #########################################################################
 
 Based on a sketch by Gilchrist 6/2/2014 1.0
 */

#include <SPI.h>
#include <TFT_eSPI.h>  // Hardware-specific library

#define TFT_GREY 0x5AEB

TFT_eSPI tft = TFT_eSPI();  // Invoke custom library

float sx = 0, sy = 1, mx = 1, my = 0, hx = -1, hy = 0;  // Saved H, M, S x & y multipliers
float sdeg = 0, mdeg = 0, hdeg = 0;
uint16_t osx = 120, osy = 120, omx = 120, omy = 120, ohx = 120, ohy = 120;  // Saved H, M, S x & y coords
uint16_t x0 = 0, x1 = 0, yy0 = 0, yy1 = 0;
uint32_t targetTime = 0;  // for next 1 second timeout

static uint8_t conv2d(const char* p);                                                 // Forward declaration needed for IDE 1.6.x
uint8_t hh = conv2d(__TIME__), mm = conv2d(__TIME__ + 3), ss = conv2d(__TIME__ + 6);  // Get H, M, S from compile time

bool initial = 1;

int IM0 = 48;
int IM1 = 47;
int BL = 13;
/*
#define LCD_BL  13  // Backlight pin (LED)
#define LCD_IM0 48  // Display Mode (true is SPI)
#define LCD_IM1 47  // Display Mode (true is SPI)
#define LCD_CS  42  // Chip Select pin (CS)
#define LCD_RST 39  // Reset pin (RST)
#define LEDA    33  // LEDA pin (BL+)
#define LEDK    12  // LEDK pin (BL-) voor de backlight (stel deze ook in)
*/


void setup(void) {
  Serial.begin(115200);
  Serial.println("Часики запущены");

  // Здесь надо настроить дисплей для работы по SPI
  pinMode(IM0, OUTPUT);
  pinMode(IM1, OUTPUT);
  pinMode(BL, OUTPUT);
  digitalWrite(IM0, HIGH);
  digitalWrite(IM1, HIGH);
  // digitalWrite(BL, HIGH);
  analogWrite(BL, 128);

  tft.init();
  tft.setRotation(0);

  //tft.fillScreen(TFT_BLACK);
  //tft.fillScreen(TFT_RED);
  //tft.fillScreen(TFT_GREEN);
  //tft.fillScreen(TFT_BLUE);
  //tft.fillScreen(TFT_BLACK);
  tft.fillScreen(TFT_GREY);
  //tft.setInverse();

  tft.setTextColor(TFT_WHITE, TFT_GREY);  // Adding a background colour erases previous text automatically

  // Draw clock face
  tft.fillCircle(120, 120, 118, TFT_GREEN);
  tft.fillCircle(120, 120, 110, TFT_BLACK);

  // Draw 12 lines
  for (int i = 0; i < 360; i += 30) {
    sx = cos((i - 90) * 0.0174532925);
    sy = sin((i - 90) * 0.0174532925);
    x0 = sx * 114 + 120;
    yy0 = sy * 114 + 120;
    x1 = sx * 100 + 120;
    yy1 = sy * 100 + 120;

    tft.drawLine(x0, yy0, x1, yy1, TFT_GREEN);
  }

  // Draw 60 dots
  for (int i = 0; i < 360; i += 6) {
    sx = cos((i - 90) * 0.0174532925);
    sy = sin((i - 90) * 0.0174532925);
    x0 = sx * 102 + 120;
    yy0 = sy * 102 + 120;
    // Draw minute markers
    tft.drawPixel(x0, yy0, TFT_WHITE);

    // Draw main quadrant dots
    if (i == 0 || i == 180) tft.fillCircle(x0, yy0, 2, TFT_WHITE);
    if (i == 90 || i == 270) tft.fillCircle(x0, yy0, 2, TFT_WHITE);
  }

  tft.fillCircle(120, 121, 3, TFT_WHITE);

  // Draw text at position 120,260 using fonts 4
  // Only font numbers 2,4,6,7 are valid. Font 6 only contains characters [space] 0 1 2 3 4 5 6 7 8 9 : . - a p m
  // Font 7 is a 7 segment font and only contains characters [space] 0 1 2 3 4 5 6 7 8 9 : .
  tft.drawCentreString("Time flies", 120, 260, 4);

  targetTime = millis() + 1000;
}

void loop() {
  if (targetTime < millis()) {
    targetTime += 1000;
    ss++;  // Advance second
    if (ss == 60) {
      ss = 0;
      mm++;  // Advance minute
      if (mm > 59) {
        mm = 0;
        hh++;  // Advance hour
        if (hh > 23) {
          hh = 0;
        }
      }
    }

    // Pre-compute hand degrees, x & y coords for a fast screen update
    sdeg = ss * 6;                      // 0-59 -> 0-354
    mdeg = mm * 6 + sdeg * 0.01666667;  // 0-59 -> 0-360 - includes seconds
    hdeg = hh * 30 + mdeg * 0.0833333;  // 0-11 -> 0-360 - includes minutes and seconds
    hx = cos((hdeg - 90) * 0.0174532925);
    hy = sin((hdeg - 90) * 0.0174532925);
    mx = cos((mdeg - 90) * 0.0174532925);
    my = sin((mdeg - 90) * 0.0174532925);
    sx = cos((sdeg - 90) * 0.0174532925);
    sy = sin((sdeg - 90) * 0.0174532925);

    if (ss == 0 || initial) {
      initial = 0;
      // Erase hour and minute hand positions every minute
      tft.drawLine(ohx, ohy, 120, 121, TFT_BLACK);
      ohx = hx * 62 + 121;
      ohy = hy * 62 + 121;
      tft.drawLine(omx, omy, 120, 121, TFT_BLACK);
      omx = mx * 84 + 120;
      omy = my * 84 + 121;
    }

    // Redraw new hand positions, hour and minute hands not erased here to avoid flicker
    tft.drawLine(osx, osy, 120, 121, TFT_BLACK);
    osx = sx * 90 + 121;
    osy = sy * 90 + 121;
    tft.drawLine(osx, osy, 120, 121, TFT_RED);
    tft.drawLine(ohx, ohy, 120, 121, TFT_WHITE);
    tft.drawLine(omx, omy, 120, 121, TFT_WHITE);
    tft.drawLine(osx, osy, 120, 121, TFT_RED);

    tft.fillCircle(120, 121, 3, TFT_RED);
  }
}

static uint8_t conv2d(const char* p) {
  uint8_t v = 0;
  if ('0' <= *p && *p <= '9')
    v = *p - '0';
  return 10 * v + *++p - '0';
}

настройки файла User_Setup.h библиотеки TFT_eSPI!
Дисплей работает на максимально возможной частоте SPI в 80 Мегагерц.

Спойлер
#define USER_SETUP_INFO "User_Setup"
#define ST7796_DRIVER       // Generic driver for common displays

//#define TFT_RGB_ORDER TFT_RGB  // Colour order Red-Green-Blue
//#define TFT_RGB_ORDER TFT_BGR  // Colour order Blue-Green-Red
#define TFT_INVERSION_ON
// #define TFT_INVERSION_OFF

// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP   ######

// For ESP32 Dev board 
// The hardware SPI can be mapped to any pins

//#define TFT_MISO 46 	// 
#define TFT_MOSI 45		// 
#define TFT_SCLK 40
#define TFT_CS   42  	// Chip select control pin
#define TFT_DC   41  	// Data Command control pin
#define TFT_RST  39 	// Reset pin (could connect to RST pin)
//#define TFT_RST  -1   // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST

//#define TOUCH_CS 21   // Chip select pin (T_CS) of touch screen

//#define TFT_WR 22     // Write strobe for modified Raspberry Pi TFT only

#define LOAD_GLCD   // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2  // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4  // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6  // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7  // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8  // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT

#define SPI_FREQUENCY  80000000

// Optional reduced SPI frequency for reading TFT
#define SPI_READ_FREQUENCY  80000000

// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
#define SPI_TOUCH_FREQUENCY  2500000

// The ESP32 has 2 free SPI ports i.e. VSPI and HSPI, the VSPI is the default.
// If the VSPI port is in use and pins are not accessible (e.g. TTGO T-Beam)
// then uncomment the following line:
#define USE_HSPI_PORT

// Comment out the following #define if "SPI Transactions" do not need to be
// supported. When commented out the code size will be smaller and sketches will
// run slightly faster, so leave it commented out unless you need it!

// Transaction support is needed to work with SD library but not needed with TFT_SdFat
// Transaction support is required if other SPI devices are connected.

// Transactions are automatically enabled by the library for an ESP32 (to use HAL mutex)
// so changing it here has no effect

// #define SUPPORT_TRANSACTIONS

1 лайк

eet smakelijk!!
Maar dat is zeer mooi!

1 лайк