Официальный сайт компании Arduino по адресу arduino.cc
Метеоинформер - или мое первое знакомство с ардуино
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Здравствуйте! Хочу свое знакомство с ардуиной начать с изготовления метеоинформера, пожалуй, так его и назову. Почему? Да просто надоело звонить по автоответчику температуры и выслушивать рекламу, ориентироваться на не сбывающиеся прогнозы, да и еще иметь дома несколько часов, которые отстают/убегают по разному и подводить их. Да, причина, банальна. И в поисках ее решения я натолкнулся на ваш форум и ..... меня осинило, ведь сделав такое устройство, можно пользу не только себе принести, но и другим горожанам, для этого достаточно вывести данные уличных датчиков на сайт.
Цель: собирать информацию о температуре, влажности и давлении как на улице, так и дома, выводить полученную информацию на дисплей, а также информацию с уличных датчиков отображать на сайте. Также хочу, чтобы на дисплее были часы с календарем, которые бы симнхронизировались с сервером времени. Желательно вести статистику данных.
На эту тему нашел несколько статей, перечитал, стало примерно ясно что и как делать, но есть и пробелы. Потому и обращаюсь к вам, поможете (консультативно) довести проект до конца?
Для начала, конечно, надо определиться с оборудованием, что заказать. Пока остановился на следующем:
1. Ардуино - Arduino Uno ATmega328P-PU Module ATMEGA8U2 AVR USB Cable Board
2. Езернет - Ethernet Shield W5100 For Arduino 2009 UNO Mega 1280 2560
3. Часы - Arduino I2C RTC DS1307 AT24C32 Real Time Clock Module For AVR ARM PIC
4. Датчик давления - BMP085 Barometric Digital Pressure Sensor Module Board For Arduino
5. Датчик температуры/влажности уличный - DHT22/AM2302 Digital Temperature And Humidity Sensor
6. Датчик температуры/влажности в помещении - DHT11 Digital Temperature And Humidity Sensor
7. Дополнительный датчик температуры уличный - DS18B20
8. Дисплей (пока не определился)
9. Провода и другие компоненты (тож не знаю, какие и сколько)
Вот и первые вопросы:
1. Хватит ли у UNO входов для этого?
2. Какой выбрать дисплей(жалетально с кириллицей, но не обяз.), чтобы на нем поместилась сразу вся информация (дата, время, темп. улица/дом, влажность улица/дом, давление) или можно сделать автоматическую смену информации, попеременно на небольшом дисплее?
3. Датчики DHT11(для дома) ,DHT22 и DS18B20 (для улицы)есть как отдельно, так и спаянные на модуле с обвязкой. Какие лучше брать?
4. Какие потребуются провода, коннекторы или можно будет подобрать от компьютера/материнки?
5. Нужны ли будут еще какие-нибудь компоненты резисторы, диоды, конденсаторы?
6. Может я еще что-то упустил?
Много вопросов, согласен, просто хочу сделать заказ и ничего не забыть/лишка не взять, а пока идет доставка, разобраться в остальных вопросах, в том числе и конструктивных.
Буду очень рад вашей помощи.
Денис.
Софт на w5100 пока не изучал, а под шилд на базе enc28j60 имеет прямо в examples готовый пример веб-сервера с опросом датчиков температуры DS18B20.
У меня аналогичный набор уже работает (http://inet-deal.mpa.ru/articles/arduino-002.html). :) Сейчас меряет температуру с термометра по 1-wire, ток и напряжение, с выдачей всего этого в веб-интерфейс.
А в examples - это где?
У Вас шилд к нано? Не уверен что смогу к нано и дисплей и часы и все датчики подключить.
А в examples - это где?
У Вас шилд к нано?
Нет, шилды, традиционно, ориентируются на полноразмерные версии ардуино. К нано надо будет проводочки заказывать, или витую пару потрошить.
Примеры идут в библиотеке для чипа enc28j60 .
Не уверен что смогу к нано и дисплей и часы и все датчики подключить.
Ну так нарисуйте функциональную схему и выберите - что для Вас нужнее: датчики или дисплей. :) Я на дисплей изначально не замахивался, т.к. предполагаю, что система будет работать автоматически.
Кстати, под эту задачку есть хорошая платка (полно пинов, можно удобно и просто подключить большой дисплей, да еще и куча плюшек типа lan, rtc). Вот тут про нее написал: http://devicter.blogspot.ru/2012/12/iboard-pro.html
По цене получается дешевле, если все "плюшки" покупать шилдами по отдельности.
Программируется из среды ардуино (только нужно купить программатор - в статейке на него ссылка тоже есть).
Подскажите пожалуйста, как оптимальней/лучше/правильней осуществлять обмен данными ардуины с сайтом, имею ввиду передачу показаний датчиков?
1. Ардуина сама передает данные (клиент)
2. Посылать запрос на ардуину и получать ответ с данными (сервер)
А это как удобнее реализовывать.
Если пользователей сайта будет очень мало - то можно и на самой дуине веб-сервер организовать - пусть и собирает и отображает данные. Но тогда надо озаботиться, чтобы нагрузки точно не было (как-то изголяться, чтобы никто извне кроме владельца не мог отправить дуине запрос).
Если же посетителей будет много - то дуина загнется под нагрузкой крайне скоро.
Поэтому нужно чтобы с нее данные регулярно кто-то (ОДИН) забирал (или отдавала она сама ОДНОМУ клиенту), а дальше уже занимался отображением и т.п.
На мой взгляд - тут однофигифственно, чем будет дуина - сервером или клиентом, главное, чтобы с дуиной общались "один-на-один" и не слишком часто ;)
Ну я предполагаю, что скрипт на сервере с интервалом, допустим, 5 минут запрашивает данные с ардуины и записывает в базу данных, а на страничке данные уже отображаются из базы.
Интересно, а этот модуль справится с этой задачей? http://www.buyincoins.com/new_en/details/new-enc28j60-ethernet-lan-netwo...
Нормальное решение (про то, что сервер раз в 5 минут будет спрашивать дуину).
Ссылка как-то криво вставилась, но вижу там упоминание модуля enc28j60 - не рекомендую, лучше возьмите на базе wiznet w5100 - с ним будет гораздо проще работать (более богатые и простые библиотеки).
С модулем enc28j60 много сложностей (просто поищите его название даже на этом форуме - получите много информации), хотя и с ним можно работать.
Спасибо, вот еще один вопрос: ethernet займет 10,11.12,13 пины, как в таком случае подключить lcd дисплей? Только serial? Если подключать serial lcd, то на 4 и 5 аналоговых пинах (scl и sda), будут висеть и датчик давления bmp085 и часы ds1307, номально ли это? или можно lcd db5 db6 db7 db8 подключить на любвые цифровые входы/выходы? Просто везде на 10,11,12,13. Я новичек в этом пока только разбираюсь, итак уже понял что bmp085 и ds1307 не особо дружат из-за питания, придется подтягивающие резисторы на 3.3в ставить.
Интересно, а этот модуль справится с этой задачей?
Справится. Я там выше ссылку на свой проект давал для кого? :)
не особо дружат из-за питания, придется подтягивающие резисторы на 3.3в ставить.
Питание вообще лучше внешнее сделать и для ардуины и для ethernet-шилда отдельно.
Справится. Я там выше ссылку на свой проект давал для кого? :)
По Вашей ссылке он визуально другой, у меня по ссылке маленький, поэтому и засомневаля, а так если функционально одинаковый, то это хорошо.
А про питание может не так выразился, я имел ввиду что к 4 и 5 аналоговым входам будут подключены устройства с разным питанием (bpmp085 и ds1307), и вроде как это не очень хорошо, какие то уровни надо согласовывать. Нашел только инфу что если подтягивающие резисторы поставить не на 5в, а на 3.3 то часы ds1307 тоже работают нормально.
А почему питание раздельное надо делать?
Вот нашел где подключают lcd по-другому(http://robocraft.ru/blog/arduino/503.html), значит db4-7 неважно к каким пинам цеплять, как бы еще 11 и 12пины освободить ведь их будет ethernet использовать?
А про питание может не так выразился, я имел ввиду что к 4 и 5 аналоговым входам будут подключены устройства с разным питанием (bpmp085 и ds1307), и вроде как это не очень хорошо, какие то уровни надо согласовывать. Нашел только инфу что если подтягивающие резисторы поставить не на 5в, а на 3.3 то часы ds1307 тоже работают нормально.
Это называется "согласование уровней". :) Если подключать к одному входу два устройства - то их бы лучше диодами дополнительно развязать...
А почему питание раздельное надо делать?
Потому, что ethernet-модуль достаточно много потребляет, если длинный провод 1-wire для датчиков - туда тоже лучше свое питание завести, но обязательно надо согласовать их все по земле.
Т.е уличный датчик можно запитать отдельным блоком питания, а внутренний от ардуины, но gnd у них должны быть соединены?
Т.е уличный датчик можно запитать отдельным блоком питания, а внутренний от ардуины, но gnd у них должны быть соединены?
Их надо посадить на одну "землю" в соединительном кабеле. Ну и там еще керамический конденсатор (интегрирующая цепочка) на всякий случай всадить между датой и землей - тут лучше в первоисточник окунуться: http://www.maximintegrated.com/app-notes/index.mvp/id/148
Уважаемый Denis_Z, по профессии своей я бесконечно далек от электроники, поэтому, если мои соображения Вам помогут, буду рад, если нет - не обессудьте.
Первое, о чем я бы задумался, при построении данного проекта, это - а хватит ли у меня памяти arduino UNO для размещения столь сложного скетча.
Читая различные форумы, не помню где, я наткнулся на то, что скетчи к Ethernet Shield W5100 занимают практически всю память. Т.е., на опрос и обработку данных с датчиков ее попросту может не хватить. Поэтому - я бы сделал так: купил бы две arduino UNO - на одну одел бы шилд интернента, ну и, скажем, нацепил бы еще модуль Bluetooth, и она отвечала бы у меня условно за связь с внешним миром. На вторую arduino UNO я бы прицепил что-то типа Sensor Shield V4 для удобства коммуникации и, поскольку у Вас предполагается большое количество различных датчиков, Mux Shield .
Связь между этими двумя arduino UNO, я бы осуществил через I2C. По принципу - запрос из интернета -> обработка запроса W5100 -> внутренний запрос по шине I2C к ардуине с датчиками -> обратный ответ по той же цепочке в обратном порядке.
Полноценный web-server на W5100 вряд ли возможен, поэтому тут должно быть написано что-то типа web-службы, для ответов на запрос извне. А извне - это как Вам будет удобнее - WPF, WinForms или что-то другое (на вкус и цвет, как говориться).
Да, и по поводу вывода на LCD - его тоже лучше всего подсоединить через I2C, для экономии пинов. И последнее я прикупил бы вот такую детальку , чтобы не было пролем с подключением новых устройств к I2C.
Профессионалам, еще раз замечу, что я дилетант во всем этом, поэтому не судите строго. Это просто мысли вслух.
Под w5100 еще не смотрел, а под enc28j60 у меня скетч, снимающий 4 параметра (1-ds18b20 и 3 АЦП) и отдающий web-страничку, занимает чуть больше 12 килобайт. Про необходимость в этом проекте LCD дисплея я уже автору высказывал мнение, но, судя по всему, услышан не был...
Нет, Андрей, я все внимательно прочел, дисплей хотел для себя, чтобы время и остальные данные дома смотреть, т.к. задумка изначально для дома, а ethernet и обмен с сайтом доп опция, хотя также полезная для себя. А так-то дома можно опять же через браузер глянуть, но автономный дисплей как-то удобнее кажется.
Андрей, а АЦП что такое?
А вот, после ответа Kenobi, действительно задумался, хватит ли памяти UNO для скетча? Скетч по задумке должен уметь выводить на дисплей дату время (ds1307), температуру (in/out), влажность (in/out), атмосферное давление, а также по запросу через ethernet передавать данные c датчиков на сайт.
Думается мне, что АЦП - это аналого-цифровой преобразователь.
Я вот еще что забыл сказать - на Ethernet Shield W5100 есть помимо интернета еще и micro-SD reader, так вот, имейте ввиду, что одновременно использовать оба эти устройства вряд ли удасться, поскольку они делят между собой внутреннюю шину.
Это я к тому, что если вдруг логи вести какие-нибудь или там web-странички на ней хранить и считывать. Наверное как-то можно, но не уверен. И еще: по-моему этот шилд поддерживает лишь 4 одновременных подключения.
Долго отсуствовал - ждал ардуину, читал, разбирался. Недавно ардуина пришла - arduino mega 2560. И вот за 2 вечера запустил ардуино, часы ds1307 и вывод информации на дисплей от часов и всех датчиков. Датчики такие - dht11, dht22, ds18b20, bmp085. Подключил шилд ethernet, инициализировал, пингуется. Осталось реализовать передачу данных от датчиков на сайт и синхронизацию часов. Сайт на joomla, но я не программист, и поэтому с нуля написать скрипт не смогу. Подскажите есть ли у кого скрипт, который на сайте принимал бы данные и записывал бы в базу данных? А потом из базы последнне значение буду выводить в модуле на сайте.
Denis_Z, присоединяюсь к Вашему вопросу. У вас получилось как то это реализовать?
проще всего сделать программу, которая будет читать ком порт и посылать обычные post запросы на сайт, на сайте обрабатывать эти запросы записывая все в базу. С Жумлой не разбирался, но похожее сейчас делаю в Ворд прессе.
Ну для кого проще а для кого темный лес)
Я так понял ТС не надо мониторить ком порт ( так же как и мне )), для этого есть эзер шиелд на который можно слать запросы и получать ответы. Вопрос скорей всего в том а скорее зов о помощи в написание скрипта для сервера который будет слать запрос на ардуину с некой переодичностью и записывать полученные данные в базу mysql. Ну и небольшой примерчик для вывода на элементрную простую стрничку)
Denis_Z, присоединяюсь к Вашему вопросу. У вас получилось как то это реализовать?
В сообщении #1 - есть ссылка. Там все достаточно подробно расписано.
Да но этот вариант для локально сервера. Или я ошибаюсь? Если нет то можете привести пример для удаленного сервера? Я имею ввиду если эта страничка будет крутится на некоем хостинге. Можно сразу откинуть в получение доступа до ардуино спрятоного за роутером (ну или модемом), это я умею)
Итакс, продолжу. После длительных поисков и экспериментов мне удалось отправлять данные с датчиков на сайт, там простенький скрипт пишет эти данные в базу, а из базы достает модуль Joomla и выводит на сайте, собственно говоря просто sql запрос.
Но осталась одна проблема: т.к. я не программист мне пока не удалось понять как "скрестить" два куска кода, а именно:
1. Код который постоянно опрашивает датчики и часы и выводит данные на дисплей, т.е выполняется постоянно(имеется).
2. Код который, опрашивает датчики 1 раз в 5 минут (delay) и посылает данные на сайт (тоже есть)
Оба скетча у меня работают, а вот как их объединить в один, чтобы данные на экране были постоянно, а не раз в 5 минут, (там же ведь и часы) и отправлять данные датчиков через определенный интервал(раз в 5 мин).
Догадываюсь что delay использовать не получится, и надо интервал отправки как то в конструкции if else отмерить, но не хотелось бы привязывать к часам (ds1307), они же ведь могут и остановиться/сломаться.
Может кто подскажет? В какую сторону копать?
самое простое - используй переменную и наращивай ее. в коде проверяй, если она достигла какого то значения то выполняй код и обнуляй эту переменную
извеняюсь за синтаксис, сам программист, но не на си )))
А как узнать сколько времени занимает цикл, чтобы высчитать интервал? я так понимаю время цикла зависит от многих параметров, если так, то интервал точно не поймать. Пока читал форумы, где-то встречал, что где-то в ардуине фиксируется сколько она работает с момента запуска, где не помню.
Denis_Z, а как работает у Вас скрипт? На чем написан? Есть ли где почитать?)
Я так понимаю Вы переделывали чей то вариант? Если можно то ссылку)) Буду признателен)
Да но этот вариант для локально сервера. Или я ошибаюсь? Если нет то можете привести пример для удаленного сервера? Я имею ввиду если эта страничка будет крутится на некоем хостинге. Можно сразу откинуть в получение доступа до ардуино спрятоного за роутером (ну или модемом), это я умею)
У меня munin-скрипт ходит с сервера (тут надо просто отметить направление движения) и опрашивает ардуино - результат доступен снаружи. Поскольку сетка работает по tcpip - то ходить оно может откуда угодно, хоть туннелироваться через ssh. :) Если на хостинге можно запускать по крону шелловые скрипты - то будет работать.
Ардуино обращается к php скрипту расположенному на хостинге и передает данные методом get. Про этот метод передачи информации полно в интернете. Честно говоря, готовых решений не было, я искал так: нашел пример где ардуино посылает данные методом get (гдето на хабре), потом читал про get, как принять данные, переданные этим методом, потом искал как записать данные в таблицу и в итоге это все привело к этому скрипту php:
millis()
Возвращает количество миллисекунд с момента начала выполнения текущей программы на плате Arduino. Это количество сбрасывается на ноль, в следствие переполнения значения, приблизительно через 50 дней.
Можно ли эту переменную использовать для вычисления интервала?
Например интервал 5 мин. т.е. 300000 миллисекунд
предвижу проблему, что в момент в момент возвращения millis мы уже пропустим 300000 , т.к. цикл тоже выполняется некоторое время.
И правильно предвидите.
Логика должна быть следующая:
1. Объявляете глобальную переменную (unsigned long с, например)
2. Дальше проверяете условие, если millis() больше, чем time2send (это событие уже не пропустите), то отправить данные и что там еще нужно и увеличиваете значение time2send на время интервала между отправками (в миллисекундах).
Denis_Z, а Вы не думали как реализовать что бы запрос был от скрипта на сервере каждые пять минут а не отправка данных на сервер каждые пять минут? Или так будет сложнее?
Хоть я и не Денис, но подскажу.
1. Чтобы срабатывал запрос от сервера, "беззащитную и слабую" ардуинку нужно "показать" во внешний мир (нужен реальный IP-адрес и пробросить порты).
Поскольку ардуинка всяческое шифрование не потянет просто из-за своих возможностей - ее очень запросто можно "уложить" совсем небольшим количеством запросов.
2. Организовать регулярные запросы от сервера можно (например crond воспользваться), но не на всех серверах вам такое позволят и разбираться с этим придется.
В случае, если ардуинка постит регулярно данные - оба обозначенные аспекта не играют никакой роли.
Просто в случае Дениса это было бы выгоднее, лично моё мнениею. Проблем с белым айпи щас помоему не проблема. Настроить НАТ на роутере тоже не беда. И прверять в цикле если пришёл запрос - отдавай, нет - молчком дальше выводим всё на дисплей. К тому же многие железки знают и умеют такую вещь как ДунДНС так что это облегчает задачу с динамическими публичными айпи
Абсолютно верно, главная причина отправки именно ардуиной, это динамический ip, а динднс я считаю костылем :)
И еще раз повторю ардуино все отправляет, т.е. работает как задумано и с интервалом через delay и если бы не было необходимости использовать ее дома еще как часы и метестанцию, то вопросов бы не было.
Несмотря на это, код уже примерно есть, осталось его улучшить, пока мысли такие.
Есть еще вопрос. Как правильно обьявить переменные time, timeold, чтобы в ним поместились огромные значения millis(), да плюс еще 300000 ?
Unsigned long используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1) изанимает 32 бита (4 байта) в памяти
millis() Возвращает количество миллисекунд с момента начала выполнения текущей программы на плате Arduino. Это количество сбрасывается на ноль, в следствие переполнения значения, приблизительно через 50 дней.
Простые подсчеты показали, что в millis значение может быть такое же как и максимальное в unsigned long, а то и больше, .т.е прежде чем счетчик обнулится, у меня в переменные перестанут записываться данные. Это плохо, т.е в какой-то момент мой код не отработает как надо.
Это что остается только перезагружать ардуино на 49 день?
Просто в случае Дениса это было бы выгоднее, лично моё мнениею. Проблем с белым айпи щас помоему не проблема. Настроить НАТ на роутере тоже не беда. И прверять в цикле если пришёл запрос - отдавай, нет - молчком дальше выводим всё на дисплей. К тому же многие железки знают и умеют такую вещь как ДунДНС так что это облегчает задачу с динамическими публичными айпи
Вы логи своего роутера, видимо, или совсем не смотрите или просто не обращаете внимание. Если у вас белый айпишник (даже если динамический), то регулярно видна активность различных "сниферов", которые прощупывают все доступные адреса.
Выставьте свою ардуинку через НАТ и помониторьте активность, будете сильно удивлены, что запросы будут не только ваши, но и чьи-то чужие. И активность этих запросов может быть достаточно велика (тут как повезет).
А мало-мальская нагрузка на "веб-сервер" ардуинки - и она просто не сможет отрабатывать запросы. Оно вам надо?
Это что остается только перезагружать ардуино на 49 день?
У вас ардуинка ярдерным реактором рулит? Обычно ничего страшного не происходит при "переходе" через нуль для unsigned long.
Промоделируйте ситуацию (у вас millis() перейдет через максимальное значение и начнет считать с нуля, но прямо перед этим у вас "время, когда надо измерять" уже тоже через максимальное значение на очередном шаге инкремента тоже через максимальное "перелетит").
Промоделируйте ситуацию (у вас millis() перейдет через максимальное значение и начнет считать с нуля, но прямо перед этим у вас "время, когда надо измерять" уже тоже через максимальное значение на очередном шаге инкремента тоже через максимальное "перелетит").
С millis все понятно, кроме того что не знаю какое максимальное значение принимает перед тем как обнуляется, предполагаю что такое же как и максимальное в unsigned long.
И еще непонятно что будет если я в переменную unsigned long , буду присваивать значение которое заведомо больше максимально возможного для размещения в ней. Ошибка будет, в ней останется прежнее значение или запишет значение равное превышению над мксимально возможным.
И еще непонятно что будет если я в переменную unsigned long , буду присваивать значение которое заведомо больше максимально возможного для размещения в ней. Ошибка будет, в ней останется прежнее значение или запишет значение равное превышению над мксимально возможным.
Напишите тестовый скетч в "3 строчки" и посмотрите, что будет.
Просто в случае Дениса это было бы выгоднее, лично моё мнениею. Проблем с белым айпи щас помоему не проблема. Настроить НАТ на роутере тоже не беда. И прверять в цикле если пришёл запрос - отдавай, нет - молчком дальше выводим всё на дисплей. К тому же многие железки знают и умеют такую вещь как ДунДНС так что это облегчает задачу с динамическими публичными айпи
Вы логи своего роутера, видимо, или совсем не смотрите или просто не обращаете внимание. Если у вас белый айпишник (даже если динамический), то регулярно видна активность различных "сниферов", которые прощупывают все доступные адреса.
Выставьте свою ардуинку через НАТ и помониторьте активность, будете сильно удивлены, что запросы будут не только ваши, но и чьи-то чужие. И активность этих запросов может быть достаточно велика (тут как повезет).
А мало-мальская нагрузка на "веб-сервер" ардуинки - и она просто не сможет отрабатывать запросы. Оно вам надо?
Странно... И как она будет отрабатывать все эти левые заросы?
Выставьте свою ардуинку через НАТ и помониторьте активность, будете сильно удивлены, что запросы будут не только ваши, но и чьи-то чужие. И активность этих запросов может быть достаточно велика (тут как повезет).
Если есть NAT и можно "мониторить активность" - то можно эту активность и отфильтровать как понравится... За мыльницу - не скажу, а на шлюзе с операционной системой можно поднять nginx, который умеет фильтровать запросы, смотреть - что там внутри, да и активность может варьировать.
С другой стороны, ставим паузу между запросом и ответом в десяток секунд, и практически ни один робот этого ответа дожидаться не станет, а тем более, пытаться там еще раз что-то запрашивать.
С третьей стороны - а не надо рисовать развесистую и "тяжелую" страницу. Данные на стороне arduino должны быть готовы к отдаче, ну отдали 50 байт по запросу... Кого это напряжет?
Странно... И как она будет отрабатывать все эти левые заросы?
Она их примет во входной буфер и попытается прочитать... Что там произойдет с кодом при, например, переполнении входного буфера - Вы можете заранее оценить? Обычно о защите от переполнения программисты думают в последнюю очередь.
Подскажите, пожалуйста! Есть ответ сервера, получаем его таким кодом:
Вот собственно сам ответ сервера:
HTTP/1.0 200 OK
Date: Sat, 30 Mar 2013 10:33:21 GMT
Server: LiteSpeed
Connection: close
Content-Type: text/html
Content-Length: 0
Как проверять код ответа от сервера? Ну т.е если ответ 200, то одно дествие, а если код ответа не 200, то другое действие. Как извлечь код ответа(символы 10,11,12) из переменной c?
Ардуино обращается к php скрипту расположенному на хостинге и передает данные методом get. Про этот метод передачи информации полно в интернете. Честно говоря, готовых решений не было, я искал так: нашел пример где ардуино посылает данные методом get (гдето на хабре), потом читал про get, как принять данные, переданные этим методом, потом искал как записать данные в таблицу и в итоге это все привело к этому скрипту php:
Денис подскажи пажалуйста! Я вот не понял, у тебя пароль так сказать в открытом виде передается вместе с данными? Или же есть какая то спецальная функция или еще че то? Я имею ввиду к примеру:
http://localhost/test.php?pass=***&t=**&p=**&h=**
В таком виде?
Да в таком, если передавать данные из браузера, то так и выглядит. Я не совсем понимаю, что значит в открытом виде. Собственно говоря, он и не нужен, ведь для того чтобы кто-то кроме вас передал данные скрипту, нужно знать и наименование параметра в запросе t p h, сделайте параметры уникальными (mytemp и т.п.) и думаю пароль не нужен будет. Вообще такая схема обмена, когда ардуина сама посылает данные, думаю более безопасна, хотя я и не программист.