Не мог не отметить замечательное творение — Blynk. Чем то похожая на RemoteXY и ThingSpeak, платформа перекрывает (объединяет) их и делает очень простым и удобным создание различных решений для интернета вещей…
Ниже — просто несколько слов о платформе (вольный пересказ страницы Getting started).
Будем строить наше первое решение для интернета вещей.
Нам понадобится смартфон с Android 4.2 (или выше) ; какое-то наше аппаратное «изделие», например, на Arduino; доступ в интернет, например, по Ethernet.
Поехали…
- Загружаем приложение Blynk App на смартфон (для этого: создаем аккаунт, создаем новый проект, получаем Auth Token)
- Инсталлируем Blynk Library в нашем Arduino IDE
- Находим пример кода для нашей аппаратной модели (например, такой). В Blynk Example Code Builder выбираем модель, тип подключения и прописываем полученный ранее Auth Token. Копируем полученный код через буфер в нашу Arduino IDE.
- Запускаем приложение на смартфоне, получаем сообщение «что аппаратное устройство не обнаружено». «Прошиваем» Arduino полученным ранее скетчем. Убеждаемся в мониторе, что все работает.
На этом… Все! Якобы ничего не надо больше программировать…
На самом деле стоит почитать примеры, особенно про «виртуальные пины». Например, рассмотреть такую модель: в приложении нарисовать кнопку и отрабатывать ее нажатие включением светодиода...
В указанном примере светодиод подключен к D3. На смартфоне в Blynk App создаем новый проект (получаем Auth Token). В проекте добавляем виджет кнопки. В свойствах виджета прописываем управление пином D3, устанавливаем режим переключателя.
Далее готовим код для аппаратного решения с помощью Blynk Example Code Builder. Выбираем модель, тип подключения и прописываем полученный ранее Auth Token. Копируем полученный код через буфер в нашу Arduino IDE.
Запускаем, управляем светодиодом со смартфона.
Другой проект: наоборот, мы не управляем, а просто принимаем данные с «нашей ардуины». Пример генерируемого кода:
#define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "YourAuthToken"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "YourNetworkName"; char pass[] = "YourPassword"; BlynkTimer timer; // This function sends Arduino's up time every second to Virtual Pin (5). // In the app, Widget's reading frequency should be set to PUSH. This means // that you define how often to send data to Blynk App. void myTimerEvent() { // You can send any value at any time. // Please don't send more that 10 values per second. Blynk.virtualWrite(V5, millis() / 1000); } void setup() { // Debug console Serial.begin(9600); Blynk.begin(auth, ssid, pass); // You can also specify server: //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80); //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080); // Setup a function to be called every second timer.setInterval(1000L, myTimerEvent); } void loop() { Blynk.run(); timer.run(); // Initiates BlynkTimer }
Пример показывает как из Arduino данные (в данном случае секундные отсчеты) передаются в мобильное приложение. В приложении частота чтения виджета должна быть установлена на PUSH (In the app, Widget’s reading frequency should be set to PUSH).