#1 Re: Проекти » Нужна помощь в разводке платы » 2021-05-03 10:33:15

Ничего общего с моим проектом: ни полевых транзисторов, ни Atmega2560. А про PoE на ESP8266 я вообще молчу.

#2 Re: Різне » Пропозиції та зауваження по опису та назвах товарів українською мовою » 2021-04-19 19:20:57

Я не сильно большой знаток украинского языка, но вроде бы мама по-украински будет "Мамо" или "Мати".

Можете назвать "Хлопець" и "Дівчина", если так сильно хочется, чтобы максимально отличалось от русского языка, но такие вещи как правило наоборот отпугивают людей.

#3 Проекти » Нужна помощь в разводке платы » 2021-04-18 08:57:09

trackball
відповідей: 2

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

На плате должны быть:
1) Современный импульсный преобразователь напряжения (или даже 2; возможно 1 преобразователь и 1 кренка) на напряжения 5В и 3.3В
2) Микроконтроллер Atmega2560 + кварц
3) MAX232 (2 RS232 порта на 1 микросхеме)
4) Часы DS3231
5) Ethernet на чипе W5500 с трансформатором (возможно с PoE)
6) Flash 25Q128
7) 4 полевых транзистора для управления внешними устройствами (12В реле, электромагнитные катушки)
8) 5 входов для кнопок
9) 2 логических выхода (0/5 В)
10) разъем для внутрисхемного программирования и отладки

Желательно все в SMD-корпусах. Должны присутствовать все необходимые защиты, согласование уровней, обвязка...
Для начала интересует ориенитировочная цена.

#4 Re: Апаратні питання » W5500 запускается через раз » 2021-03-23 16:41:59

Напряжение проверял до пайки и после. Осцилографа нет, но по тестеру скачков не наблюдаю. До пайки на макетке модули вели себя точно так же. Думал, что из-за плохих контактов. Спаял всё (проводки не больше 2-х см) - а ничего не изменилось. Воткнул конденсатор на 220 мФ (на віход стабилизатора 3.3 В), результат тот же.

#5 Програмування Arduino » Запись в 25Q64 » 2021-03-23 16:24:35

trackball
відповідей: 0

Здравствуйте. Никак не могу побороть работу с Flash-памятью на Arduino UNO. Подключил через преобразователь уровней. SS пин на 9 пин UNO. (На 10-ом подключен W5500). С библиотекой SPIMemory читать флешку получается, а писать в нее - нет. Взял за основу эту библиотеку, выкинул все лишнее и получился такой код:

#define BAUD_RATE 2400

#define Flash_CS 9

#include <SPI.h>

// WinBond flash commands
#define WB_WRITE_ENABLE       0x06
#define WB_WRITE_DISABLE      0x04
#define WB_CHIP_ERASE         0xc7
#define WB_READ_STATUS_REG_1  0x05
#define WB_READ_DATA          0x03
#define WB_PAGE_PROGRAM       0x02
#define WB_JEDEC_ID           0x9f

#define SPI_PAGESIZE 256

void not_busy(void) {
  PORTB |= 4; // digitalWrite(W5500_CS, HIGH);
  PORTB &= 253; //  digitalWrite(Flash_CS, LOW);
  SPI.transfer(WB_READ_STATUS_REG_1);
  while (SPI.transfer(0) & 1) {};
  PORTB |= 2; // digitalWrite(Flash_CS, HIGH);
}

void _get_jedec_id(byte *b1, byte *b2, byte *b3) {
  PORTB |= 4; // digitalWrite(W5500_CS, HIGH);
  PORTB &= 253; //  digitalWrite(Flash_CS, LOW);
  SPI.transfer(WB_JEDEC_ID);
  *b1 = SPI.transfer(0); // manufacturer id
  *b2 = SPI.transfer(0); // memory type
  *b3 = SPI.transfer(0); // capacity
  PORTB |= 2; // digitalWrite(Flash_CS, HIGH);
  not_busy();
}  

void _read_page(word page_number, byte *page_buffer) {
  PORTB |= 4; // digitalWrite(W5500_CS, HIGH);
  PORTB &= 253; //  digitalWrite(Flash_CS, LOW);
  SPI.transfer(WB_READ_DATA);
  SPI.transfer((page_number >> 8) & 0xFF);
  SPI.transfer((page_number >> 0) & 0xFF);
  SPI.transfer(0);
  for (int i = 0; i < SPI_PAGESIZE; ++i) {
    page_buffer[i] = SPI.transfer(0);
  }
  PORTB |= 2; // digitalWrite(Flash_CS, HIGH);
  not_busy();
}

