2020年に製作したロボットアームを旧Blynkが使えるBlynk (Legacy )ローカルサーバーによるスマホアプリBlynk (Legacy )からESP8266制御ロボットアームを操作しました。
動画
参考サイト
●Blynk(Legacy)を自前サーバー構築で無料かつ使い放題スマートホーム実現の方法【https://androshudan.com/blynk-local-server-5265.html】
Blynk Legacyローカルサーバー
Blynk Legacyローカルサーバー (Raspberry Pi 3B+) |
Blynk Legacyローカルサーバーから旧BlynkアプリによるRaspberry Pi ロボットアーム操作。
● 同ブログ関連記事:【Blynk (Legacy )ローカルサーバー構築】
ESP8266
ESP8266 ESP-12F |
●ESP8266 ESP-12F(技適製品)
WiFi 開発ボード
(USB Type-Cから電源供給)
●PCA9685 16チャネル PWM/サーボ ドライバー (I2C接続)(外部から5V電源供給)
スマホアプリBlynk (Legacy )
●My Devices
図面
※Raspberry Pi ローカルサーバーを立ち上げておく。
【プロジェクト名】
【デバイス】選択
【コネクトタイプ】選択
スマホにボタン・スライダー配置
サーボモータコントロール
V0-V5
V0-V5
●Button Settings
ポジション設定
V10-V12
スマホ操作画面
※Raspberry Pi 画面を表示する
(リモートデスクトップ接続 )
●Blynk (Legacy )ローカルサーバー ブラウザ
【//127.0.1.1:9443/admin#/users/edit/xxxxx@gmail.com-Blynk】
Tokenをコピー
●同ブログ関連記事:【Blynk (Legacy )ローカルサーバー構築】Arduino IDE
ESP32プログラム
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
char auth[] = "................................D-pn";
char ssid[] = "xxxxxxxx";
char pass[] = "xxxxxx";
char server[] = "192.168.1.81";
int port = 8080;
int SLIDER;
int SLIDER0;
int SLIDER1;
int SLIDER2;
int SLIDER3;
int SLIDER4;
int SLIDER5;
int nSLIDER0;
int nSLIDER1;
int nSLIDER2;
int nSLIDER3;
int nSLIDER4;
int nSLIDER5;
BLYNK_WRITE(V0) {
SLIDER = param.asInt();
if( SLIDER > SLIDER0 ) {
for (SLIDER0; SLIDER0 != SLIDER ; SLIDER0++){
pwm.setPWM(0, 0, SLIDER0);
delay(10);
}
}
else if( SLIDER < SLIDER0 ) {
for (SLIDER0; SLIDER0 != SLIDER ; SLIDER0--){
pwm.setPWM(0, 0, SLIDER0);
delay(10);
}
}
}
BLYNK_WRITE(V1) {
int SLIDER = param.asInt();
if( SLIDER > SLIDER1 ) {
for (SLIDER1; SLIDER1 != SLIDER ; SLIDER1++){
pwm.setPWM(1, 0, SLIDER1);
delay(10);
}
}
else if( SLIDER < SLIDER1 ) {
for (SLIDER1; SLIDER1 != SLIDER ; SLIDER1--){
pwm.setPWM(1, 0, SLIDER1);
delay(10);
}
}
}
BLYNK_WRITE(V2) {
int SLIDER = param.asInt();
if( SLIDER > SLIDER2 ) {
for (SLIDER2; SLIDER2 != SLIDER ; SLIDER2++){
pwm.setPWM(2, 0, SLIDER2);
delay(10);
}
}
else if( SLIDER < SLIDER2 ) {
for (SLIDER2; SLIDER2 != SLIDER ; SLIDER2--){
pwm.setPWM(2, 0, SLIDER2);
delay(10);
}
}
}
BLYNK_WRITE(V3) {
int SLIDER = param.asInt();
if( SLIDER > SLIDER3 ) {
for (SLIDER3; SLIDER3 != SLIDER ; SLIDER3++){
pwm.setPWM(3, 0, SLIDER3);
delay(10);
}
}
else if( SLIDER < SLIDER3 ) {
for (SLIDER3; SLIDER3 != SLIDER ; SLIDER3--){
pwm.setPWM(3, 0, SLIDER3);
delay(10);
}
}
}
BLYNK_WRITE(V4) {
int SLIDER = param.asInt();
if( SLIDER > SLIDER4 ) {
for (SLIDER4; SLIDER4 != SLIDER ; SLIDER4++){
pwm.setPWM(4, 0, SLIDER4);
delay(10);
}
}
else if( SLIDER < SLIDER4 ) {
for (SLIDER4; SLIDER4 != SLIDER ; SLIDER4--){
pwm.setPWM(4, 0, SLIDER4);
delay(10);
}
}
}
BLYNK_WRITE(V5) {
int SLIDER = param.asInt();
if( SLIDER > SLIDER5 ) {
for (SLIDER5; SLIDER5 != SLIDER ; SLIDER5++){
pwm.setPWM(5, 0, SLIDER5);
delay(50);
}
}
else if( SLIDER < SLIDER5 ) {
for (SLIDER5; SLIDER5 != SLIDER ; SLIDER5--){
pwm.setPWM(5, 0, SLIDER5);
delay(50);
}
}
}
BLYNK_WRITE(V10) {
nSLIDER0 = 400;
nSLIDER1 = 500;
nSLIDER2 = 600;
nSLIDER3 = 400;
nSLIDER4 = 400;
nSLIDER5 = 400;
slider();
}
BLYNK_WRITE(V11) {
nSLIDER0 = SLIDER0;
nSLIDER1 = 375;
nSLIDER2 = 600;
nSLIDER3 = 375;
nSLIDER4 = 400;
nSLIDER5 = 500;
slider();
}
BLYNK_WRITE(V12) {
nSLIDER0 = SLIDER0;
nSLIDER1 = 375;
nSLIDER2 = 600;
nSLIDER3 = 375;
nSLIDER4 = 400;
nSLIDER5 = 400;
slider();
}
void slider(){
if( nSLIDER0 > SLIDER0 ) {
for (SLIDER0; SLIDER0 != nSLIDER0 ; SLIDER0++){
pwm.setPWM(0, 0, SLIDER0);
delay(10);
}
}
else if( nSLIDER0 < SLIDER0 ) {
for (SLIDER0; SLIDER0 != nSLIDER0 ; SLIDER0--){
pwm.setPWM(0, 0, SLIDER0);
delay(10);
}
}
if( nSLIDER1 > SLIDER1 ) {
for (SLIDER1; SLIDER1 != nSLIDER1 ; SLIDER1++){
pwm.setPWM(1, 0, SLIDER1);
delay(10);
}
}
else if( nSLIDER1 < SLIDER1 ) {
for (SLIDER1; SLIDER1 != nSLIDER1 ; SLIDER1--){
pwm.setPWM(1, 0, SLIDER1);
delay(10);
}
}
if( nSLIDER2 > SLIDER2 ) {
for (SLIDER2; SLIDER2 != nSLIDER2 ; SLIDER2++){
pwm.setPWM(2, 0, SLIDER2);
delay(10);
}
}
else if( nSLIDER2 < SLIDER2 ) {
for (SLIDER2; SLIDER2 != nSLIDER2 ; SLIDER2--){
pwm.setPWM(2, 0, SLIDER2);
delay(10);
}
}
if( nSLIDER3 > SLIDER3 ) {
for (SLIDER3; SLIDER3 != nSLIDER3 ; SLIDER3++){
pwm.setPWM(3, 0, SLIDER3);
delay(10);
}
}
else if( nSLIDER3 < SLIDER3 ) {
for (SLIDER3; SLIDER3 != nSLIDER3 ; SLIDER3--){
pwm.setPWM(3, 0, SLIDER3);
delay(10);
}
}
if( nSLIDER4 > SLIDER4 ) {
for (SLIDER4; SLIDER4 != nSLIDER4 ; SLIDER4++){
pwm.setPWM(4, 0, SLIDER4);
delay(10);
}
}
else if( nSLIDER4 < SLIDER4 ) {
for (SLIDER4; SLIDER4 != nSLIDER4 ; SLIDER4--){
pwm.setPWM(4, 0, SLIDER4);
delay(10);
}
}
if( nSLIDER5 > SLIDER5 ) {
for (SLIDER5; SLIDER5 != nSLIDER5 ; SLIDER5++){
pwm.setPWM(5, 0, SLIDER5);
delay(10);
}
}
else if( nSLIDER5 < SLIDER5 ) {
for (SLIDER5; SLIDER5 != nSLIDER5 ; SLIDER5--){
pwm.setPWM(5, 0, SLIDER5);
delay(10);
}
}
nSLIDER1 = 500;
if( nSLIDER1 > SLIDER1 ) {
for (SLIDER1; SLIDER1 != nSLIDER1 ; SLIDER1++){
pwm.setPWM(1, 0, SLIDER1);
delay(10);
}
}
else if( nSLIDER1 < SLIDER1 ) {
for (SLIDER1; SLIDER1 != nSLIDER1 ; SLIDER1--){
pwm.setPWM(1, 0, SLIDER1);
delay(10);
}
}
}
void setup()
{
Serial.begin(9600);
Wire.pins(4, 5);
pwm.begin();
pwm.setPWMFreq(60);
Blynk.begin(auth, ssid, pass, server, port);
SLIDER0 = 400;
SLIDER1 = 500;
SLIDER2 = 600;
SLIDER3 = 400;
SLIDER4 = 400;
SLIDER5 = 400;
pwm.setPWM(0, 0, SLIDER0);
pwm.setPWM(1, 0, SLIDER1);
pwm.setPWM(2, 0, SLIDER2);
pwm.setPWM(3, 0, SLIDER3);
pwm.setPWM(4, 0, SLIDER4);
pwm.setPWM(5, 0, SLIDER5);
}
void loop()
{
Blynk.run();
}
0 件のコメント:
コメントを投稿