2078
Як я зробив масштаб Wi-Fi, не з будь-якої точки кинути, і про життя в загальному німці.
Не важко побачити з головної лінії, що ця пригода була натхненна банальним бажанням, щоб прикрасити лінію хлопців від Madrobots. І це було дійсно пригода: історія довгострокової покупки INA125U так нудна, що вона може приїхати будь-яким божевільним, крім мене. Мапа Я не знаю щось про себе.
Так масштаби. Як звичайно, я зробив все неправильно. Я навіть не дивився на те, які типові представники цієї групи, щоб говорити, Scalar, здатні зробити на поточний момент розвитку Інтернету речей. Таким чином, мої ваги здатні зважати трьох різних осіб окремо (мою, дружиною і сферичний гість в вакуумі), а також п'ять кішок. За допомогою смартфона ви можете ознайомитися на сайті Google.
Ну, тепер - про те, як це зробити, маючи масштаб від ІКЕА, оперативний підсилювач TI INA125, Arduino Pro Mini, Серійний конвертер - Wi-Fi HiLink HLK-RM04, трохи іншого обжима і шестигранний стібок в ас.
Зв'язатися з нами Насправді, коли я купив Serial-Wi-Fi конвертер на DX.com, я не так багато захопився своїми можливостями (Я мав надзвичайно вагову ідею про них в той час), так як ціна - порівняно з аналогічним Wi-Fi-schild для Arduino. Звичайно, незабаром стало зрозуміло, що різниця в ціні з причини: з коробки цей конвертер не нагадує Shield. І, так, я розумію – це очевидно вам, і для мене це було свідчення, що немає GET / POST буде просто статися.
Але я спробував HLK-RM04 практично відразу після покупки. Спочатку без мікроконтролера. Ви просто повинні підключити живлення (5B) і перейти до адреси за замовчуванням, яка зазначена в інструкції. У тому ж місці, після того, як деякі сумніви (як би не зіпсувати щось), він подав свої налаштування Wi-Fi і давав конвертер статичний IP, щоб не шукати його по всій мережі.
Так це налаштування. Шукаю вперед, це повний набір налаштувань для ваг (IP і SSID замініть ваш, але швидкість порту досить важлива - при цій швидкості HLK-RM04 буде спілкуватися з контролером):
У другій фазі я підключений до контролера і бачив, що я можу зробити без бібліотеки і без зусиль. Виявилося, що якщо ви переключите його в режим сервера, з'єднайте його до серійного порту Ардуїно, і напишіть код, який періодично друкує щось на цей порт, то ви можете побачити друкований один в браузері. Також, в принципі, добре, але не занадто надихає. Однак я пам'ятаю його в самий екстремальний випадок.
HLK-RM04 буде в пиловому ящику, якщо це не було для Madrobots. Вважаю будь-які параметри: щоб зробити роботу конвертера як веб-клієнт, і якщо він не працює, то хоча б приймати дані з нього через Завдання на смартфоні, і той же Завдання опублікувати, де потрібно. Насолодіться першим варіантом бібліотеки Wi-Fi для Arduino.
Звичайно, специфіка. Бібліотека побудована на Arduino Mega, яка має багато оперативної пам'яті, і серійних портів над дахом. Таким чином, автор бібліотеки за замовчуванням був широко використаний два порти Arduino Mega для зв'язку з HLK-RM04, і в решті мали USB підключення до настільного комп'ютера для одночасного знеболювання.
І, до речі, з модулем відключення також на за замовчуванням, навіть крихітна програма, яка містить бібліотечні компіляції Wi-FiRM04, щоб просто під 30KB, тому перспективи міграції до Arduino Pro Mini здавалося трохи сумнівним. Однак, є хороші новини: автор все ще забезпечений і працює з одним портом, і відключає модуль відключення.
Перший на GitHub і другий на форумі Arduino.cc.
І все ж, щоб бути чесним, я відхилявся на Mega, тому що це здавалося дуже важко постійно відключити і підключити HLK-RM04 - тому що на Pro Mini він займає один порт, тому навіть для банального завантаження нової версії програми, конвертер повинен бути вимкнений. Але є хитрість: якщо після завантаження програми в Pro Mini для підключення та HLK-RM04, а в той же час робочий стіл з монітором порту зрозуміло, що контролер надішле конвертер. І це дозволяє зрозуміти, які держави він перебуває в.
У сухому залишку адаптація WiFiRM04 до Arduino Pro Mini потрібно:
1) At_drv.cpp зробити це:
#define DEFAULT_BAUD1 9600 #Define DEFAULT_BAUD2 9600
2) Ібід. Як це:
/ використовувати Serial1 як серійний порт за замовчуванням для спілкування з модулем WiFi #define AT_DRV_SERIAL Serial // використовувати Serial2 для зв'язку uart2 нашого модуля WiFi #define AT_DRV_SERIAL1 Serial
(3) Ібід. - коментар до #define _DEBUG_//// #define_DEBUG_
(4) Не забудьте поставити свій улюблений цифровий штифт в #define ESCAPE_PIN
ESCAPE_PIN 4
(3) У wl_definitions.h, змінити MAX_SOCK_NUM до 1
В обох випадках, що з Mega, що з Pro Mini, нездатність цього гібрида вже з клингом була зареєстрована на практиці - Я відправив запит на сервер, який може виправити їх отримання.
На наступному етапі я почав вивчати питання отримання даних з ваг. Теорія була в тому, що в залежності від типу ваг оснащена одним, двома або чотирма калібрами. Коли я відкрив звичні Ikea ваги, я зрозумів, що тут, в цілому, класична схема: кожен каблук - на датчикі, тобто тільки чотири датчики. Єдиною проблемою стала кількість проводів.
. Оригінальні ваги
Кожен датчик був обладнаний цими трьома корисними речами. Тим не менш, така ж теорія була, що насправді були два висновки (перманентних) резисторів.
манометр
Уважним дослідженням Aliexpress було показано наступне: знімання китайських датчиків виробництва у вигляді половини досить популярного вимірювального місту (Whitstone Bridge).
Сам міст схожий на це (карта з Вікіпедії, посилання на яку далі):
3381.0393
І, в принципі, все було зрозуміло. Але я не розумію, як чотири мости з'єднуються з одним мостом і чому це було необхідно. Відповіді на першу частину проблеми було надана на рідній шкали. Так само китайці, щоб не витрачати мідь, підключені готові загальні точки, де необхідно: до джерела струму і до ресивера потенціалу. Все інше було підключено до мосту. В результаті кожний півзахист став четвертим плечем.
Всі права.
Принцип вимірювання ваги досить простий: навантаження змінює опір датчиків штамів, які природно призводить до зміни напруги на виході моста. Напруга відрізняється лінійно в залежності від ваги. В цілому все добре, якщо не одне: вихідна напруга мосту занадто невелика, щоб виміряти його безпосередньо ADC Arduino. Потужний Інтернет говорить нам, що успіх вимагає відповідного підсилювача – з досить великим набором, з досить мало шуму.
У цьому ж інтернеті консультують з використанням інструментальних підсилювачів INA125, виготовлених відомими Texas Instruments. Багато відповідних системних рішень повторюють один одному, як копіювальник і практично не відходять від класичної схеми в datashite. І ще я вирішив бути оригінальним і вибраним для повторення цього шаблону:
Ось R1: 39 ом, R2: 1 kΩ, C1: 100 nF, C2: 100 мкФ. вимірювальний міст підключений до платформ 1, 2, 3 і 4, і якщо я розумію принаймні щось, то при підключенні до мосту не потрібно вибирати точки особливо, головне, що V+, V-, Vref і GND йде через одну, тобто, наприклад: Vref, V+, GND, V-. З іншого боку, я не вдалася ризику, але просто подивився на позначення на рідній шкали, там були: E+, E-, S+ і S-, і відповідно підключено все це до підсилювача (E+=Vref, E-=GND, S+=V+, S-=V-).
Здавалося б, що все зрозуміло: придбані деталі - і сидять пайки підсилювача. Тим не менш, навіть у DC було якомога простіше купити підсилювач 1 (One) TI INA125 і особливо - в DIP. Ціни від 100 до 800 рублів, час доставки – з завтрашнього місяця, розташування офісів і магазинів така, що починається навіть депресія.
Я проходив близько місяця з силою. Після чого я прошу на все і замовляється від бутіку Чіп-і-деп, але через їх сайт. При цьому зберігають насінні: якщо я не помилився, мінімальна партія 20 резисторів коштує майже менше одного з цього нещастяного резистора в офлайн магазині. Я також дізнався, що SOL16 набагато менше, ніж я думав. Не можна просто кинути його в навісі.
Я був майже засмічений, але вирішив шукати розчин. Знайдено в той же бутік. Це готові ручники-адансери, де cockroach SOL16 раптово поширюється на платформи з досить сане 2,5 мм крок. Я купив три грандіозні для задоволення. Чому мені потрібні, я наречена.
cockroach на борту
Решта деталей, однак, були вкриті. А потім він продав вилки, як Ардуїно. Я думав, що я з'єднуюся через гнізда для простоти. Однак реальність була більш сильна, і в кінці довелося загорнути вилки, і всю дошку в цілому з стрічкою. Ось ще один архітектурний шов: стрічка біла.
. до HLK-RM04 підключені заглушки (стежка 2 мм). Виявилося, щоб бути правильним, інакше я б був катування для паялки: після всього, за час відключення, потрібно відключатися від модуля до вільного порту контролера.
Зрозуміло (Я завжди дивився, коли щось, що вийшло з рук, але готова дошка, підключена до обох ваг і Ардуїно, почала давати достатні результати. Тепер у мене були всі компоненти ваг на руках: масштаб з перетворювачем напруги і контролером з блоком зв'язку. Так я впав шлях і назвав першу версію альфа. Як виходить, з хорошої причини.
Головна Альфа використовується світлодіод на щиті контролера
У принципі, альфа добре працювала при підключенні контролера до комп'ютера (на цей раз я використовував або Mega або Pro Mini, але без HLK-RM04, через відсутність серійних портів). Однак при переході на автономну потужність, було відчуття, що весь дизайн вийшов божевільним. Невелике розслідування виявило, що я знову зустрілася з проблемою, знайомою з Automaton of Light and Music ASIM-AU-2-6. Назви, постійні коливання значень при читанні аналогового штифта контролера, який я пов'язаний з імпульсом природи джерела живлення.
Ви можете помилуватися цими коливаннями в іншому місці.English, Українська, Français...
Я не єдиний, хто так щасливий. Один з рекомендованих методів боротьби з цим ефектом полягає в затягуванні аналогового штифта до землі, використовують мінімальні протяжні дроти. Але мої дроти більше 10 сантиметрів, і аналоговий штифт, як можна побачити з схеми, вже витягнути до землі. Тому необхідно звернутися до перевіреного методу: спочатку він додав певну порогу значення ваги до програми, очевидно, більше спостерігається коливання. І, по-друге, так як флуктуації були занадто помітні, він розрахував вагу в середньому досить великий, хоча не нескінченно великий, кількість розмірів. Більш точно, я в середньому становить тисячі вимірів, які більше або менше призводить коливання (і значення в цілому) до більш-менш розумних лімітів.
Але це не єдина проблема. Я так використовуюсь, щоб спиратися на інші схеми людей, які я не розумію, перш за все, чому масштаби починають показувати однакове значення в певній точці. А потім стало ясно: це міркова стеля. Я не є генієм, тому я провів багато часу, як з'ясовуючи цей неспроможний факт і вирішення проблеми.
Суть проблеми полягає в тому, що отримання INA125 відводиться резистором R1 за формулою:
Таким чином, ампліфікація за авторами схеми встановлюється на 1500 (1542,5, щоб бути точним). Звісно, він був обраний під конкретною екземпляром ваг, які я не думаю про. Для моїх ваг, що дратують результати, було занадто багато. Так я додав ще один 39 Ом резистора і отримав трохи інший результат: посилення близько 773.
Слід пам'ятати, що на основі того ж набору даних INA125, напруга при виході підсилювача не перевищує 3.8V. Звідси ми отримуємо максимальну значення зчитування аналогового штифта Arduino: (3.8*1024)/5 = 778. До цієї точки я також мав час доторкнутися ваги, тому я знайшов, що співвідношення маси і значення на аналоговому шпилькі становить близько 7.25.
Підсумок: З поточною ампліфікацією теоретичний ліміт вимірювань маси становить близько 107 кг, що я більше щасливий. Але якщо є щось хвилюватися, то я, ймовірно, змінить резистор і отримаю на оперативну кордон 150 кг. І пост-резюм для пишних. Я калібрував масштаби на інших вагах підлоги. Зрозуміло, що точність є плюс або мінуси тапочки, добре, і оригінально це те ж саме.
Я не використовував ніяких стандартних ваг. Просто три вимірювання на одному, три вимірювання на інший. І арифметичне значення кожного екземпляра ділиться один на одного. Займіть співвідношення між тим, що Arduino отримує і фактична вага.
Так я мав калібровані ваги і залози, здатні передавати читання ... десь, в цілому, здатний. У разі можливості більш-менш зручний спосіб перемикання типів і користувачів.
Роз'яснення просто. Я хотів би отримати впізнавані результати для себе, дружини, і давайте гостям грати без змішування своїх балів. І іноді я хотів би зважити наших котів мінімумом зусиль. Ви знаєте, як зважити котів, правильно? Ви берете коту в руки, ви стояти на вагу, ви пам'ятаєте вагу, ви дайте кіт, ви повертаєте на вагу. Далі ви віднімете менше.
В цілому слово для слова і визначено два види (народи і коти) і вісім користувачів. Тому я нагадую вам, що більш-менш зручне управління було дуже бажано.
З ідеї використання вітчизняного РК-дисплей я відмовлявся практично відразу, як я прочитав про зворотну інженерію протоколу зв'язку з ним. І купили з нагоди 0,96-дюймовий OLED-екран я зумів вбити десь в процесі експериментів (можливо це було ще на 3,3V, не 5V, як обіцяний Китаєм). І на честь я був жахливо викручений: на фото дисплей здавалося досить великим, але насправді виявився крихітним - від висоти нічого не буде видно. Крім того, на етапі тестування я дізнався, що бібліотека дисплея та бібліотека Wi-FiRM04 не збираються разом. Очевидно, що Pro Mini дуже мало пам'яті для обох з них.
Таким чином, від засобів виведення залишилися витискачі і світлодіоди. Ліричний відступ: тепер я на моєму шляху до відрізкового світлодіодного дисплея, який може бути гвинтовим до масштабів, але, можливо, не - занадто багато я люблю що сталося. З світлодіодним планом показати готовність ваг до роботи, а з вичавкою - озвучити поточний статус, успішне відправлення читань і помилок.
Як для входу я хотів зробити з абсолютною мінімальною. Уявіть: ви стоїть на масштабі, а деякі кнопки, перемикачі - що це? У той же час я не хочу бути ланцюжок до смартфону, припустимо, що бажане налаштування буде активовано смартфоном. Це, ідеально, керівництво в моїй ідеї має бути таким, що в середині ночі з закритими очима, ви можете зважити себе без сумніву.
А потім я думав, "Хай людина, ви отримали чотири красивих датчиків ваги під ногами (океї, один синтетичний)." Чому не використовувати їх як повнопотужна кнопка? Щоб бути чесною, половина особистості (бездіяльність) була захована таким елегантним рішенням до проблеми; другою половиною (лизьким) була глибока чума. Але ідея захоплюється, і після закінчення судової та помилок з'явилася концепція управління: режими перемикання і користувачі, натиснувши таблицю балансу, і з зазначенням поточного стану звуковими сигналами.
У загальному меню щось схоже:
1) Перший прес після зважування або відразу після переходу на звіти поточного стану;
2) Користувачі одного кліка переключіть в категорію;
(3) Режими вимикачів подвійних пресів (нар./катів);
(4) Три рази натискання виконує налаштування скидання в значеннях за замовчуванням.
Звукова індикація також досить проста. Довгий сигнал – люди, два довгих – коти. Наступним числом коротких сигналів є номер користувача в черзі. У цій версії промокоду Морсе, наприклад, за допомогою dash-dot-dot-dot-dot, які зважують кількість двох осіб; і dash-dash-dot означає кількість одного кота.
Звісно, досить натиснути пальцем стопи на ваговому столі (і нічого не лякати на скрабах). І, звичайно, часові інтервали для пресування і аудіо сигналів вибирають так, щоб він був комфортний для контролю і сприйняття. Що таке акустичний зворотний зв'язок пресування, і достатня пауза встигнути натиснути кілька разів поспіль для часу, виділених команді.
Єдине, що залишилося, щоб дізнатися свою вагу. І для цього я використовував веб-сервіси, а отже, найближчий пристрій Android (планше там або смартфон) повідомляє про вагу. В теорії можна перехрещувати iOS, але я не маю нічого перевірити. Затримка вкрай невелика, і враховуючи те, що це насправді масштаб, який не повинен працювати без інтернету, поняття досить життєрадісна.
Чи є життя після HTTPS або як зробити масштаби говорять результати вимірювань, які я відразу планував розміщувати в Інтернеті. Так само, як я з поточним кліматом в домашніх умовах і навколо нього. Але за ряд причин мій улюблений народний монітор не був правильним для цього. Але Google столи були досить придатними, але вони вимагають підключення через HTTPS, який Arduino не може витягти - ні з рідною мережею Shield, ні, особливо, з ненативним.
Але виявилося, що є дуже привабливе рішення – сервіс Пушингбокса, таке спеціальне повідомлення для Інтернет речей, якщо ви вважаєте описом. І вона робить все, що SSL магія. І вивчення того ж Google привели до рецептури для переправлення таблиць Arduino і Google, і тут також важливо про кнопку Submit.
У шкаралупу: зробіть форму в Google, запустіть обліковий запис на Box Pushing. Потім в коробку:
1) Додати форму Google як послугу CustomURL, де URL повинен бути як:
https://docs.google.com/forms/d/ID Ваші анкети/формиВідповіді
2) Додати сценарій, який виглядає так:
?entry.11234123=$status$&submit=Submit
Ось запис. 11234123 - назва поля форми, яку можна переглянути в його вихідному коді. кілька полів, як зазвичай, поєднуються через &.
(3) З коду Ардуіно (або що ви маєте), дані додаються за допомогою HTTP POST/GET:
http://api.pushingbox.com/pushingbox?devid=v0123456789ABCDE&status=open
Тут девід є ідентифікатор, виданий Пушинговою коробкою, "відкритий" є переведеним значенням.Повернутися до оголошення результатів. Цей пакет є поштовою скринькою і Newtifry, яка існує двома способами: сервісом коробки для годування та додатком Android (наприклад, аналогічна послуга для iOS).
І я почав відразу кілька сценаріїв - один для кожного користувача людини і один загальний для котів. Просто так, щоб ви могли потім гнучко налаштувати смартфон, який і коли, щоб повідомити вагу.
Як результат, мій HTTP запит для Pushing Box виглядає так:
English, Українська, Français...
Постраждала лінія. Виявилося, що Newtifry відмінно передає кириличний алфавіт TTS Android, але той же кириличний алфавіт перетворюється в Cracosabras в Google-розкладі. Так я кладу однакову назву двічі в ящику для годування: кириличний і латинський. Перший через Newtifry озвучений смартфоном, а другий через CustomURL надіслав на стіл.
До речі, Google кладе часовий штамп автоматично, тому я не маю головного болю про це:
У моїй конфігурації для складання ваг буде потрібно:
1) Лібра з 4-ма смужками. Щодо того, як я розумію, це досить популярний дизайн зараз, але я не можу гарантувати, що будь-який зроблений таким чином. Важлива точка: очищення ваг повинна бути такою, або ваги повинні мати таке тіло, що вся електроніка вписується там. В іншому випадку ви повинні поставити коробку поруч з вами.
2) Конвертер Serial-Wi-Fi HLK-RM04. Як це.
(3) Інструмент підсилювач INA125 в будь-якому випадку, який ви можете зрозуміти.
(4) Підсумок для підсилювача (capacitor 100 μF, 100 nf, резистор 1 kΩ, резистор проблеми отримання).
(5) Світлодіодний
(6) Плетіння. У мене є п'єзокерамічна, тому підключається до контролера безпосередньо (висока стійкість). Для динаміків вам доведеться зробити якийсь підсилювач, щоб вирішити для себе те, що вам подобається.
(7) Arduino Pro Міні. Як це.
(8) Дріт, блок живлення 5B та інші паяльні праски.
Текст:
Необхідні коментарі. Я отримав першу книгу, яку я коли-небудь отримав, але вона була заснована на на наноці Ардуіно. Ми можемо самі зателефонувати одержувачу і узгодити зручний час і місце вручення квітів, а якщо необхідно, то збережемо сюрприз.
Деномінація резистора залежить від світлодіода, який ви приїжджаєте.
Типовий INA125 Схема включення, яку вам пощастило дотримуватися вище. Вам потрібно буде вибрати резистор R1 під вашим масштабом. На жаль, це тільки експериментальний спосіб.
Скек – це пирзокерамічна. Неможливо підключити звичайні динаміки безпосередньо до контролера. Ви не будете динаміку.
Зрозуміло, що все необхідне, якось дивно вписується в оригінальному тілі ваг. Безбарвно знімається навіть найменший підказок акумулятора. І дисплей, неробочий, ліворуч - він відмінно маскує углість всередині.
Щоб бути чесним, це перший раз, коли я намальовував алгоритм. Після того, як все було зроблено. Але тут я змалював і побачила принаймні одне, яке можна оптимізувати в наступному варіанті програми.
З кодом ситуація схожа на резистор для отримання. Вам потрібно вибрати три розміри:
(1) тар = "порожня" вага ваг при включенні
2) тресхол - відхилення від порожньої ваги (за наявності)
(3) співвідношення між значенням при аналоговому введенні Arduino і вагою. Поточний - 7.25, вказаний в процесі надсилання
Секретний код. http://playground.ardu Статус.cc/Code/SimpleTimer Статус=WiFiRM04.h>=false"String_String_SID (name)="[YOUR NETCHARK KEY1][N]][Nextext] = людський статус;[GRing_Next][Next]="Nextextimer="Next][Next_GRing_Nextrighter=Em=Em=Em=Em>2;[Nextextext][Next] змінити, якщо за допомогою відкритої або WEP мережі: статус = WiFi.begin(sid, pass); // expect 10 секунд для підключення: затримки(10000); void петлі() {масштабільше. WEF ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Це, мабуть, все, що я можу сказати вам. Я впевнений, що є чудовими, технічно грамотними і винахідливими людьми тут. Я вірю, що ви можете зробити краще. До неї. Я зробив те, що я зробив, і ви не можете отримати нічого з мене. :
О, я майже забули. Чому блок живлення, не батарей? По-перше, і найголовніше, я ніколи не дізнався, як зберегти енергію. І, по-друге, виходить, що типовий код підключення до Wi-Fi з бібліотекою WiFiRM04 працює до половини хвилини, тому якщо ви перетворите його на кожен раз, вам доведеться довго чекати. Хто буде використовувати цю вагу? І в той же час HLK-RM04 з'їдає багато - 140 мА за даними тільки Wi-Fi.
Тому найбільш розумним був стаціонарний джерело живлення.
P.S. Якщо ви бачите будь-який матеріал, будь ласка, зв'яжіться з нами - Я зірвав, або що, я змащую.
Джерело: habrahabr.ru/post/224137/