void _write_page(word page_number, byte *page_buffer) {
  PORTB |= 4; // digitalWrite(W5500_CS, HIGH);
  PORTB &= 253; //  digitalWrite(Flash_CS, LOW);
  SPI.transfer(WB_WRITE_ENABLE);
  PORTB |= 2; // digitalWrite(Flash_CS, HIGH);
  PORTB &= 253; //  digitalWrite(Flash_CS, LOW);
  SPI.transfer(WB_PAGE_PROGRAM);
  SPI.transfer((page_number >>  8) & 0xFF);
  SPI.transfer((page_number >>  0) & 0xFF);
  SPI.transfer(0);
  for (int i = 0; i < SPI_PAGESIZE; ++i) SPI.transfer((byte)page_buffer[i]);
  PORTB |= 2; // digitalWrite(Flash_CS, HIGH);
  not_busy();
}

void setup() {
  Serial.begin(BAUD_RATE);
  Serial.println("");
  Serial.println("=====================");
  Serial.println("START");
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  SPI.begin();
  SPI.setDataMode(0);
  SPI.setBitOrder(MSBFIRST);
  digitalWrite(10, HIGH);

//  flash.begin();

}

void startTest() {
  byte data_buffer[SPI_PAGESIZE];

  int startAddress = 32;
  int i4 = 0;

      uint8_t b1, b2, b3;
/*
      uint64_t UNIQ = getUniqueID();
      byte* ptrB = (byte*)&UNIQ;
      Serial.print("UniqueID: ");
      for(b1=0;b1<8;b1++) {
        b2 = (byte*)(ptrB + b1);
        Serial.print(b2,HEX);
        Serial.print(" ");
      }
      Serial.println("");
*/

      _get_jedec_id(b1,b2,b3);
      Serial.print("Manufacturer ID: ");
      Serial.print(b1,HEX);
      Serial.print(" Memory Type: ");
      Serial.print(b2,HEX);
      Serial.print(" Capacity: ");
      Serial.println(b3,HEX);


    _read_page(startAddress, &data_buffer[0]);
Serial.print(" startAddress: ");
Serial.print(startAddress);
Serial.print(" old: ");
Serial.print(data_buffer[i4],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+1],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+2],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+3],HEX);
        data_buffer[i4]=0xFF;
        data_buffer[i4+1]=0xFF;
        data_buffer[i4+2]=0x12;
        data_buffer[i4+3]=0xFF;
Serial.print(" new: ");
Serial.print(data_buffer[i4],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+1],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+2],HEX);
Serial.print(" ");
Serial.println(data_buffer[i4+3],HEX);
  delay(1000);
    _write_page(startAddress, &data_buffer[0]);
Serial.print(" test: ");
Serial.print(data_buffer[i4],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+1],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+2],HEX);
Serial.print(" ");
Serial.println(data_buffer[i4+3],HEX);
  delay(1000);
    _read_page(startAddress, &data_buffer[0]);
Serial.print(" result: ");
Serial.print(data_buffer[i4],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+1],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+2],HEX);
Serial.print(" ");
Serial.print(data_buffer[i4+3],HEX);

}

void loop() {
  if(Serial.available() > 0) { // Пришли данные от считывателя
    char _tempRS232 = Serial.read();
    Serial.print(_tempRS232);
    if(_tempRS232=='0') {
      Serial.println("");
      Serial.print("START TEST");
      startTest();
    }
  }
}

Вроде все работает, но есть одно НО: при попытке записи байта 0xFF ячейка памяти не обновляется. Любой другой байт записывается нормально.

Вот результат в терминале:

=====================
START
10
START TESTManufacturer ID: 0 Memory Type: 0 Capacity: 0
 startAddress: 32 old: 0 0 FF F0 new: FF FF 12 FF
 test: FF FF 12 FF
 result: 0 0 12 F0

Подскажите, что не так делаю.

#6 Апаратні питання » W5500 запускается через раз » 2021-03-23 12:58:41

trackball
відповідей: 9

Здравствуйте. Имеется вот такой модуль:
W5500
Причем не один, а два. И с обоими одна и та же проблема.

