[PYTHON] MQTT Radicon Car mit Arduino und Himbeere

Einführung

Warum ich beschlossen habe, diesen Artikel zu schreiben

・ Ich wollte ein Memorandum schreiben ・ Ich wollte Qiita verwenden

Bitte beachten Sie, dass dies der erste Artikel ist, der für mich veröffentlicht wurde und für die Leser möglicherweise schwer zu lesen ist. Außerdem mache ich es ganz passend, also werde ich versuchen, es bald wieder zu machen.

Umgebung verwendet

・ Windows10 ・ Ubuntu 18.04 ・ AWS

arduino programm skizzieren und schreiben unter windows10 Verbinden Sie ssh mit Ubuntu mit Raspetorte und bedienen Sie Raspeltorte Verwenden Sie AWS als MQTT-Broker

Über MQTT

MQTT wird in diesem Artikel weggelassen Es gibt viele andere Websites, die MQTT auf leicht verständliche Weise erklären. Bitte beziehen Sie sich darauf.

Was wurde verwendet

・ Arduino ・ Himbeer Pi 3 Modell B. ・ USB-Kabel (für die serielle Kommunikation zwischen Aruino und Raspi) ・ Mobiler Akku, USB-Kabel (zur Stromversorgung von Raspeye) ・ [Batteriekasten](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 & keywords =% E9% 9B % BB% E6% B1% A0% E3% 83% 9C% E3% 83% 83% E3% 82% AF% E3% 82% B9 & qid = 1603765741 & sr = 8-6) (bei Amazon gekauft) ・ Motortreiber (bei Switch Science gekauft) ・ [Doppelgetriebe der 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-Nr. 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) (bei Amazon gekauft) ・ [Schmaler Reifensatz der Tamiya Fun Work Series 58 mm](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- 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-58 mm% E5% BE% 84 / dp / B001VZJDZ6 / ref = pd_all_pref_10 Pd_rd_w = LumaR & pf_rd_p = 4f969a54-b46f-456c-b77f-72ed974b654e & pf_rd_r = B001VZJDZ6) (bei Amazon gekauft)

Hardware-Vorbereitung

・ Ich mache es mit der Idee, dass ich vorerst umziehen sollte. (Ich werde es bald sauber neu machen)

Softwarevorbereitung

MQTT-Parameter

Thema
mqtt_RC
Botschaft Bewegung
w Voraus
a Biegen Sie links ab
d Biegen Sie rechts ab
s Halt
b Rückwärts
f Ende

Arduino-Programm

Arduino steuert den Motor gemäß dem von Raspai per serieller Kommunikation gesendeten Signal.

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");
}

Rasppie-Programm

Raspai empfängt die vom Herausgeber per mqtt-Kommunikation gesendete Nachricht und sendet sie per serieller Kommunikation an arduino. Finden Sie den Rasp-Pie-Port heraus und geben Sie ihn ein, der über serielle Kommunikation mit Arduino verbunden ist, sowie die Adresse des mqtt-Brokers.

mqtt_RC_raspi.py


import  sys
from time import sleep
import paho.mqtt.client as mqtt
import serial
# ------------------------------------------------------------------
sys.stderr.write("***Starten Sie die Kommunikation***\n")


ser = serial.Serial('Geben Sie den Port von Arduino ein, um eine Verbindung herzustellen',9600)

host = 'Geben Sie die Adresse des Brokers ein'
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("***Ende***\n")

Über den MQTT-Publisher

Da es auf Ihrem Smartphone eine Anwendung gibt, mit der Sie über mqtt-Kommunikation veröffentlichen und abonnieren können, können Sie das Senden von Nachrichten steuern, indem Sie sie veröffentlichen. Dieses Mal habe ich ein Programm zum Veröffentlichen auf einem PC erstellt und den PC als Controller betrieben.

Ergebnis

Ich konnte das Veröffentlichungsprogramm auf einem Laptop-Terminal ausführen und es tatsächlich als Funkcontroller ausführen. Ich habe keine Verzögerung gespürt.

Recommended Posts

MQTT Radicon Car mit Arduino und Himbeere
MQTT auf Raspberry Pi und Mac
Haustierüberwachung mit Rekognition und Raspberry pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Ich habe die Beleuchtungsstärke des Raumes mit Raspberry Pi, Arduino und einem optischen Sensor getwittert
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Mit Akizuki Denshis 4WD Auto FT-MC-004 mit Raspberry Pi
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Mutter pflanzt mit Raspberry Pi
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Python-Anfänger öffnet und schließt die ineinandergreifende Kamera mit Raspberry Pi
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Messen und vergleichen Sie Temperaturen mit Raspberry Pi und generieren Sie automatisch Diagramme
Machen Sie ein Auto mit automatischem Fahrroboter mit Raspberry Pi3 B + und Ultraschall-Abstandssensor HC-SR04
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Roboter läuft mit Arduino und Python
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
Serielle Kommunikation mit Raspberry Pi + PySerial
Betriebssystem-Setup mit Raspberry Pi Imager
Probieren Sie L Chika mit Himbeerpi
Aufbau eines VPN-Servers mit Raspberry Pie
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Ein- / Ausschalten von Raspberry Pi mit Arduino
Verwenden einer Webkamera mit Raspberry Pi
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
Messen Sie die SIM-Signalstärke mit Raspberry Pi
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Versuchen Sie, mit Raspberry Pi nach Wakasagi zu fischen
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
Verbesserter menschlicher Sensor mit Raspberry Pi
Versuchen Sie die Objekterkennung mit Raspberry Pi 4 + Coral
Rabbit MQ Nachrichtenbenachrichtigungs-App mit Growl in Python ~ mit Raspeye und Julius ~
Den Servomotor SG-90 mit Himbeer-Pi betreiben
Arbeiten mit Sensoren in Mathematica auf Raspberry Pi
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Infer Custom Vision Modell mit Raspeye
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts
Arbeiten mit GPS in Python für Raspberry Pi 3
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Cross-Compilieren von Raspberry Pi und Erstellen einer Remote-Debug-Entwicklungsumgebung mit VS Code
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung