Sign in to follow this  
მათე

Esp8266 wifi chip (RC car project)

Recommended Posts

მოგესალმებით. ამ თემაში გაგაცნობთ ერთ ძალიან საინტერესო მოწყობილობას და განახებთ wifi RC car-ს გაკეთების გზას.

ეს ჩიპია esp8266.

ff52adb7e210.jpg

ის გამოირჩევა იმით რომ არის ძალიან იაფი ჩიპი სრული TCP/IP stack-თა და MCU (microcontroller unit) შესაძლებლობებით.

მისი მონაცემებია:

CPU-ზეც და flash მეხსიერებაზეც შესაძლებელია ორმაგი OC ანუ 80/40-დან 160/80-მდე აყვანა. წარმატება რათქმაუნდა დამოკიდებულია კონკრეტულ ჩიპზე. ზოგმა შეილება მეტსაც მიაღწიოს. youtube-ზე არის ვიდეოები სადაც 349 MHZ-მდეც კი აწიეს სიხშირე მაგრამ ეს საკმაოდ საშიშია და ჯობია 160 MHZ-ს არ ააცილოთ სტაბილურობისთვის.

ახლა კი აგიხსნით თუ როგორ უნდა გააეთოთ WiFi RC car

მოკლედ თქვენ დაგჭირდებათ:

1 RC car
2 Esp8266 chip გირჩევთ ამას NodeMCU v2
3 MX1508 motor driver (იხილეთ ფოტო)

42bb2065b273.jpg
4 მცირედი "პაიკის" ცოდნა

თავიდან ჯობია თქვენს esp8266-ზე ჩაწეროთ micropython. ინსტრუქციებს და firmware-ს ნახავთ აქ https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html

ამის მერე ყველაფერი გაგიმარტივდებათ რადგან ამ მოწყობილობაზეც გექნებათ python :) python-თ კი ცხოვრება მარტივია ;)

micropython-ს ჩაწერის მერე შეგიძლიათ უკვე boot.py სკრიპტი დააკონფიგოთ რომ ავტომატურად დაუკავშირდეს თქვენს wifi-ს. ამისთვის უბრალოდ ჩაწერეთ ამ ფუნქციაში საჭირო ადგილას თქვენი wifi-ს SSID და password, შემდეგ ჩაწერეთ ეს სკრიპტი თქვენს esp8266-ზე boot.py ფაილში და დაარესტარტეთ მოწყობილობა.

ესეც ფუნქცია

Spoiler

def do_connect():
    import network
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect('<essid>', '<password>')
        while not sta_if.isconnected():
            pass
    print('network config:', sta_if.ifconfig())

ამის მერე მოწყობილობაზე გადაიტანეთ ეს სკრიპტი, აუცილებლად ჩაასწორეთ f (forward),b (backward),r (right),l (left) ცვლადებში იმ pin-ების ნომრები რომლებითაც თქვენ გინდათ მართოთ rc car და აუცილებლად დაარქვით main.py  ! სადენები ჩიპს მიაერთეთ GPIO პინებზე. პინების ნომრების გასაგებად დაგუგლეთ pinout esp8266. თუ იმ მოულს იყიდით რაც მიწერია NodeMCU v2 აგერაა მისი pinout

9823b69fe385.jpg

Spoiler

from machine import Pin
import socket

UDP_IP = "0.0.0.0"
UDP_PORT = 5006

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))

f = Pin(0, Pin.OUT)
b = Pin(4, Pin.OUT)
r = Pin(5, Pin.OUT)
l = Pin(3, Pin.OUT)

f.off()
b.off()
r.off()
l.off()

def forward():
    b.off()
    f.on()
    
def backword():
    f.off()
    b.on()

def right():
    l.off()
    r.on()

def left():
    r.off()
    l.on()

def stop_move():
    f.off()
    b.off()

def stop_steering():
    r.off()
    l.off()

while True:
    data, addr = sock.recvfrom(1024)
    key = data.decode()
    if key == "'w'":
        forward()
    if key == "'s'":
        backword()
    if key == "'d'":
        right()
    if key == "'a'":
        left()
    if key == "!'w'":
        stop_move()
    if key == "!'s'":
        stop_move()
    if key == "!'d'":
        stop_steering()
    if key == "!'a'":
        stop_steering()

 

ესეც ასე.

ეხლა აიღეთ თქვენი mx1508 მოდული და ზუსტად ისე როგორც სურათზეა მოცემული "დააპაიკეთ" მატორები და მათი კონტროლირებადი სადენები.

IN1 და IN2 წინ და უკან ანუ f და b pin-ების სადენები და ასევე IN3 და IN4 r და l pin-ების სადენები. input voltage კი როგორც მონიშნულია 2-10 V ასე რომ თავისუფლად იმუშავებს 3.7 V-იან მცირე მოცულობის დრონის ელემენტებზე. კარგია იმით რომ მათი დატენვა მარტივად შეიძლება.

