Arduino android wifi управление

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

ayoubElhoucine/Connect-Android-to-Arduino-via-Wifi

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Android wifi is a demo aplication that shows you how to connect and send messages to Arduino via wifi communication , the demo android app is also provided in google play under the link https://play.google.com/store/apps/details?id=com.tofaha.Android_wifi . the communication system based on sever/client communication , in which android app act like client and the arduino program as server.

in the android side the steps to communicate to arduino is very easy , the socket client is used for that , the socket client needs two parameters to find the tareget wifi module the first parameter is the wifi module IP address , and the seconde parameter is the port number , well the first thing you need to do is to open a socket connection , the server side (arduino with wifi module) has to be launched first and then the client (android device) will reach the server by the ip address and port number , you should be aware of where you instanciate the socket because it has to be instanciated in diffrent thread then the UI thread , if you do it in UI thread the app will crash , here sample how to open socket connection inside asyncTask:

class OpenConnection(private val ipAddress: String, private val portNumber: Int) : AsyncTask() < override fun doInBackground(vararg voids: Void): Void? < try < MyData.socket = Socket(ipAddress, portNumber) System.out.println("connection opened") >catch (e: IOException) < e.printStackTrace() >return null > > 

and to send messages to server , you will need printWriter object to write in socket ibject that you already created and the socket will do the rest , here how you can do it :

Читайте также:  Скорость вай фай соединения ростелеком

class SendMessages(msg: String) : AsyncTask()

internal var msg = "" init < this.msg = msg >override fun doInBackground(vararg voids: Void): Void? < try < val out = PrintWriter(BufferedWriter(OutputStreamWriter(MyData.socket .getOutputStream())), true) out.println(msg) println("message send") >catch (e: IOException) < e.printStackTrace() >return null > 

and to recieve messages from server , all you need to do is create an instance of bufferReader and pass the socket to it as parameter , and of course you need to do that inside loop with time out as optional , so whenever the server send message the socket object will receive it and bufferdReader will read the message from socket and you write it to the UI thread , here is the code (I used anko library in this code):

to close the connection that what you do : socket.close() method :

class CLoseConnection : AsyncTask()

override fun doInBackground(vararg params: Void?): Void? < try < MyData.socket?.close() System.out.println("connection closed") >catch (e: IOException) < e.printStackTrace() >return null > 

Server Side (Arduino with wifi module)

in the server side I use arduino with wifi module(ESP8266) , well the first thing you need to consider is how to communicate arduino with the module , the communication will be done by the serial communication(Rx/Tx) , arduino board contains UART(Universal Asynchronious Receiver Transmmiter) , and the number of UART that arduino board contain is depend on the type of arduino like arduino uno has only one UART , so we are going to use the library of the serialSoftwar in arduino and by this library we can write and read to serial buffer (Rx/Tx) , after that we attach the Rx and Tx pin to Tx and Rx pin of the ESP8266 , this is how to communicate arduino with ESP8266 :

Communicate arduino with esp module

#include SoftwareSerial ESP8266(2,3); //(Rx/Tx) that means you have to attach pin 2 with esp Tx and pin 3 with esp Rx 

ESP configuration and setup with AT commands

after the communication is established you now need to configure ESP as you need it to work , and that will be done by the ATcommand , in arduino IDE we will type the ATcommand and write it to the serialSoftware :

void sendESP8266Cmdln(String cmd, int waitTime) < ESP8266.println(cmd); delay(waitTime); clearESP8266SerialBuffer(); >void setup() < Serial.begin(9600); ESP8266.begin(115200); // change this value to your wifi module (esp8266) baud rate do< ESP8266.println("AT"); delay(1000); if(ESP8266.find((char*)"OK")) < Serial.println("Module is ready"); delay(1000); clearESP8266SerialBuffer(); //configure ESP as station sendESP8266Cmdln("AT+CWMODE=1",1000); //Join Wifi network sendESP8266Cmdln("AT+CWJAP="+ssid+","+pass,6500); //Get and display my IP sendESP8266Cmdln("AT+CIFSR", 1000); //Set multi connections sendESP8266Cmdln("AT+CIPMUX=1", 1000); //Setup web server on port 80 sendESP8266Cmdln("AT+CIPSERVER=1,3333",1000); Serial.println("Server setup finish"); FAIL_8266 = false; >else < Serial.println("Module have no response."); delay(500); FAIL_8266 = true; >>while(FAIL_8266); ESP8266.setTimeout(100); > 

