Метеостанция на Arduino mega nrf24l01+ цветной tft дисплей 3,5"

Добрый день всем.Делаю метеостанцию на мега 2560+ тфт дисплей 3,5" Взято из сайта Метеостанция на Arduino mega nrf24l01+ цветной tft дисплей 3,5 дюйма, Видео, Смотреть онлайн. Сразу напишу , автор написал, что схему он не рисовал, собирал на колене, и больше на вопросы не отвечал. Подключил датчик dht11 на пин 2, часы ds3231 на пины 20, 21.Залил скетч появились полтора окошка из 6. И справил данные дисплея, дорисовал остальные окошки, дальше ничего не получается. Если кто делал, прошу выложить скетч, или указать мне мои ошибки.

#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include "iarduino_RTC.h"
#include <ds3231.h>

#define ds3231pin (20,21);

#include <SPI.h>
#include <RF24.h>
RF24 radio(9, 10);
const uint32_t pipe = 123456789;
 

#include <Time.h>
#include <UTFT.h>
extern uint8_t nadianne[];
extern uint8_t DotMatrix_M[]; //Подключаем шрифт DotMatrix_M
extern uint8_t DotMatrix_XL_Num[]; //Подключаем шрифт SevenSeg_XXXL_Num
extern uint8_t GroteskBold32x64[];
extern uint8_t GroteskBold24x48[];
extern uint8_t SevenSegNumFontPlusPlus[];
extern uint8_t Dingbats1_XL[];
extern uint8_t GroteskBold16x32[];
extern uint8_t arial_italic[];
extern uint8_t nadianne[];
extern uint8_t hallfetica_normal[];
extern uint8_t various_symbols[];
extern uint8_t Various_Symbols_16x32[];
//extern uint8_t SmallFont[];


