「Arduino가 무선으로 접속할 수 있으면 좋지만…」라고 생각하는 분에게

9238 단어 vvvvArduinoESP8266
Arduino는 편리하며 PC와 연결하면 다양한 센서에서 정보를 가져오거나 제어할 수 있습니다.

그러나, 이 연결되는 질문 부분이 넥이 되어, 실현할 수 없는 일이 있었습니다.
예를 들어, 맥박의 시각화. 맥박 센서는 몇 종류 Arduino에 있기 때문에, 정도로 접속해 버리면 어떻게 든 됩니다. 그렇지만, 대상자가 움직이는 경우, 배선으로 연결해 두는 것은 되지 않습니다.

무선으로 정보를 보내주는 "Arduino 같은 것"이 있으면 ...

그런 당신에게 꼭 소개하고 싶다! 그런 보드가 있습니다!

ESP-WROOM-02 개발 보드 (ESPr Developer)




전시 : 스위치 과학

가격 무려 2,580엔!
저렴!

그런데, 어떻게 무선으로 접속하는가 하면, 이런 느낌입니다.


SoftAP 모드에서는 ESP-WROOM-02 자체가 액세스 포인트가 됩니다.
즉, 프로그램을 작성한 ESP-WROOM-02를 모바일 배터리에 연결하는 순간 Wifi가 날아갑니다.
PC측에서는, 이 액세스 포인트에 접속하는 것만으로 OK입니다.

StationMode는 다른 Wifi를 통해 연결합니다. 이쪽이 이미지하기 쉽습니까.

보시다시피, 점퍼 와이어를 삽입하는 구멍이 있습니다.
이 근처도 Arudino와 같기 때문에 친숙한 곳입니다.

크기는 이쪽의 이미지를 봐 주시면 알 수 있듯이, 작습니다.
(겹치는 흰색 상자와 같은 것은 센서 측 장치입니다.)


모바일 배터리로부터의 급전에서도 움직였습니다.

실용 예



모바일 배터리로부터의 급전으로 ESP-WROOM-02를 구동(액세스 포인트 모드). 맥박 센서의 정보를 TOUT에서 읽고 UDP로 날아갑니다.
시각화는 친숙한 vvvv입니다.



구현에 대해서는, 이쪽의 정보에 따라 실시했습니다.
ESP8266을 사용하여 Arduino에서 네트워크에 연결해보십시오.
ESP8266에 Arduino 스케치를 쓰고 UDP 데이터 송수신
(필자의 이시이 감사합니다.)

아날로그 센서 값을 TOPUT 핀에서 가져오기에는 약간 요령이 있어 이쪽을 참고로 했습니다. h tp : 작은 m / 아즈사 9 / MS / 26 그림 74 그림 4 그림 0d5773 등 9C41

또, 펌웨어 갱신을 수색으로 했습니다만, 메모리의 번지 지정등이 있어, 왜도 모르면 하면 기동조차 하지 않게 되어 걸었습니다. 그런 때, 이 사이트에 구원 되었으므로, 만약 같은 일로 곤란하면 보면 좋을지도 모릅니다.
h tp // 네무이씨. bぉg. 바. 네. jp/? 예d=215341

결국 내가 사용한 코드는 여기.

ESP
#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
extern "C" {
#include "user_interface.h"
}

//Access Point Setting
const char *APSSID = "ESP_WROOM_02";
const char *APPASS = "hoge4009";
unsigned int localPort = 8888;

WiFiUDP UDP;
char packetBuffer[255];

static const char *udpReturnAddr = "192.168.4.2";
static const int udpReturnPort = 8889;

void setup() {

  Serial.begin(115200);
  Serial.println();

  WiFi.softAP(APSSID, APPASS);

  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  UDP.begin(localPort);

}

void loop() {

  int packetSize = UDP.parsePacket();

 if (packetSize) {

    int len = UDP.read(packetBuffer, packetSize);
    //終端文字設定
    if (len > 0) packetBuffer[len] = '\0';



  uint ADC_Value = 0;
  ADC_Value = system_adc_read();
  Serial.println("=======ANALOG " + String(ADC_Value) + "ANALOG ");


String str = String(ADC_Value) ;
int a = str.length();
 char msg[a+1];
  str.toCharArray(msg, a+1);


    UDP.beginPacket(udpReturnAddr, udpReturnPort);
    UDP.write(msg,a+1);
    UDP.endPacket();  

} 

}

※기억이 맞으면, PC측으로부터 포트 8888에 UDP로 「1」을 날려 줄 필요가 있습니다.
그렇다고 하는 것은 , 이 처리를 넣지 않고 , 전원 넣으면 바로 UDP 달리게 해 주면 보드 자체가 잘 움직이지 않기 때문입니다.

좋은 vvvvLife를!

좋은 웹페이지 즐겨찾기