42bb2065b273.jpg

ამის მერე ააწყვეთ მანქანა. გაიგეთ რა IP აიღო თქვენმა esp8266 ჩიპმა. მერე კომპიუტერში ჩაწერეთ ეს სკრიპტი. აქ 127.0.0.1-ს ნაცვლად ჩაწერეთ esp8266-ს ip მისამართი.

Spoiler

from pynput.keyboard import Key, Listener
import socket

UDP_IP = "127.0.0.1"
UDP_PORT = 5006

def on_press(key):
    key=str(key)
    if key == "'w'":
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(str(key).encode(), (UDP_IP, UDP_PORT))
    if key == "'s'":
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(key.encode(), (UDP_IP, UDP_PORT))
    if key == "'d'":
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(key.encode(), (UDP_IP, UDP_PORT))
    if key == "'a'":
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(key.encode(), (UDP_IP, UDP_PORT))

def on_release(key):
    key = '!' + str(key)
    if key == "!'w'":
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(key.encode(), (UDP_IP, UDP_PORT))
    if key == "!'s'":
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(key.encode(), (UDP_IP, UDP_PORT))
    if key == "!'d'":
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(key.encode(), (UDP_IP, UDP_PORT))
    if key == "!'a'":
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(key.encode(), (UDP_IP, UDP_PORT))

with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

სულ ესაა თქვენ მიიღებთ RC car-ს რომელიც იმართება კომპიუტერიდან WiFi-ს დახმარებით W, A, S, D ღილაკებით.

ესეც ჩვენი აწყობილი RC car-ს სურათი და ვიდეო

e9a46386187e.jpg

 

  • Thanks 1

Share this post


Link to post
Share on other sites

სგ

შენ ააწყვე ეგ მანქანა ?

Share this post


Link to post
Share on other sites
3 hours ago, MILANISTA said:

სგ

შენ ააწყვე ეგ მანქანა ?

გადავაკეთეთ უბრალოდ rc car wifi-თ რომ გვემართა, ამ გასაოცარი მოდულის დახმარებით. კამერაც რო ჩამოვა მაგასაც დავამატებთ რომ wifi-თ გადასცეს სიგნალი.

ავტომატურადაც ვცადეთ იწერს ღილაკებს და მერე აგზავნის, რომ მისით იაროს მაგრამ მთლად იდიალური არ გამოდის მასე, ზოგჯერ ურევს მაინც.

ძალიან დიდი შესაძლებლობების ჩიპია ეგ esp8266. wifi-ს "ჩამხშობის" ანუ მომხმარებლები რომ გაყაროს wifi-დან ეგეც შეილება. ეხლა ჩამომდის ჩემი აქ რჩევა რაც მიდევს ეგ მოდელი და უნდა ავაწყო.

მარა ამ ფორუმზე როგორც ვატყობ IOT-ზე დაინტერესება 0-ა :(

Share this post


Link to post
Share on other sites
On 12/20/2017 at 8:28 PM, მათე said:

wifi-ს "ჩამხშობის" ანუ მომხმარებლები რომ გაყაროს wifi-დან ეგეც შეილებ

esp8266 deauther -ს გულისხმობ? გაკეთებული მაქ ეგ, მაგრაი რამეა :დ  ეხლა თან ახალი ვერსიაც დევს გითჰაბზე. 

პ.ს. მანქანა მშვენიერია, მე ნრფზე და ჯოისტიკზე მინდა, ყველაფერი გამზადებული მაქვს, ერთი დრო დამჩა და ეგაა :)

Share this post


Link to post
Share on other sites
2 hours ago, bacho1313 said:

esp8266 deauther -ს გულისხმობ? გაკეთებული მაქ ეგ, მაგრაი რამეა :დ  ეხლა თან ახალი ვერსიაც დევს გითჰაბზე. 

პ.ს. მანქანა მშვენიერია, მე ნრფზე და ჯოისტიკზე მინდა, ყველაფერი გამზადებული მაქვს, ერთი დრო დამჩა და ეგაა :)

კი მაგას ვგულისხმობ. მეც ბლომად დამიგროვდა რაღაცები და დრო არ მაქ ფიზიკურად რომ ჩავუჯდე. არადა ეს esp8266 რა მაგარი რამეა რა.

Share this post


Link to post
Share on other sites
13 hours ago, მათე said:

მეც ბლომად დამიგროვდა რაღაცები და დრო არ მაქ ფიზიკურად რომ ჩავუჯდე. არადა ეს esp8266 რა მაგარი რამეა რა.

ეგრეა როცა მუშაობ ადამიანი ვერ იცლი ესეთი რამეებისთვის :) ესპ კიბატონო მაგარია, კაკრას 3-4 დღე იქნება ესპ32 ჩამოვიდა, ჯერ არ ვიცი მთლად რა ხილია :) 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this