UTFT myGLCD(CTE40, 38, 39, 40, 41);   // Remember to change the model parameter to suit your display module!

  float data1; 
  float data2;
  float data3;
  
  void setup()
{
  Serial.begin(9600);
  pinMode(9, INPUT);
  Serial.print("rx 2");
  Serial.println();
  dht.begin();
  radio.begin();

  //radio.setChannel(1);// МОЖНО УБРАТЬ
  //radio.setPALevel(RF24_PA_MIN);
//   iarduino_RTC (ds3231[,20[,21]]) 
  radio.setDataRate(RF24_250KBPS); // RF24_1MBPS или RF24_2MBPS
  radio.openReadingPipe(1,pipe); // открыть канал на приём
  //radio.powerUp();
  radio.startListening(); // приём
  
  myGLCD.InitLCD(); //Инициализируем дисплей
//myGLCD.fillScr(255, 255, 0); //Закрашиваем дисплей черным цветом
  myGLCD.clrScr();
  
  myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(0,4,220,0);
  
  myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(220,4,440,0);
  
   myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(0,180,220,182);
  
    myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(440,180,440,0);

   myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(220,90,440,90);
  
 myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(220,180,440,180);

   myGLCD.setColor(255, 225, 225);
  myGLCD.fillRect(0,280,440,280); 

   myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(1,270,5,0);

    myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(440,280,440,0);

   myGLCD.setColor(255, 255, 255);
  myGLCD.fillRect(220,280,220,0);

 
  myGLCD.setColor(255, 255, 255); //розовый, 255,225,225 синий,255,225,255 светло голубой
  myGLCD.fillRect(218,182,220,0);
  
  myGLCD.setColor(255, 255, 255); //розовый, 255,225,225 синий,255,225,255 светло голубой
  myGLCD.fillRect(0,90,220,96);
  
  myGLCD.setColor(255, 0, 255);
  myGLCD.setFont(hallfetica_normal);
  myGLCD.print("Street temp", 40, 5);
  
  myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("mm", 182,110);
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Hg", 186,125);
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Pressure", 20,94);
     
  myGLCD.setColor(0, 255, 255);
  myGLCD.setFont(hallfetica_normal);
  myGLCD.print("Home temp", 235, 5);
  
  myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("o", 365,20);
      
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("C", 380,30);
   
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("%", 370,110);
   
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("Humidity", 235,94);
   
    myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("o", 180,20);
   
   
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(hallfetica_normal);
   myGLCD.print("C", 195,30);
   }
  
  void loop()
{
 float h = dht.readHumidity(); // чтение датчика на пине 2
 float t = dht.readTemperature();    // чтение датчика на пине 2
 delay(2000);
 if (isnan(h) || isnan(t)) 
 {
 //Serial.println("Failed to read from DHT sensor!");
 return;
  }
  float hic = dht.computeHeatIndex(t, h, false);
  
  //radio.available();
         
  radio.read(&data1,32);
  delay(500);
  Serial.println(data1); 
  
 
//radio.available();
  
  radio.read(&data2,32);
  delay(500);
  Serial.println(data2);
  
//radio.available();
  
  radio.read(&data3,32);
  delay(500);
  Serial.println(data3);
  
  
  
  if (data1/133.3 > 730.00)
{
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(Various_Symbols_16x32);
   myGLCD.print("Q", 187,141);
   
}
else if (728.00 < data1/133.3 <730.00)
{
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(Various_Symbols_16x32);
   myGLCD.print("P", 187,141);
  }
  else if (715.00 < data1/133.3 <728.00)
{
   myGLCD.setColor(255, 0, 255);
   myGLCD.setFont(Various_Symbols_16x32);
   myGLCD.print("<>", 187,141);

 
}
  //else
  //{
// Действие C
//}
  
  myGLCD.setColor(255, 0, 255);
  myGLCD.setFont(GroteskBold32x64);
  myGLCD.printNumF(data3, 1, 52, 20);
   
  myGLCD.setColor(255, 0, 255); //Цвет отображения
  myGLCD.setFont(GroteskBold32x64); //Шрифт для отображения
  myGLCD.printNumF(data1, 1, 20, 110);
  
     
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(GroteskBold32x64);
   myGLCD.printNumF(data2,1,235,20);
      
      
   myGLCD.setColor(0, 255, 255);
   myGLCD.setFont(GroteskBold32x64);
   myGLCD.printNumF(dht.readHumidity(),1,235,110);
   
   //myGLCD.setColor(0, 255, 0);
   //myGLCD.fillCircle(70, 205, 17); //Верхняя точка
   //myGLCD.fillCircle(90, 225, 3); //Верхняя точка
   //myGLCD.fillCircle(85, 221, 3);
   //myGLCD.fillCircle(95, 215, 3);
   //myGLCD.fillCircle(90, 225, 3);
   //myGLCD.fillCircle(90, 225, 3);
   
   //rtc.setTime(12, 0, 0);
   
   //myGLCD.setColor(0, 255, 255);
   //myGLCD.setFont(GroteskBold32x64);
   //myGLCD.print(rtc.getTimeStr(),20,190);
      
   }
  

не очень информативно.
Что именно пытались сделать и что не получается?
Не знаете, что писать?Или написали, но код не компилируется? Или компилируется, но не работает?
И еще десятки вариантов…

@Влад47 , слишком уж Вы неудачный проект для повторения выбрали. Неудачный в том плане, как он неаккуратно представлен его автором. Скетчи выложены в виде каких-то огрызков - явно не конечный вариант. Схемы нет. Нормального описания нет. Уж чего-чего, а подобных “метеостанций” в интернете полно, есть из чего и получше выбрать.
Вы хоть поняли, что в оригинале проект состоит из двух модулей - базового и уличного, которые общаются по радиоканалу?

