Що робити, коли я не на роботі? Для невеликих електронних проектів, які в якийсь момент повинні бути корисними ... Сьогодні я наводжу кілька прикладів ...

Ардуїно

цього проекту

Мікроконтролер par excellence ... Але багато хто чує назву мікроконтролер і вже думає, що це дуже складно, що для того, щоб мати можливість працювати з ним, потрібен диплом, ступінь магістра або якийсь ступінь, схвалений дорогим університетом ... навпаки! Якщо ви можете користуватися калькулятором, ви працюєте з мікроконтролером (не зовсім так, але концепція така) ...

Що таке мікроконтролер? Простими словами, це мікросхема, яка неодноразово виконує те, що наказано робити ... Наприклад, якщо я скажу їй увімкнути та вимкнути лампочку, мікроконтролер постійно вмикає та вимикає цю лампочку, поки 1) він не змінює інструкції або 2) його відключити від джерела живлення.

Проста правда? Гаразд, так як ми можемо сказати мікроконтролеру, які вказівки виконувати? Ну, тут все може дещо ускладнитися ... Для певних мікроконтролерів потрібне спеціалізоване обладнання та низькорівнева мова програмування (Assembler). Але з народженням платформи Arduino цей мікроконтролер для програмування став дуже нескладним, що дозволило робити це мистецтво простим людям, таким як ми з вами ...

Arduino [1] ускладнює використання мікроконтролерів наступним чином:

Це полегшує зв'язок між програмістом та мікроконтролером, використовуючи стандарти зв'язку, такі як USB. Кожен комп’ютер має принаймні один порт USB.

Це дозволяє використовувати мову програмування високого рівня (переважно мову програмування C ++) для маніпулювання мікроконтролером. Також можуть використовуватися інші мови, такі як Python, JavaScript, навіть Scratch!

В такому випадку зараз бракує лише того, як правильно використовувати мову, щоб мікроконтролер розумів її. Ось приклад:

Давайте проаналізуємо код:

  • Рядки 1 і 6: Як я вже говорив, мікроконтролер - це мікросхема, яка робить щось неодноразово. Рядок 1 встановлює початкову конфігурацію. Рядок 6 містить інструкції, які слід повторити.
  • Рядок 3: В якості початкової конфігурації ми говоримо, що виводиться штифт LED_BUILTIN, це означає, що цей штифт буде надсилати інформацію. Але що означає LED_BUILTIN? Різні плати, що підтримуються на платформі Arduino, мають світло, світлодіод, вбудований, але кожна плата має його на іншому штифті, наприклад, модель UNO має його на штифті 13, модель MKR1000 на штифті 6. Отже, замість вручну визначаючи світлодіодний штифт для кожної моделі, ми використовуємо цю змінну, яка робить це за нас.
  • Рядки 8 і 10: Те, що робить інструкція digitalWrite () - це писати у LED_BUILTIN стан, HIGH, on або LOW, off.
  • Рядки 9, 11: Те, що робить інструкція delay () - це зупинка, вона робить паузу на час, вказаний у мілісекундах; в нашому випадку 1000 мілісекунд, що дорівнює 1 секунді.

Після того, як код проаналізовано рядок за рядком, ми можемо побачити, що сценарій робить включення світлодіода на секунду та вимкнення його на секунду, і це повторюється необмежено, або більш конкретно, доки інструкції не зміняться або поки живлення мікроконтролер, як я вже згадував раніше.

З пробудженням спільноти виробників завдяки цій платформі існує багато компонентів для роботи з Arduino. Мої улюблені:

  • 0,96-дюймовий OLED-дисплей - 128x64-піксельний монохромний OLED-дисплей
  • DHT11 - Датчик температури та вологості
  • BMP180 - Датчик атмосферного тиску та температури
  • HC-SR04 - Ультразвуковий датчик відстані
  • LDR - датчик освітленості
  • Модуль реле N каналу - управління високовольтним обладнанням
  • HC-SR501 - інфрачервоний датчик руху
  • 44E Ефект Холла - магнітний датчик