Питаются Arduino UNO и Модуль W5500 от понижающего преобразователя на 5В (3А).
Подключаюю к Arduino UNO на стандартные пины SPI, земля у модуля и Arduino - общая. Сначала подключал напрямую, потом добавил в схему преобразователь уровней. Кроме модуля на шине SPI висит ещё флешка 25Q64 (SS: 9 pin). Не думаю, что она влияет, так как без нее все тоже самое.

Проблема в следующем: через раз модуль при включении не запускается. Желтый светодиод в разъеме Ethernet загорается, после этого загорается зеленый и оба светодиода сразу тухнут. Через 1 сек. всё повторяется. И так до бесконечности. Если выключить питание схемы, подождать, пока все светодиоды потухнут и включить питание - все начинает работать. Иногда модуль начинает работать нормально при первом включении.

Подскажите как бороться с этой проблемой. Куда копать и на что смотреть.

#7 Re: Програмування Arduino » Как вывести данные с ардуино на веб страницу? » 2020-10-27 19:46:53

Звучит примерно, как: научте шашлык меня кушать.

Разберитесь в Вашем примере что и куда отправляется, тогда и вопрос сам собой отпадёт.

#8 Re: Проекти » аттракцион Ардуино-управляемый тир » 2020-10-27 18:29:34

г0сть пише:
trackball пише:

Arduino Mega - это конечно круто, но 40 проводов тянуть в одну точку...

Я бы предложил взять контроллер попроще и подешевле и добавить к нему расширители портов, например MCP23017. К тому же у них есть выход прерывания по изменению уровня любого входа. Чуть больше плат, но меньше проводов и по деньгам чуть дешевле выйдет.

Все зависит от расстояния между кнопками и ардуинокй. ИМХО иногда лучше бросить 40 проводов чем трахаться с i2c из-за возможных проблем с большим расстоянием.

Полностью согласен, что "иногда". Но иногда и наоборот.

#9 Re: Проекти » аттракцион Ардуино-управляемый тир » 2020-10-27 18:28:25

DmytroDnipro пише:
trackball пише:

Arduino Mega - это конечно круто, но 40 проводов тянуть в одну точку...

Я бы предложил взять контроллер попроще и подешевле и добавить к нему расширители портов, например MCP23017. К тому же у них есть выход прерывания по изменению уровня любого входа. Чуть больше плат, но меньше проводов и по деньгам чуть дешевле выйдет. И с адресными светодиодами я бы не заморачивался. По простому - включение от тех же кнопок. Но если подсветка далеко от кнопок, то опять таки MCP23017 или 74HC595 для экономии проводов.

По большому счёту разница в пару долларов в железе, по сравнению со стоимостью всей остальной обвязки (светодиоды, транзисторы, резисторы подтяжки, кнопки и пр.), небольшая, но вот количество проводов и их укладка - это как раз то, на чём стоит сэкономить на стадии проектирования (в хорошем смысле).

Звучит грамотно. Но мне бы схему roll  - ведь я совсем мало понимаю в электронике, сейчас мне по силам скопировать схему, ну и может, скорректировать немного скетч под себя. Разработка - это, мягко говоря, не моё. И про прерывания я как-то не вкурил пока что, непонятная тема для меня.
Мне нужна помощь в том, чтобы показать правильную схему, ведь задача - я тут форум полистал - плёвая для местных шарящих. Тут и не такое ваяют.
Вопросы по сути вашего сообщения:
- не подскажете, может, какую ссылку, где поподробнее можно было бы почитать про использование MCP23017, и расширители портов?
- я правильно понимаю, с помощью этих расширителей можно сделать нужное количество пинов? - тогда как решается вопрос количества проводов?
- в АрдуиноИДЕ MCP23017 прошивается, или нужно что-то другое?

Набираем в поиске "MCP23017 Arduino", "74HC595 Arduino", "прерывания Arduino" - будет куча готовых примеров со схемами

#10 Re: Програмування Arduino » ESP8266 (ESP-12E) - Монитор порта: "rst cause:2, boot mode:(3,6))" » 2020-10-27 18:22:28

Вопрос на засыпку: D0 подтянут внешним сопротивлением на Vcc ?