Receive messages from client

after the configuration and setup of the ESP now you are ready to send and recieve data from client : to recieve data from client is very easy step , first you need to prepare the server and that will be done in the setup part , after that you write this code inside the loop method :

to send data to client , well in this case to establish the client you need communication id , so if there are for exemple 5 client , so you need 5 communication id to send to each client , and in the case there is only one client you can use 0 as the value of the communication id :

connectionId = 0 ; void sendStringResponse(int connectionId, String content) < sendCIPData(connectionId,content); >void loop() < if ( Serial.available() )< String s = Serial.readString(); sendStringResponse(connectionId , s + "\r\n"); >> 

Источник

Читайте также:  Вывести изображение через wifi

Автоматизация дома с использованием Arduino и WiFi

Домашняя автоматизация — актуальная тема в наши дни. Мы собираемся управлять устройствами переменного тока через Интернет с помощью телефона Android из любой точки мира. В качестве основного контроллера будет использоваться плата разработки ESP8266.

Здесь мы будем использовать сервисы RemoteMe.

ВНИМАНИЕ: переменный ток очень опасен, и случайный удар током может привести к летальному исходу. Работайте с приборами переменного тока только в том случае, если вы на 100% уверены, что знаете, с чем имеете дело. Мы не будем нести ответственность, если вы причините какой-либо вред себе или кому-либо еще.

Что такое RemoteMe?

Начнем с простого введения в RemoteMe для тех, кто не знает, что это такое и что вы можете с ним сделать. RemoteMe — это веб-приложение, которое используется для связи с такими устройствами, как Arduino, NodeMCU, Raspberry Pi и т.д. С помощью приложения RemoteMe вы можете разместить веб-сайт для управления своими устройствами в облаке RemoteMe.

Только вы и пользователи, которые имеют сгенерированный ключ, имеют доступ к этим веб-сайтам. Вы можете иметь столько страниц, сколько хотите, и это абсолютно бесплатно! RemoteMe также имеет встроенный мастер кода, поэтому вам не нужно писать весь код Arduino с нуля. Все, что вам нужно, это учетная запись на RemoteMe, чтобы использовать его функции.

Что такое Arduino Remote LITE?

Arduino Remote Lite — это приложение для Android, которое можно использовать для удаленного управления вашими проектами через Bluetooth или WiFi. Он также может быть подключен к серверу RemoteMe для управления реле и другими такими устройствами. Вы можете скачать это приложение из Google Play.

Компоненты проекта «Умный дом»

плата реле (я использовал 4-канальное реле, вы даже можете использовать 8-канальное или 16-канальное реле)

макетная плата (для создания прототипов, вы можете сделать постоянную схему на печатной плате, если хотите)

Настраиваем Arduino IDE

Перво-наперво, нам нужно настроить Arduino IDE и установить все необходимые библиотеки. Чтобы иметь возможность программировать плату ESP, вам необходимо настроить Arduino IDE. Как только среда ESP будет готова, следующим шагом будет добавление библиотек, необходимых для подключения к RemoteMe. Откройте Arduino IDE и перейдите к » Sketch » Include Library » Manage Libraries . Появится всплывающее окно, где вы должны искать нужные библиотеки и устанавливать их одну за другой.

Вам необходимо установить следующие библиотеки:

После установки этих библиотек среда IDE готова к работе с RemoteMe.org.

Настройка RemoteMe

Сначала зайдите на RemoteMe.org и зарегистрируйтесь, если вы этого еще не сделали.

Теперь установите Arduino Remote Lite и войдите в систему, используя учетную запись RemoteMe. Как только это будет сделано, вернитесь на сайт RemoteMe для создания переменных.

Внимательно выполните следующие шаги:

После входа в систему перейдите в «Variables», здесь вы увидите список переменных, автоматически создаваемых приложением Android Remote Lite. Мы будем использовать эти переменные для управления реле.