Да, я понял это. Я приобрел все детали и для приемника (базовый) и для передатчика. Сейчас я хочу запустить приемник. После моих изменений скетч загружается, на дисплей выводится 6 окошков, в 4-х надписи ( t улицы, комнаты, давление, влажность) на английском. И все. Передатчик я еще не собирал, решил раньше наладить приемник. Подключил датчик и часы , но не могу добиться показаний. Я в программировании абсолютный чайник,

То есть мне надо в программе запустить часы и датчик, и вывести на дисплей, сначала запустить, потому что на монитор порта ничего не выводится

Типа того. Выкинте из скетча всё лишнее и добавляйте функции по одной.

p.s. Перенесите кто-нибудь тему в Песочницу.

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

А что Вы со времени последнего сообщения сделали? Какие изменения?

о каких часах может идти речь если в коде их нет?
И если уж заниматься модулем часов, то использовать нормальную библиотеку

  1. Загрузить тестовый скетч от библиотеки и установить дату и время в модуле по системному времени компьютера

Добавлю от себя: и код на редкость кривой.
Я бы не стал повторять такой проект, т.к. вероятность того, что он содержит очень серьезные ошибки близка к 100%.
Намучаетесь Вы с ним.

Добрый день! Скачал и установил библиотеку “RTClib.h”. Загрузил и запустил тест ds3231. В монитор порта выводятся буквы f,x , пустые квадратики и зеркальный знак вопроса по 1, 2, или 3 подряд

