მათე Posted December 15, 2017 Share Posted December 15, 2017 მოგესალმებით. ამ თემაში გაგაცნობთ ერთ ძალიან საინტერესო მოწყობილობას და განახებთ wifi RC car-ს გაკეთების გზას. ეს ჩიპია esp8266. ის გამოირჩევა იმით რომ არის ძალიან იაფი ჩიპი სრული TCP/IP stack-თა და MCU (microcontroller unit) შესაძლებლობებით. მისი მონაცემებია: Processor: L106 32-bit RISC microprocessor core based on the Tensilica Xtensa Diamond Standard 106Micro running at 80 MHz† 64 KiB of instruction RAM, 96 KiB of data RAM External QSPI flash: up to 16 MiB is supported (512 KiB to 4 MiB typically included) IEEE 802.11 b/g/n Wi-Fi Integrated TR switch, balun, LNA, power amplifier and matching network WEP or WPA/WPA2 authentication, or open networks 16 GPIO pins SPI I²C (software implementation)[5] I²S interfaces with DMA (sharing pins with GPIO) UART on dedicated pins, plus a transmit-only UART can be enabled on GPIO2 10-bit ADC (successive approximation ADC) 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 (იხილეთ ფოტო) 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 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-იან მცირე მოცულობის დრონის ელემენტებზე. კარგია იმით რომ მათი დატენვა მარტივად შეიძლება. ამის მერე ააწყვეთ მანქანა. გაიგეთ რა 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-ს სურათი და ვიდეო 1 1 Quote Link to comment Share on other sites More sharing options...
MILANISTA Posted December 20, 2017 Share Posted December 20, 2017 სგ შენ ააწყვე ეგ მანქანა ? Quote Link to comment Share on other sites More sharing options...
მათე Posted December 20, 2017 Author Share Posted December 20, 2017 3 hours ago, MILANISTA said: სგ შენ ააწყვე ეგ მანქანა ? გადავაკეთეთ უბრალოდ rc car wifi-თ რომ გვემართა, ამ გასაოცარი მოდულის დახმარებით. კამერაც რო ჩამოვა მაგასაც დავამატებთ რომ wifi-თ გადასცეს სიგნალი. ავტომატურადაც ვცადეთ იწერს ღილაკებს და მერე აგზავნის, რომ მისით იაროს მაგრამ მთლად იდიალური არ გამოდის მასე, ზოგჯერ ურევს მაინც. ძალიან დიდი შესაძლებლობების ჩიპია ეგ esp8266. wifi-ს "ჩამხშობის" ანუ მომხმარებლები რომ გაყაროს wifi-დან ეგეც შეილება. ეხლა ჩამომდის ჩემი აქ რჩევა რაც მიდევს ეგ მოდელი და უნდა ავაწყო. მარა ამ ფორუმზე როგორც ვატყობ IOT-ზე დაინტერესება 0-ა Quote Link to comment Share on other sites More sharing options...
bacho1313 Posted February 5, 2018 Share Posted February 5, 2018 On 12/20/2017 at 8:28 PM, მათე said: wifi-ს "ჩამხშობის" ანუ მომხმარებლები რომ გაყაროს wifi-დან ეგეც შეილებ esp8266 deauther -ს გულისხმობ? გაკეთებული მაქ ეგ, მაგრაი რამეა :დ ეხლა თან ახალი ვერსიაც დევს გითჰაბზე. პ.ს. მანქანა მშვენიერია, მე ნრფზე და ჯოისტიკზე მინდა, ყველაფერი გამზადებული მაქვს, ერთი დრო დამჩა და ეგაა Quote Link to comment Share on other sites More sharing options...
მათე Posted February 5, 2018 Author Share Posted February 5, 2018 2 hours ago, bacho1313 said: esp8266 deauther -ს გულისხმობ? გაკეთებული მაქ ეგ, მაგრაი რამეა :დ ეხლა თან ახალი ვერსიაც დევს გითჰაბზე. პ.ს. მანქანა მშვენიერია, მე ნრფზე და ჯოისტიკზე მინდა, ყველაფერი გამზადებული მაქვს, ერთი დრო დამჩა და ეგაა კი მაგას ვგულისხმობ. მეც ბლომად დამიგროვდა რაღაცები და დრო არ მაქ ფიზიკურად რომ ჩავუჯდე. არადა ეს esp8266 რა მაგარი რამეა რა. Quote Link to comment Share on other sites More sharing options...
bacho1313 Posted February 6, 2018 Share Posted February 6, 2018 13 hours ago, მათე said: მეც ბლომად დამიგროვდა რაღაცები და დრო არ მაქ ფიზიკურად რომ ჩავუჯდე. არადა ეს esp8266 რა მაგარი რამეა რა. ეგრეა როცა მუშაობ ადამიანი ვერ იცლი ესეთი რამეებისთვის ესპ კიბატონო მაგარია, კაკრას 3-4 დღე იქნება ესპ32 ჩამოვიდა, ჯერ არ ვიცი მთლად რა ხილია Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.