Если да, то: читаем мануал внимательно. Для нормальной загрузки ESP8266 с флешки (у нее есть и другие варианты загрузки) D0 (GPIO15) должен быть в LOW, D3 (GPIO0) и D4 (GPIO2) должны быть в HIGH. После загрузки можете их использовать как хотите, но при старте обеспечьте именно такие уровни

#11 Re: Проекти » Собрать складской робот. » 2020-10-27 16:30:40

1) на работу можно добираться пешком, велосипедом, маршруткой, троллейбусом, трамваем, вертолётом, катером и пр. Причём можно комбинировать. Мы же не знаем, что за коробки и как их можно с полок снимать. Может внутри мягкие игрушки, тогда их можно просто скидывать с полок (шутка). Скорее всего коробки будут стоять на специальных поддонах (+500 грамм на вскидку), значит снимать нужно уже 2 кг.
2) Тележке прийдется возить на себе подъемник, двигатель подъемника, значит нужно увеличить вес АКБ. Да и для подъемника доп. вес АКБ не помешает (и как противовес, и как источник энергии для подъема/спуска груза).
3) На вскидку 4-х метровая алюминиевая лестница весит около 7 кг. Соответственно подъемник из того же материала (с учётом жесткости) будет весить килограмм 20, а из железа - как минимум 50.
4) Неровность полов: при наклоне тележки подъемник будет наклонятся вместе с ней. Даже в сложенном варианте - это все-равно рычаг. Какие перепады высот есть на складе?

Слишком много неизвестных...

#12 Re: Проекти » Собрать складской робот. » 2020-10-27 15:10:50

ну-ну...
Манипулятор (он же рычаг) 4 м. Жёсткость конструкции должна обеспечивать точное позиционирование на высоте 4 м +- 1-2 см (поправьте, если не прав). Дальше начинаем считать вес тележки, чтобы 4-х метровый рычаг с 1,5кг груза её не завалил случайно...
Хотя Вам простительно, вы же в отличии от ТС не утверждали, что разбираетесь в физике.

#13 Re: Проекти » Собрать складской робот. » 2020-10-27 14:27:41

Batu пише:

...Для начала что б снимать товар с полок на высоте 4 метра. Сам программист. И в физике соображаю...

Что-то мне подсказывает, что колёса от гироскутера не выдержат вес манипулятора

#14 Re: Проекти » аттракцион Ардуино-управляемый тир » 2020-10-27 14:07:20

Arduino Mega - это конечно круто, но 40 проводов тянуть в одну точку...

Я бы предложил взять контроллер попроще и подешевле и добавить к нему расширители портов, например MCP23017. К тому же у них есть выход прерывания по изменению уровня любого входа. Чуть больше плат, но меньше проводов и по деньгам чуть дешевле выйдет. И с адресными светодиодами я бы не заморачивался. По простому - включение от тех же кнопок. Но если подсветка далеко от кнопок, то опять таки MCP23017 или 74HC595 для экономии проводов.

По большому счёту разница в пару долларов в железе, по сравнению со стоимостью всей остальной обвязки (светодиоды, транзисторы, резисторы подтяжки, кнопки и пр.), небольшая, но вот количество проводов и их укладка - это как раз то, на чём стоит сэкономить на стадии проектирования (в хорошем смысле).

#15 Апаратні питання » Выбор МК для Ethernet » 2020-10-27 13:13:16

trackball
відповідей: 1

Всем привет.
Я ещё очень сильно плаваю в теме, но поиском так и не нашёл ответа.
Есть простенькая задача: подключить к интернету датчики (герконы, ИК-датчики движения) и светодиодики. Может быть ещё какие-нибудь релюшки, датчики температуры, но это уже не обязательное условие. Общее количество - 10-20 штук. Протокол: HTTP либо MQTT Проблем с подключением всего этого хозяйства к микроконтроллеру(микроконтроллерам) не вижу. Вопрос в цене.

Сейчас играюсь с ESP8266 (LoLin nodeMCU v3). Его цена порядка 3$ и плюс расширитель портов ещё где-то 1$. Но это WiFi, а я хочу уйти от радиоканала, тем более, что МК у меня как раз возле роутера жить будет. А с проводным вариантом что-то не могу найти ничего сравнительно недорогого. Один только W5500 выходит в 3$ + МК = получается раза в 2 дороже. Неужели нет хотя бы чего-то аналогичного по цене и объёму памяти для программы?

Что бы Вы посоветовали для таких задач? Какой МК? Какую платформу?

Підвал форуму