Если бы я нашел другой проект метеостанции на этих деталях (мега 2560+тфт3,5") я бы с радостью делал другой. Меня бы устроил проект метеостанции Гайвера, если бы вместо датчика СО2 был радиомодуль для внешней температуры.

ТС! Для начала тебе стоит проверить соответствие скорости порта в Serial.begin() и скорости в нижнем правом углу “Монитора порта”.

ТС! Я понимаю, что 99% новичков после такого замечания, которое я сделаю ниже переходят к ругани… :wink: Честно говоря - мне поровну.
НО!

  1. Справедливо, что почти каждый может научиться основам программирования и собрать несложный проект на микроконтроллере. Библиотека Wiring являющаяся основой концепции Ардуино сделана максимально простой в использовании.
  2. НО!!! Как и любой хобби - этя задача требует сил и времени. Кто-то учится шить, кто-то - готовить, кто-то гончарному делу, кто-то …пусть искусству патчворка. Играть на гитаре, даже ловить рыбу! ЛЮБОЕ хобби требует времени на обучение. Это понятно?
  3. Интеллектуальные хобби, такие как программирование и/или электроника требуют ЕЩЕ БОЛЬШЕ времени, просто по количеству информации, которую нужно изучить. Программирование придется знать в объеме среднего специального технического образования. В Болонской системе - примерно на уровне бакалавра. Для работы с электроникой нужны основы математического анализа - а это уже начальный курсмы ВУЗов, то есть тоже примерно уровень бакалавра.
  4. ТС! Ты реально планировал освоить всё это по “помощи” на форуме???
  5. Если программирование не станет твоим хобби, а тебе ПРОСТО НУЖНА МЕТЕОСТАНЦИЯ, то для этого обращаются к мастерам. Ту же не просишь на швейном форуме рассказать, как скроить “косуху”… да хоть “боксеры” :wink: ? Ты пойдешь в ателье, к мастеру, так?

ВЫВОД: Либо ты учишься. по типовой схеме - от “светодиодика” и т.д. Тебе тут помогут. Мы - хоббийный, клубный форум. Либо тебе нужна лишь метеостанция - тогда помочь тебе можно только изготовив её за тебя, за деньги.
Просто нет способа дать два совета “полному чайнику”, по твоему выражению, которые заменят годы обучения. Сколько лет учатся на гитаре играть? Да там для аккомпанемента нужно 5, много - 6 аккордов и несколько переборов… чему там учиться? :wink: Так?

в Мегу 2560 было грузить в лом, так как есть готовая связка DS3231 + RP2040, так как часики у меня откалиброваны и идут с расхождением в миллисекунды за 3 месяца, этот участок кода был замаркирован, вот вывод в консоль…

2023/2/5 (Sunday) 10:44:16
 since midnight 1/1/1970 = 1675593856s = 19393d
 now + 7d + 12h + 30m + 6s: 2023/2/12 23:14:22
Temperature: 27.50 C


Замечание очень справедливое, НО немного о себе. У меня незаконченное высшее (так получилось), но мат.анализ учил и сдавал. Тогда (60-е годы прошлого столетия, мне сейчас 75 лет) в мат анализе изучалось то, что сейчас в школе (диф.исчисление, интегралы и т.д.). О компах и программировании тогда и речи не было. В 90-х годах в журнале МК напечатали схему самодельного компа “Специалист” и пару программ игровых к нему. Тогда я пробовал программировать в машинных кодах и на бейсике. Потом были самоделки синклер-спектрум и подобные. В начале 2000-х можно было уже купить комп. Пошли двойки, тройки, четверки, пентиумы. Были готовые компы и готовые программы. Выйдя на пенсию и познакомившись с ардуино, начал опять делать самоделки. Сделал метеостанцию Гайвера, сделал наливатор. Думал, что смогу и эту, но… Живу только на пенсию, поэтому жаль выбрасывать детали которые купил, стать асом в программировании думаю не успею (сколько мне жить осталось) Вариант заказать это во-первых деньги, во вторых, и это главное, хотелось сделать самому. Иначе можно просто купить метеостанцию. Поэтому помощи хотелось, чтобы все не изучать, а как запустить тот или иной датчик, часы. Пробовал по примерам из разных сайтов, выдает ошибки. Уже много написал, Если откажете мне в помощи, я пойму.

Скорость поменял,выдает
2023/2/5 (Sunday) 11:44:17 и так далее, в конце температура 26

да никто в помощи не отказывает, дерзай, направление задано, разберись сначала с модулем DS3231, что на выходе я привёл, заработает модуль, далее попробуешь добавить в свой код вывод времени на дисплей…
“Большого слона едят по частям”
PS Профессор стал осваивать программирование (Паскаль) кода ему было под 90, вошёл во вкус

@Влад47 ещё раз поясню по поводу конкретно этого проекта метеостанции. Я Вам сказал, потом @andriano добавил, что Вы выбрали очень неудачный проект. Тут как такового проекта даже нет. Есть видео с некоторым устройством и какой-то огрызок промежуточного варианта скетча. Его нет никакого смысла чинить.
У Вас есть два варианта. 1) Забить на этот проект и найти новый, с отзывами, что он конкретно рабочий, готовый, что называется, под ключ. 2) Разобраться с каждым компонентом, используемым в этом проекте, и по сути написать для него свой скетч.
Ничего страшного во втором варианте нет. И как только Вы начнёте что-то делать и показывать, народ здешний Вам всегда поможет.
Возмём например базовый блок этой станции. Там есть экран, датчик влажности, часы, радиомодуль. Вот каждый из этих модулей и нужно попробовать по одному. С экраном, судя по вашим словам, Вы уже умеете работать. У Вас же получилось что-то нарисовать на экране и вывести какой-то текст в нужное место? Отлично!
Дальше для разгона подключите датчик dht11, как самую простую вещь. Для работы с ним есть библиотеки. В библиотеках есть элементарные примеры. Добейтесь чтобы они работали. Обычно в таких примерах вывод информации осуществляется в serial. Когда пример заработает. Соберите вместе экран и этот датчик. А вывод вместо serial сделайте на экран.
Потом аналогичным образом подключайте часы. И т.д.
Если с чем-то возникла проблема, то показывайте конкретный скетч в котором она возникла и соответствующую схему с которой работаем (если не освоили никакой редактор схем, то на худой конец аккуратно нарисованную на бумажке и сфотографированную).

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