Є набагато більше, але вони, зокрема, є моїми улюбленими. Але найцікавішим у Arduino є те, що він не тільки працює із зовнішніми модулями, але також дозволяє його розширювати, використовуючи те, що називається '' '' щитом '' ''. Щит - це дошка, яка розміщується зверху на Arduino і розширює такі функції, як:

І, як і модулів, їх набагато більше.

Ми бачимо, що це досить гнучка платформа, де ми можемо дозволити своїм уявам літати творити.

Raspberry Pi

У сучасному світі електроніки Arduino - не єдина платформа, яка дозволяє розробляти проекти. Також є ще один гравець. Raspberry Pi. На відміну від Arduino, який є мікроконтролером, Raspberry Pi - це комп’ютер у будь-якому сенсі цього слова, він не тільки знову і знову запускає набір запрограмованих інструкцій, але і запускає процеси, і ми можемо з ним взаємодіяти як ми робити зі звичайним комп'ютером.

Плутанина часто полягає у вашому зовнішньому вигляді та зосередженні уваги. Наприклад, і те, і інше можна використовувати з модулями та HAT (наприклад, Shields, але для Raspberry Pi). Але з Raspberry Pi ми не лише виконуємо одну дію, але можемо виконувати кілька дій одночасно. Наприклад, ми можемо читати атмосферні дані та зберігати їх у базі даних, щоб їх можна було переглядати на веб-сторінці на одному пристрої. Виходячи зі світу електроніки, платформа Raspberry Pi задумана як маленький і доступний комп’ютер для навчання програмуванню. [два]

Програмування

Оскільки Raspberry Pi - це комп’ютер із власною операційною системою, нам не потрібно його програмувати, але ми можемо писати програми для роботи з певним HAT або просто за допомогою деяких зовнішніх компонентів. Мовою програмування, якою ми можемо користуватися, є декілька, найпопулярнішими є Python та Scratch. Давайте використаємо Python, щоб відтворити приклад вище.

Хоча з коментарями ми можемо побачити, що відбувається, тут ми можемо побачити, що інструкції трохи зрозуміліші. Ми також можемо побачити деякі спеціальні інструкції на початку, від gpiozero LED для імпорту та від часу імпорту сну. На відміну від Arduino, який використовує модифікацію C ++, призначену для програмування мікроконтролерів, Python - загальна мова програмування, яка не знає, що є шпильки для підключення зовнішніх компонентів до комп'ютера, тому до коду потрібно додати бібліотеку [ 3], або принаймні один компонент із цієї бібліотеки, у нашому випадку ми імпортували світлодіодний модуль з бібліотеки gpiozero [4], що полегшує використання компонентів у проектах електроніки.

Проекти

Як бачите, моє захоплення цією темою велике. За що я за останні роки брав участь у кількох проектах. Ось основні моменти:

Вимірювач калорій

Я думаю, це був один із моїх перших проектів. Метою цього проекту було вимірювання споживаних калорій на основі обертання колеса велотренажера. Для цього проекту я використав такі матеріали:

  • Магніт
  • Датчик ефекту Холла
  • РК-екран 16x2
  • Ардуїно
  • Стаціонарний велосипед

Концепція проста, виходячи з сили, яка діє на переміщення колеса, обчислює спожиті калорії. Звучить просто, правда? Проблемою було знайти фізико-математичні розрахунки, щоб дістатися туди, особливо для останньої частини. Але, як і будь-яка проблема, її потрібно вирішувати частинами. Першим ділом було виміряти швидкість обертання колеса. Потім потрібно було розрахувати силу, яка діє, щоб мати таку швидкість. Нарешті, це було для обчислення калорій, споживаних при дії цієї сили [1] [2] [3]. Як я вже говорив, останнє було найскладнішим, оскільки інформації недостатньо, а формула варіюється залежно від ваги та зросту людини, значення, які слід коригувати на кожному сеансі.

Бездротова клавіатура

Я не знаю, чи правильна назва, але це добре виражає цю концепцію. Ідея полягає в наступному: викладач публікує опитувальник із множинним вибором, і студенти відповідають на них. Але цікавим у цьому проекті були дві речі: 1) потрібно було зробити адміністративну сторону для вчителя (створити запитання, відповіді, мати статистичну таблицю відповідей на опитувальник) та веб-сервіс для панелі кнопок отримати запитання та варіанти та відобразити їх на екрані кожної клавіатури. Подивимось матеріали:

  • Ардуїно Юн
  • РК-екран 20x4
  • Кнопки

Для цього проекту мені довелося провести багато досліджень, оскільки я ніколи не працював з юном. Технічно це повинно бути просто, оскільки я давно працював з Arduino, але бездротовим інтерфейсом керував мікропроцесор, який отримував доступ через інші бібліотеки, які не були звичайними. І на завершення, існує не так багато документації про використання Yun, що ускладнило ситуацію. Там я знайшов керівництво про те, як зробити HTTP-запит за допомогою кнопки. Але приклад працював для однієї кнопки ... У мене було кілька! Потім я знайшов відео, яке використовує своєрідне переривання для відчуття кнопок. Я змішав обидві концепції і змусив це працювати. Кожна кнопка надсилала різні запити HTTP для зберігання різних відповідей у ​​базі даних.

Все було добре, поки все не змінилося ... На екрані воно повинно відображати не лише варіанти відповідей, але й питання! Додатковий метод до веб-служби, додатковий запит HTTP на Arduino. Залишалось очікувати управління довжиною питання, оскільки він використовував рядок з екрана, щоб показати питання, якщо воно перевищувало 20 символів, питання вирізалося.

Розумне паркування

Я робив цей проект двічі, але перший провалився. Але з цієї невдачі я навчився вдосконалюватися в другу. У другій версії були ускладнення, але врешті все пройшло добре. Давайте підемо з матеріалами:

  • Arduino Mega
  • Датчики відстані HC-SR04
  • Датчик перешкод FC-51
  • Сервомотори
  • РК-екран 16x2 з інтерфейсом I2C
  • HC-05 BT
  • Кабелі, багато кабелів

Цей проект став класичним для дипломних або дипломних проектів. Чесно кажучи, ідея проста, відстежуючи кожну стоянку та показуючи статус кожної з них на екрані. Хоча ця проста частина - це де більшість зазнає невдач. Вони, як правило, створюють змінну для кожного датчика відстані замість того, щоб створювати масив. Цікавим у цьому вдруге було те, що стоянки із обмеженою доступністю доводилось враховувати окремо. Що нового, також керуйте ручкою доступу за допомогою мобільного додатка через Bluetooth, показуючи повідомлення відповідно до статусу, одне привітальне повідомлення або одне повідомлення про відсутність доступності.

Метеостанція

Це мій поточний проект. Я ще не написав жодного коду, просто перевірив компоненти. Поки що я маю:

  • Arduino uno
  • DHT11
  • BMP180

Завдяки цьому у мене температури, тиску та вологості достатньо для прогнозування дощу (можливо?). Принаймні концепція проста, висока вологість та тиск, низька температура вказують на високу ймовірність дощу. Математика за нею, мабуть, найскладніша. Я досі не робив своїх досліджень. І нарешті, він буде робити погодинні записи вимірювань у базі даних, для чого мені потрібно мати модуль WIFI (ESP8266) або змінити платформу на Wemos (D1 Mini, здається, найкращий кандидат, хоча я все ще не можу повністю засвоїти це). Ще одне, що я хочу додати, - це вимірювач УФ-індексу. Поки що моя ідея поки що йде.

Coding Overload - це блог про спосіб життя розробників. Загальні концепції програмування, а потім деякі. Проводитиме основи Python, C/C ++, Java, PHP, SQL тощо.