Теперь над «Variables» есть еще одна опция «Devices», нажмите на нее, и загрузится новая страница, где вы можете создавать устройства.

Читайте также:  Безлимитный интернет билайн раздача вай фай

Нажмите на ‘New Devices’ в правом верхнем углу, появится раскрывающийся список. Выберите последний вариант ‘New Network Device’. Теперь дайте устройству имя, например, ‘Relay‘ или ‘Automation‘, или как угодно. Также присвойте устройству уникальный идентификатор, чтобы устройство распознавалось и отличалось от других устройств.

Генерация кода Arduino

После вышеуказанного шага появится новое устройство. Теперь мы должны сгенерировать код Arduino. Нажмите меню расположенное в строке в конце (изображение с 3-мя горизонтальными линиями). Затем выберите ‘Code Generating Wizard’. Вы увидите всплывающее окно со списком всех переменных, сгенерированных приложением.

Прокрутите вниз, чтобы найти список реле. Так как здесь используем 4-канальное реле, выберем первые 4-е реле. Если вы используете 8/16-канальное реле. выберите нужные номера и нажмите ‘Next’.

На следующем шаге введите имя и пароль WiFi и нажмите ‘Next’.

У вас также есть возможность включить ‘Enable Direct Connection‘. Если вы включите эту опцию, приложение будет подключаться к устройству напрямую без интернета, если смартфон находится в зоне действия WiFi.

На следующем шаге включите параметр Debug и нажмите ‘Next’. Теперь вы можете скачать код на свой компьютер. Нам нужно отредактировать код, чтобы установить контакты ввода/вывода.

Модифицирование кода Arduino для «Умного дома»

Если вы уже использовали RemoteMe, эта часть должна выглядеть знакомо. Внесите изменения, необходимые для вашего проекта. Или, вы можете использовать приведенные ниже, чтобы загрузить наши модификации.

int Relay1 = D0;
int Relay2 = D1;
int Relay3 = D2;
int Relay4 = D3;

Вы можете добавить больше, если хотите.

void onRELAY_01Change(boolean b)
<
Serial.printf(«onRELAY_01Change : b : %d\n», b);
if(b == 1)
<
digitalWrite(Relay1, HIGH);
>
else if(b == 0)
<
digitalWrite(Relay1, LOW);
>
>

Выше функции в коде отредактированы для рабочих реле. Аналогичным образом вы можете редактировать все функции для количества используемых вами реле.

pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
pinMode(Relay4, OUTPUT);

Приведенный выше код необходимо добавить в настройку, чтобы установить выводы в качестве выходных. Вот и весь код, который нужно отредактировать. Весь код можно скачать отсюда. Просто добавьте имя и пароль WiFi, идентификатор вашего устройства и токен, которые можно найти в пункте меню ‘Token‘ расположенный ниже ‘Variables‘.

После этого код готов к загрузке на плату ESP.

Подключение электроники

Теперь, когда программное обеспечение готово, мы можем подключить печатную плату. Вот принципиальная схема:

Сначала поместите плату ESP8266 на макетную плату и подключите вывод GND к -ve направляющим с обеих сторон.

Теперь подключите соединители к плате реле, ниже показано как подключать.

Затем подключите источник питание 9В к макетной плате. Он будет питать как реле, так и логическую схему платы реле. Затем подключите провода устройства, которым вы хотите управлять. Устройство переменного тока будет иметь 2 провода. Сначала обрежьте провод фазы и подключите один конец к центральной клемме реле, а другой конец к нормально открытой клемме.

Теперь перейдем к тестированию сборки. Сначала включите источник питание 9В. Если вы также хотите запитать плату ESP от батареи, просто подключите контакт Vin платы ESP к +ve рейке макетной платы. Тогда вам не нужно будет подключать USB-кабель.

Откройте приложение Arduino Remote Lite, перейдите к третьей опции ‘Relay Control’, здесь вы можете управлять реле с помощью переключателей. Когда вы переключаете реле из RemoteMe, лампа должна включаться и выключаться.

Источник

Оцените статью
Adblock
detector