Jump to content

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

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

3 hours ago, MILANISTA said:

სგ

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

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

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

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

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

Link to comment
Share on other sites

  • 1 month later...
On 12/20/2017 at 8:28 PM, მათე said:

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

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

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

Link to comment
Share on other sites

2 hours ago, bacho1313 said:

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

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

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

Link to comment
Share on other sites

13 hours ago, მათე said:

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

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.