Pourquoi j'ai décidé d'écrire cet article
・ Je voulais rédiger un mémorandum ・ Je voulais utiliser Qiita
Veuillez noter que c'est le premier article publié pour moi et qu'il peut être difficile à lire pour les gens. De plus, je le fais de manière tout à fait appropriée, alors je vais essayer de le refaire bientôt.
・ Windows10 ・ Ubuntu 18.04 ・ AWS
esquisse du programme arduino et écriture sous windows10 Connectez SSH à Rasp Pie avec Ubuntu et utilisez Rasp Pie Utiliser AWS comme courtier MQTT
MQTT est omis dans cet article Il existe de nombreux autres sites qui expliquent MQTT de manière facile à comprendre, veuillez donc vous y référer.
・ Arduino ・ Raspberry Pi 3 modèle B ・ Câble USB (utilisé pour la communication série entre Aruino et Raspi) ・ Batterie mobile, câble USB (utilisé pour alimenter Raspeye) ・ [Battery Box](https://www.amazon.co.jp/uxcell-%E9%9B%BB%E6%B1%A0%E3%83%9C%E3%83%83%E3%82%AF % E3% 82% B9-% E9% 9B% BB% E6% B1% A0% E3% 83% 9B% E3% 83% AB% E3% 83% 80% E3% 83% BC-1-5V% E5% 8D% 98% E4% B8% 89% E9% 9B% BB% E6% B1% A0-% E5% 8D% 983% E9% 9B% BB% E6% B1% A0% E3% 82% B1% E3% 83 % BC% E3% 82% B9 / dp / B01HUX8YDY / ref = sr_1_6? __ mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & dchild = 1 & mots-clés =% E9% 9B % BB% E6% B1% A0% E3% 83% 9C% E3% 83% 83% E3% 82% AF% E3% 82% B9 & qid = 1603765741 & sr = 8-6) (acheté sur Amazon) ・ Motor Driver (acheté chez Switch Science) ・ [Boîte à engrenages double Tamiya Fun Work Series](https://www.amazon.co.jp/%E3%82%BF%E3%83%9F%E3%83%A4-%E6%A5%BD%E3 % 81% 97% E3% 81% 84% E5% B7% A5% E4% BD% 9C% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA-No-168 -% E3% 83% 80% E3% 83% 96% E3% 83% AB% E3% 82% AE% E3% 83% A4% E3% 83% 9C% E3% 83% 83% E3% 82% AF% E3% 82% B9-% E5% B7% A6% E5% 8F% B3% E7% 8B% AC% E7% AB% 8B4% E9% 80% 9F% E3% 82% BF% E3% 82% A4% E3 % 83% 97 / dp / B001Q13BIU / ref = sr_1_1? __Mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & dchild = 1 & keywords =% E3% 82% BF% E3 % 83% 9F% E3% 83% A4 +% E3% 83% 80% E3% 83% 96% E3% 83% AB% E3% 82% AE% E3% 83% A4% E3% 83% 9C% E3% 83 % 83% E3% 82% AF% E3% 82% B9 & qid = 1603764617 & sr = 8-1) (acheté sur Amazon) ・ [Tamiya Fun Work Series Narrow Tire Set 58mm](https://www.amazon.co.jp/%E3%82%BF%E3%83%9F%E3%83%A4-%E6%A5%BD% E3% 81% 97% E3% 81% 84% E5% B7% A5% E4% BD% 9C% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA-Non- 145-% E3% 83% 8A% E3% 83% AD% E3% 83% BC% E3% 82% BF% E3% 82% A4% E3% 83% A4% E3% 82% BB% E3% 83% 83 % E3% 83% 88-58mm% E5% BE% 84 / dp / B001VZJDZ6 / ref = pd_all_pref_10? Pd_rd_w = LumaR & pf_rd_p = 4f969a54-b46f-456c-b77f-72ed974b654e et pf_FRZS63 = B001VZJDZ6) (acheté sur Amazon)
-Coupez le carton livré par Amazon à une taille appropriée, placez le moteur et le boîtier de la batterie, et fixez le pilote du moteur sur le moteur avec du ruban adhésif double face. De plus, arduino, tarte à la râpe et batterie mobile y sont fixés avec du ruban de masquage.
・ Je le fais avec l'idée que je devrais déménager pour le moment. (Je vais le refaire proprement bientôt)
sujet |
---|
mqtt_RC |
message | mouvement |
---|---|
w | Avance |
a | Tournez à gauche |
d | Tournez à droite |
s | Arrêtez |
b | En arrière |
f | Fin |
arduino contrôle le moteur en fonction du signal envoyé depuis Raspai par communication série.
mqtt_RC_arduino.ino
const int MA1 = 10;
const int MA2 = 11;
const int MB1 = 12;
const int MB2 = 13;
int com = 0;
void setup() {
Serial.begin(9600);
pinMode(MA1,OUTPUT);
pinMode(MA2,OUTPUT);
pinMode(MB1,OUTPUT);
pinMode(MB2,OUTPUT);
}
void loop() {
while(true){
if(Serial.available() > 0){
com = Serial.read();
Serial.println(com);
}
if(com == 'w'){
motor_forward();
delay(1000);
}
else if(com =='d'){
motor_righit();
delay(1000);
}
else if(com =='a'){
motor_left();
delay(1000);
}
else if(com =='s'){
motor_stop();
delay(1000);
}
else if(com =='b'){
motor_back();
delay(1000);
}
else if(com =='f'){
break;
}
}
}
void motor_forward(){
digitalWrite(MA1,HIGH);
digitalWrite(MA2,LOW);
digitalWrite(MB1,HIGH);
digitalWrite(MB2,LOW);
Serial.println("forward");
}
void motor_back(){
digitalWrite(MA1,LOW);
digitalWrite(MA2,HIGH);
digitalWrite(MB1,LOW);
digitalWrite(MB2,HIGH);
Serial.println("back");
}
void motor_stop(){
digitalWrite(MA1,LOW);
digitalWrite(MA2,LOW);
digitalWrite(MB1,LOW);
digitalWrite(MB2,LOW);
Serial.println("stop");
}
void motor_righit(){
digitalWrite(MA1,HIGH);
digitalWrite(MA2,LOW);
digitalWrite(MB1,LOW);
digitalWrite(MB2,LOW);
Serial.println("righit");
}
void motor_left(){
digitalWrite(MA1,LOW);
digitalWrite(MA2,LOW);
digitalWrite(MB1,HIGH);
digitalWrite(MB2,LOW);
Serial.println("left");
}
Raspai reçoit le message envoyé de l'éditeur par communication mqtt et l'envoie à arduino par communication série. Découvrez et entrez le port rasp pie qui se connecte à arduino via une communication série et l'adresse du courtier mqtt.
mqtt_RC_raspi.py
import sys
from time import sleep
import paho.mqtt.client as mqtt
import serial
# ------------------------------------------------------------------
sys.stderr.write("***Commencer la communication***\n")
ser = serial.Serial('Entrez le port d'arduino pour vous connecter',9600)
host = 'Entrez l'adresse du courtier'
port = 1883
topic = 'mqtt_RC'
def on_connect(client, userdata, flags, respons_code):
print('status {0}'.format(respons_code))
client.subscribe(topic)
def on_message(client, userdata, msg):
st = str(msg.payload,'utf-8')
print(st)
if st == "w":
print("go_straight")
ser.write(b'w')
elif st == "s":
print("stop")
ser.write(b's')
elif st == "d":
ser.write(b'd')
print("turn_righit")
elif st == "a":
ser.write(b'a')
print("turn_left")
elif st == "b":
ser.write(b'b')
print("go_back")
elif st =="f":
print("fin")
client.disconnect()
if __name__ == '__main__':
client = mqtt.Client(protocol=mqtt.MQTTv311)
client.on_connect = on_connect
client.on_message = on_message
client.connect(host, port=port, keepalive=60)
client.loop_forever()
sys.stderr.write("***Fin***\n")
Puisqu'il existe une application sur votre smartphone qui vous permet de publier et de vous abonner via la communication mqtt, vous pouvez contrôler l'envoi des messages en publiant en l'utilisant. Cette fois, j'ai créé un programme pour publier sur un ordinateur personnel et exploité l'ordinateur personnel en tant que contrôleur.
J'ai pu exécuter le programme de publication sur le terminal d'un ordinateur portable et l'utiliser comme contrôleur radio. Je n'ai ressenti aucun décalage.
Recommended Posts