(перша частина тут)
Частина 2.
Дана стаття як і більшість статей на «Плетиві» - не візія, не концепція, не філософська мета, а опис цілком практичного власного досвіду.
Ціль даної статті: допомогти початківцям купити і зібрати комплект обладнання (контролер + світлодіодна панель), встановити на комп'ютер програмне забезпечення, відкрити проєкт-шаблон, змінити код-приклад, скомпілювати код, залити все, що вийшло в контролер, порадіти )
Особисто я купую обладнання в Китаї, так зазвичай дешевше. Посилка з Китаю, зазвичай, приходить за три-чотири тижня. Якщо не хочеться чекати, все це є в Україні. Можна довго розписувати тонкощі купівель в Китаї та плутати недосвідчених. Тому дам посилання на готові сторінки на aliexpress, знімаючи з себе відповідальність. Я колись там купував, все було добре. Якщо щось прийде несправне або не прийде взагалі – напишіть мені будь ласка на Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. , позабираю посилання. Я не отримую жодного центу з купівель за цими посиланнями. Вмієте шукати і обирати самі — краще так і зробіть.
Що треба купити?
1. Контролер NodeMCU
Наприклад, тут:
https://www.aliexpress.com/item/32665100123.html
Серед запропонованих пристроїв раджу вибрати таку версію: V3 Nodemcu-CH340
Чіп CH340 служить мостом між мікроконтроллером і USB-портом комп'ютера, що дозволяє завантажити прошивку в плату, а також передавати між собою дані. Ми далі будемо встановлювати драйвер саме для CH340.
Ціна контролера приблизно 70 грн.
2. Світлодіодний модуль MAX7219
Наприклад, тут:
https://www.aliexpress.com/item/32789160918.html
У цього продавця доступні модулі з світлодіодами зеленого і червоного кольору. Мені більше подобається спокійний зелений, а ви можете обрати модуль, який більше подобається вам. Необхідні для підключення проводи йдуть в комплекті.
Ціна приблизно 160 грн.
Все, купувати обладнання більше не треба.
Далі — виконуємо послідовно дану інструкцію і, може, все вийде.
— З’єднуємо контролер і світлодіодну панель згідно схеми проводами з комплекту світлодіодної панелі:
Пін на NodeMCU -> Пін на MAX7219
13 (D7) -> DIN
14 (D5) -> CLK
18 (D8) -> CS
+3,3 В або +5В -> VCC
G (земля) -> GND
— Скачуємо і встановлюємо драйвер для чіпа CH340G, що забезпечує зв’язок контролера з комп’ютером (для Windows).
— Після встановлення драйверу підключаємо NodeMCU до комп’ютера за допомогою кабеля для зарядки телефона з роз’ємом microUSB. Це дуже популярний кабель, сподіваюсь, знайдеться в господарстві, щоб не купувати.
— Після підключення контролера до комп’ютера треба знайти CH340G в списку пристроїв, що Windows визначила для NodeMCU (в прикладі це COM3):
Якщо при підключеному контролері ви бачите, що серед портів з’явився будь-який порт на CH340, то все коректно встановлено. На даному етапі можна відключити контролер від комп’ютера.
— Скачуємо Visual Studio Code з офіційного сайту і встановлюємо.
Для Windows 10 та Windows 11 скачуйте останню версію з сайту. Якщо у вас на комп’ютері встановлено версії Windows нижче 10, вам треба скачати більш стару версії Visual Studio code. Цитата з офіційного сайту: «VS Code will no longer provide product updates or security fixes on old Windows versions. VS Code version 1.70.3 is the last available release for Windows 7 users and version 1.79 will be the last available release for Windows 8 and 8.1 users».
— Запускаємо Visual Studio Code, переходимо в розширення (Extensions), в пошуку починаємо писати PlatformIO IDE, обираємо і встановлюємо розширення (шукайте кнопку Install). Якщо розширення вже встановлено, то ми побачимо, як у мене, Uninstall.
— Скачуємо архів, в якому проєкт-приклад зі всіма необхідними бібліотеками
— Розпаковуємо архів і запам’ятовуємо куди розпакували
— В Visual Studio Code обираємо «File – Open Folder» і обираємо папку, в яку щойно розпакували архів
— Обираємо файл main.cpp з папки src
Це і є скетч. Зверніть увагу на 21 рядок і далі.
Хочете засвітити світлодіод?
Визначаєте його координати і засвічуйте. Центр координат — в лівому верхньому куті. Ось як це просто:
matrix.drawPixel(1, 2, HIGH);
(з міркувань продуктивності пікселі відразу не надсилаються на світлодіодну панель. Змінюється лише внутрішній буфер растрового зображення)
matrix.write();
(відправка внутрішнього буферу растрового зображення на світлодіодну панель)
Хочете виключити цей світлодіод?
matrix.drawPixel(1, 2, LOW);
matrix.write();
Використання комбінації «Visual Studio Code + PlatformIO» зручно тим, що весь проект зберігається в одній папці. Тут і основний скетч і всі необхідні бібліотеки відповідних версій. Якщо перенести цю папку на інший комп’ютер, де встановлено «Visual Studio Code + PlatformIO» то все буде так само працювати.
Нашу програму будемо писати у файлі main.cpp
Програмуємо мовою програмування Arduino C. В інтернеті багато прикладів, можна розібратися з синтаксисом. Visual Studio Code підкаже помилки на етапі компіляції скетча.
Залишилось навчитися це все закидувати у контролер. Для цього треба скомпілювати бінарний файл. Натискаємо на «PlatformIO Bild».
Якщо немає помилок, то в результаті компіляції буде створено бінарний файл. Якщо в скетчі підключаються бібліотеки і в папці проєкту є ці бібліотеки, то все коректно скомпілюється. Дуже зручно. Про успішну компіляцію буде сповіщено чудовим зеленим SUCCESS:
Залишається залити вже скомпільований бінарний файл безпосередньо в контролер.
Для чого необхідно підключити до комп’ютера контролер і натиснути «PlatformIO Upload».
Можна пропустити «PlatformIO Bild» і відразу натискати «PlatformIO Upload», тоді спочатку буде скомпільовано бінарний файл і відразу залито його в контролер.
Це все )
Ось як мигає світлодіод на панелі з прикладу-скетчу.
При роботі в класі, не потрібно багато контролерів і панелей. Учень або група учнів можуть написати скетч і перевірити його на помилки, скомпілювавши бінарний файл. А після того, як звільниться контролер – підключити його до свого комп'ютера, залити в нього бінарний файл і перевірити роботу на реальному пристрої.
З використанням комбінації контролера і світлодіодної панелі можна розбирати цикли (робити усілякі біжучі вогні), крутити тексти (біжучі рядки). Розбирати роботу різних бібліотек. Для тих, хто цікавиться більш глибоко, в контролері NodeMCU є WiFi, тобто можна на контролері підняти вебсервер і керувати контролером по WiFi зі смартфона.
Або нехай контролер щось вимірює і результати роботи кудись відправляє в інтернет, підключившись до шкільного WiFi. Саме так в школі, де я працюю реалізована система моніторингу якості вуличного повітря німецького проєкту «sensor.community». Програмне забезпечення розповсюджується безкоштовно, в самій станції моніторингу, яку ми зібрали, не перший рік працює той самий NodeMCU.
До контролера можна підключати датчики, з контролера можна керувати механізмами управління.
Програмувати можна і на Windows (від версії 7 і далі) і на Лінукс і на MacOS. Visual Studio Code безкоштовна, переважна більшість бібліотек – також.
Кому сподобалось – пробуйте.
Для ознайомлення і старту, сподіваюсь, даної статті і папки-прикладу абсолютно достатньо.
Успіхів!
Анатолій Анатолійович,
липень 2023
Частина 1.
Згідно сучасної концепції української середньої базової освіти, програмування складає вагому частину курсу інформатики. Це імітаційні середовища на кшталт code.org (стаття на Плетиві) , це Scratch, в якому можна створювати цікаві речі. Це багато інших чудових систем і концепцій, що знаходять, пишуть, перекладають і використовують неспокійні душею вчителі. І незважаючи на очевидну революцію штучного інтелекту, в освіті залишаються актуальними ці самі неспокійні вчителі поряд з неспокійними учнями-ачомучками.
Програмування розумних пристроїв. Для чого це може бути корисним? Які проєкти можна реалізувати в даному напрямку?
Реальна задача: систематично вимірЯти вологість ґрунту в вазонах по школі. Не використовувати ж для цього цілий комп’ютер чи ноутбук. Це незручно, дорого. Крім того, треба якось подружити ноутбук і якісь датчик, що безпосередньо буде вставлятися в землю. І потрібно буде носити за собою датчик разом з ноутбуком, дротами і брудними від ґрунту руками.
А якщо купити контролер за 70 гривень, датчик вологості за 100 гривень, невеликий екран за 60 гривень. Все це вкласти в якийсь корпус а для живлення використати звичайний павербанк? Залишиться написати програму для роботи цього пристрою. Завдяки великій кількості бібліотек, програмування такого контролера виходить зовсім нескладним. Особисто у мене програма для такого пристрою вийшла менше 100 рядків коду, більша частина з яких про те, в якому місці екрану і як вивести текст. І більшу частину коду я знайшов в інтернеті, де безкоштовно пояснили деталі. Готовий пристрій був подарований вчительці біології, яка опікується шкільними рослинами.
Ще один приклад з реалізованих – система моніторингу якості повітря в приміщенні, де перебувають люди. Той самий контролер за 70 гривень, екран за 60 гривень, високоточний датчик температури і вологості (DHT22) – 150 гривень, датчик СО2 (MH-Z19B) – тисяча гривень. Останній датчик мені подарували. Програма для даного пристрою у мене вийшла також менше 100 рядків коду. Ось приклад, як воно працює, ще без корпусу:
В реальності екран так не мерехтить. А готовий пристрій моніторить повітря в кабінеті, де я працюю, він виручив нас і при регулюванні системи вентиляції в шкільному укритті.
На цьому самому контролері вже три роки працюють шкільні розумні годинники, що повідомляють про час уроків і перерв, виводять інформаційні повідомлення. Ось опис і відео роботи цього годинника на Плетиві.
Всі ці пристрої я будував на контролері NodeMCU. Він дешевий, в Китаї можна знайти такий за 70 гривен. Це набагато дешевше, ніж, припустимо micro:bit, що розроблений BBC для використання в комп’ютерній освіті Сполученого Королівства, що коштує в Україні біля тисячі гривень. NodeMCU – значно дешевший. Якщо більше немає грошей, то можна лише його купити і вже цього достатньо. Беремо кабель від зарядки телефону (micrоUSB) і підключаємо цей контролер до комп’ютера. На контролері є вбудований світлодіод і ми можемо їм керувати. Запалювати і виключати. Як це робити? Спитайте в інтернеті «NodeMCU blink». Для багатьох першою програмою для контролера і є керування вбудованим світлодіодом.
Якщо є можливість і хочеться трохи більше, то можна докупити ще щось цікаве. Для своїх експериментів я використовую окрім NodeMCU світлодіодну панель MAX7219. Ось так вона виглядає і коштує близько 160 грн.
Щоб з’єднати контролер і панель паяти нічого не треба. Проводи входять в комплект, а для наших експериментів додатковий роз’єм не потрібний.
В січні 2021 року я на своєму гуртку вперше спробував програмування контролерів. На комп’ютери заздалегідь поставив все необхідне програмне забезпечення. В папці-проекті був зразок коду, так званий скетч. Учні відкрили папку, переробили скетч, одним кліком мишки скомпілювали зі скетча бінарний файл та залили його в контролер.
Все відразу і запрацювало, тобто при невеличкій стартовій підготовці програмування контролеру може мати достатньо низький поріг входження.
Ось, результати першого уроку:
Автор – Олександр Соколов
Автор – Дмитро Маловатов
Звертаю увагу – це перший урок. Тобто, немає нічого складного, якщо заздалегідь поставити необхідне програмне забезпечення. Хочете засвітити світлодіод – вкажіть його координати.
Нескладно. Недорого. Цікаво?
В другій частині статті буде покрокова інструкція як зробити таке (тут відео в динаміці):
(продовження, частина друга)
Літом 2020 року я захопився програмуванням контроллерів. І перед початком нового навчального року навіть виготовив три екземпляри для школи , в якій працюю.
Ці пристрої можуть бути корисними для роботи школи в нових умовах. Учні зможуть більш оптимально керувати своїм часом, дізнаватися шкільні новини. Батьки, які згідно нових правил будуть чекати дітей за межами шкільної будівлі, за допомогою даних пристроїв зможуть отримати актуальну інформацію про події шкільного життя, про розклад дзвінків, оперативні оголошення.
Розумні шкільні годинники вміють:
— показувати точний час, синхронізуючись з серверами точного часу в Інтернеті
— показувати дату і день тижня
— показувати три погодні блоки: погода зараз (температура, вітер, тиск, хмари, вологість) та прогнози погоди на сьогодні і на завтра
— коли триває урок, годинник показує який урок за номером, скільки хвилин залишилось до його завершення і в який час урок завершиться
— коли триває перерва, годинник показує, через скільки хвилин почнеться наступний урок, вказуючи його номер і час початку
— годинник уміє опрацьовувати нестандартні розклади уроків (робоча субота, друга зміна, скорочені уроки, зсунутий час перерв). Інформацію про нестандартні випадки всі шкільні розумні годинники самостійно скачують з сайту школи. Система централізована, достатньо розмістити на сайті школи єдиний файл з нестандартним розкладом — всі шкільні годинники скачають цей файл і розпочнуть використовувати для інформування
— годинники в початковій школі використовують розклад дзвінків для початкової школи
— годинники виводять інформаційні повідомлення. Вони скачують їх з сайту школи і виводять у вигляді рухомого рядка згідно графіку. Наприклад, у файлі інформаційних повідомлень на сайті школи вказано, що повідомлення «Мийте руки з милом» необхідно демонструвати кожну хвилину, а повідомлення «Ви можете в будь-який час безконтактно поміряти температуру у шкільної медичної сестри» — один раз на 10 хвилин. Тексти повідомлень і графік показу можна корегувати прямо на сайті, годинники скачають собі оновлені версії файлів і будуть використовувати при інформуванні. Якщо в конкретну хвилину необхідно показати кілька повідомлень, вони продемонструються послідовно
— годинники в початковій школі використовують свій набір інформаційних повідомлень і повільну швидкість переміщення рухомого рядка, дозволяючи учням прочитати тексти
— годинники, що показують інформацію на вулицю для батьків, використовують свій окремий набір інформаційних повідомлень
— розумний шкільний годинник захищений від стороннього інформаційного впливу
Технічні дані: Обладнання: Контролер NodeMCU + дві світлодіодні панелі MAX7219
Живлення: DC 5V (micro USB)
Корпус: прозорий, допитливі учні можуть побачити, що в годинниках всередині.
Собівартість запчастин для годинника: близько 500 гривень при купівлі в Китаї
Формат зовнішніх файлів розкладів та інформаційних повідомлень: JSON
Програмне забезпечення: годинники розроблені на базі проекту Івана Захарова «VZ_Clock» (github.com/IZ76/VZ_Clock), модулі синхронізації з сайтом, інформування і розкладу уроків писав сам.
Мова програмування: С/С++
Розробка: літо 2020 року
Як розумний годинник працює - у відео: