Зміст:
- Постачання:
- Крок 1: Архітектура системи
- Крок 2: Обладнання
- Крок 3: Прошивка
- Крок 4: Програмне забезпечення
- Крок 5: Дивитися його!
a.k.a. безоплатно ускладнена двонаправлено зв'язується Arduino на основі прокрутки Twitter дисплея і оповіщення.
----
Цей проект головним чином був зроблений як привід, щоб дізнатися, як використовувати LCD дисплеї з символом Arduino, і з'ясувати, як зробити двонаправлений послідовний протокол. Однією з основних завдань дизайну було те, що апаратні засоби будуть вводитись користувачами та спілкуватися з комп'ютером, а не просто працювати як "німий" дисплей, керований повністю комп'ютером. Це дозволяє Arduino мати фізичний контроль швидкості прокручування, який впливає на скрипт, що працює на ПК.
Особливості:
- РК-дисплей розміром 16 x 2 символів, на якому відображаються твітти з вибраного каналу чи терміну пошуку
- Прапор із сервоприводом піднімається, коли є непрочитані твіти (без поштовхів Arduino!)
- регулятор швидкості регулює швидкість прокручування
- У нього є електроліти
Постачання:
Крок 1: Архітектура системи
Досить грандіозна назва, яка по суті означає "розбиття дизайну на частини", оскільки це досить складна річ.
Обладнання:
Апаратні засоби формують інтерфейс Arduino з реальним світом. Апаратне забезпечення складається з дворядкового РК-дисплея для відображення повідомлень, контролю швидкості, що дозволяє змінювати швидкість прокрутки під час роботи пристрою, а також прапорець із сервоприводом, який піднімає, коли скрипт виявляє наявність непрочитаних твітів.
Прошивка:
Ескіз, запущений на Arduino, запускає цикл, що виконує дві основні дії. Він надсилає запит "статус" скрипту, запущеному на ПК сервера, і чекає відповіді, що містить кількість твітів у списку, і чи є непрочитані. Потім він відправляє запит "повідомлення", отримує текст твітів і відображає його на екрані. Він зчитує потенціометр в реальному часі, щоб отримати бажану швидкість прокрутки, і піднімає і опускає прапор, щоб повідомити про нові твіти.
Програмне забезпечення:
Серверне програмне забезпечення зберігає список всіх твітів, які було відкрито після його запуску. Коли скрипт отримує запит "статус", він відповідає з кількістю твітів, які він наразі має в списку, і чи є непрочитані твіти. Коли він отримує запит "повідомлення", скрипт посилає наступний твіт у списку, повертаючись до початку списку, коли він досягає кінця списку або коли знаходить нові твіти.
Сценарій також повинен зберігати список твітів в актуальному стані, перевіряючи API Twitter, щоб отримати останні повідомлення. Це також приурочено, щоб відбутися не більше одного разу кожні три хвилини: коли скрипт отримує запит "статус", якщо минуло більше трьох хвилин від останньої перевірки, він отримує список твітів і перевіряє, чи є непрочитані..
Крок 2: Обладнання
Інструкції з підключення
Відображення:
Для серійного РК-дисплея розміром 16x2:
Контакт 1. Земля
PIN-код 2. VCC (+ 5В)
Pin 3. Контраст
Pin 4. Вибір реєстру (RS)
Pin 5. Читання / запис (R / W)
Pin 6. Годинник
Pin 7. N / A
Pin 8. N / A
Pin 9. N / A
Pin 10. N / A
Pin 11. Біт 4
Pin 12. Біт 5
Pin 13. Біт 6
Pin 14. Біт 7
Pin 15. Анод підсвічування (+)
Pin 16. Католиці підсвічування (-)
Ви можете дізнатися більше про цю сторінку Вікіпедії про цю серію РК-дисплеїв.
Щоб підключити РК-дисплей до Arduino, підключіть на РК-дисплеї такі номери:
1: GND
2: + ve (+5 В)
3: GND *
4: Штифт Arduino 12
5: GND +
6: Штифт Arduino 11
11, 12, 13, 14: Ардуїно 5, 4, 3, 2
*: Pin 3 повинен бути технічно підключений до потенціометру 10K між VCC і GND, однак мій дисплей мав хороший контраст в нижній частині діапазону потенціометра, тому я просто прив'язав лінію контрасту до землі. Також, я хотів потенціометр для чогось ще:) t
+: Висновок 5 перемикає РК-дисплей між режимами зчитування та запису, але ми ніколи не повинні читати з РК-дисплея, тому тримайте його до землі, щоб тримати дисплей у режимі запису.
Додатково: регулювання швидкості
Потенціометр GND: GND
Потенціометр VCC: VCC
Склоочисник потенціометра: аналог Arduino в 0
Необов'язково: "новий твіт" прапор
Вам знадобиться транзистор і серво.
Транзисторний випромінювач: GND
База транзистора: штифт Arduino 7
Транзисторний колектор: сервопривід GND
Servo VCC: VCC
Сервопривод: Arduino pin 9 (ШІМ)
Якщо ви хочете використовувати сервопривід, переконайтеся, що ваш Arduino підключений до зовнішнього джерела живлення (USB не забезпечить достатньо соку) і покласти електролітичний конденсатор через рельси для забезпечення струму струму.
Крок 3: Прошивка
Загальний функціональний опис коду:Запустіть РК-дисплей
Встановіть деякі константи, що використовуються в коді
Надрукуйте початкове повідомлення на РК-дисплей
Налаштуйте серво та опустіть прапор
Зачекайте п'ять секунд для запуску скрипту на ПК сервера
Цикл:
Запитуйте статус від сервера і чекайте відповіді
Якщо нові твіти: підніміть прапор і покажіть кількість твітів
else: знизити прапорець і відобразити хэштег пошуку
Запитуйте наступний твіт з сервера і чекайте відповіді
Очистіть верхній рядок дисплея
Відображайте твіт прокручування у верхньому рядку дисплея зі швидкістю, що визначається регулюванням швидкості
Більш повний "псевдокод" коду Arduino:
Ініціалізація РК-дисплея Налаштування констант Створення буфера для вхідних повідомлень Встановіть РК-дисплей у вигляді символів 16х2, без автоматичного прокручування Дисплей "Zeitgeistometer! T сервопривід в положення "вниз" і знову вимкнути цикл: Зверніть увагу на час, коли починається цикл Напишіть "статус" на послідовний зв'язок Очікуйте повідомлення на послідовній лінії або протягом десяти секунд, якщо прийде нове повідомлення: Щоб отримати повне повідомлення Прочитати повідомлення в буфер Прочитати перший символ повідомлення Якщо перший символ - 'T' Встановити "новий твіт" прапорець Активний серво, підняти і вимкнути Друк вмісту повідомлення в нижній рядок display Else Якщо встановлено новий прапор твіту Очистити новий прапор твіту Активне серво, нижнє та деактивувати друк "#instructables" до нижнього ряду дисплея Else Print "Немає повідомлення про статус" на дисплеї Зачекайте 0,5 секунди Write "tweet n "до послідовного зв'язку Почекайте повідомлення на послідовній лінії зв'язку або Протягом восьми секунд, якщо буде отримано нове повідомлення: Зачекайте на отримання всього повідомлення Читання повідомлення в буфер Встановіть поточну позицію на символ 0 В той час як символ 15 символів за поточну позицію не є нульовим Прочитайте карту керування швидкістю 0- 1023 до затримки в діапазоні 50-550 мс, дочекатися цього інтервалу Відображення 16 символів з поточної позиції у верхньому рядку РК-дисплея Збільшення поточного положення Else Друк "No twit response" на дисплей Функція clear_buffer: Напишіть 150 нульових символів в буфер повідомлень Функція read_to_buffer: clear_buffer (), а символи доступні з послідовного каналу зчитування символу від Serial до буфера повідомлень
Я додав справжній вихідний код до цього кроку як текстовий файл, частково тому, що це брудний і не дуже зрозумілий, тому не найкраще прочитати, щоб отримати уявлення про те, як працює система.
Крок 4: Програмне забезпечення
Псевдокод:
Налаштування послідовного порту підключення HTTP Отримати HTML з списку твітів Витягти вміст тегів заголовків і зберегти їх у масиві циклу {чекати серійного повідомлення, якщо "status" {if> 3 minutes минуло з моменту останнього запиту таймер запиту Twitter отримує HTML-список твітів для кожного твіту в новому списку {якщо він не такий самий, як перший твіт у поточному списку, додайте його до початку списку}} Якщо з'являються нові твіти, напишіть "Т "і кількість нових твітів ще запише" t "}, якщо" tweet "{якщо є нові твіти {запишіть перший твіт у списку} else {запишіть наступний твіт у списку, або поверніться до першого, якщо у нас є дійшла до кінця}}} Знову ж таки, мій вихідний код є брудним, сумнівно спроектованим і погано прокоментований, тому я додав його як текстовий файл. Він не працюватиме, якщо ви не встановите відповідні бібліотеки (LWP:: UserAgent і Win32:: SerialPort, я думаю), і я навіть не пам'ятаю, як я їх встановив. YMMV.
Крок 5: Дивитися його!
Відео 2: Послідовність запуску з моїм комедійним авторським правом / сплеском і демонстрація контролю швидкості. Насправді це відбуватиметься швидше, ніж це відео показує, але немає сенсу, оскільки ви не можете прочитати повідомлення на максимальній швидкості.